Qt on Android 字体挑选



  • Qt on Android 字体挑选

    在开发安卓应用的时候,发现,字体是个很大的问题,毕竟安卓上没有微软雅黑,不能直接设置微软雅黑。

    方法如下:

    1. 使用 qrc 资源文件加载 ttf,但是毕竟微软雅黑的块头在那,这么嗨大。在编译 qrc 的时候,cpu 占用极高。

    2. 挑选安卓系统上现有的字体

      在我的魅蓝 note 2 上,使用 Qt.fontFamilies() 可以打印安卓系统上的字体库。

      AndroidClock
      AndroidClock-Large
      Carrois Gothic SC
      Clockopia
      Coming Soon
      Cutive Mono
      Dancing Script
      Droid Sans Mono
      Lohit Odia
      MotoyaLMaru
      Noto Color Emoji
      Noto Naskh Arabic
      Noto Naskh Arabic UI
      Noto Sans
      Noto Sans Armenian
      Noto Sans Balinese
      Noto Sans Batak
      Noto Sans Bengali
      Noto Sans Bengali UI
      Noto Sans Buginese
      Noto Sans Buhid
      Noto Sans Canadian Aboriginal
      Noto Sans Cham
      Noto Sans Cherokee
      Noto Sans Coptic
      Noto Sans Devanagari
      Noto Sans Devanagari UI
      Noto Sans Ethiopic
      Noto Sans Georgian
      Noto Sans Glagolitic
      Noto Sans Gujarati
      Noto Sans Gujarati UI
      Noto Sans Gurmukhi
      Noto Sans Gurmukhi UI
      Noto Sans Hanunoo
      Noto Sans Hebrew
      Noto Sans Javanese
      Noto Sans JP
      Noto Sans Kannada
      Noto Sans Kannada UI
      Noto Sans Kayah Li
      Noto Sans KR
      Noto Sans Lao
      Noto Sans Lao UI
      Noto Sans Lepcha
      Noto Sans Limbu
      Noto Sans Malayalam
      Noto Sans Malayalam UI
      Noto Sans Meetei Mayek
      Noto Sans Myanmar
      Noto Sans Myanmar UI
      Noto Sans Ol Chiki
      Noto Sans Rejang
      Noto Sans Saurashtra
      Noto Sans SC
      Noto Sans Sinhala
      Noto Sans Sundanese
      Noto Sans Syloti Nagri
      Noto Sans Symbols
      Noto Sans Tagbanwa
      Noto Sans Tai Le
      Noto Sans Tai Tham
      Noto Sans Tai Viet
      Noto Sans Tamil
      Noto Sans Tamil UI
      Noto Sans TC
      Noto Sans Telugu
      Noto Sans Telugu UI
      Noto Sans Thaana
      Noto Sans Thai
      Noto Sans Thai UI
      Noto Sans Tifinagh
      Noto Sans Yi
      Noto Serif
      Roboto
      Roboto Condensed
      Source Han Sans CN
      Source Han Sans JP
      Source Han Sans KR
      

    但是看起来貌似都不靠谱呢。现在是使用 NotoSansHans-DemiLight 这个字体(7.95MB 呢)。

    求推荐。



  • Android最好字体不设置。在Windows phone系统上,字体也要换成等线字体。



  • @jiangcaiyang

    什么是等线字体?



  • @qyvlik Windows Phone 8特有的字体。是默认字体。



  • @qyvlik 说:

    字体是个很大的问题,毕竟安卓上没有微软雅黑

    刚才无意中看到墨迹天气的安卓包里assets目录下有个font文件夹你可以参考一下

    0_1449800814870_upload-c975aaef-24f7-41d0-8d45-4970035cf61a



  • @Zero 嗯,可以将字体放在assets文件夹中。这样的好处是不必在程序启动前就将该字体载入其中。


Log in to reply
 

走马观花

最近的回复

  • 113.jpg
    1、什么是lambda表达式,什么是闭包?
    lambda表达式即lambda函数,也就是匿名函数。

    lambda表达式在C++中包含了
    []表示捕获
    ()是函数的参数,需要指定类型
    ->type是返回的类型,可以省略,如果编译器无法推出类型的话可以强制编写
    {}是函数体。

    lambda可以被声明为mutable的,作用是将捕获的内容进行改变。
    闭包是函数的定义以及定义函数时提供的环境,总称为闭包。lambda函数也是一种闭包。
    lambda本身是匿名函数,而捕获语句则是提供了定义函数时提供的环境。

    2、什么是右值引用?
    右值引用相对与左值引用而言的。左值即=运算符左边的变量,右值是=运算符右边的常量或变量。由此可以看出,
    右值引用指的是对常量或变量的引用。它的用途包含了移动语义和完美转发。
    移动语义就是弥补了C++历史在处理变量传递时丢失的一种语义。它和值传递、引用传递一样,是变量传递的方式之一。
    如果没有移动语义,为了将一个类的实例传递给另外一个实例,就需要额外地进行构造、赋值、销毁的操作。
    对于一些比较复杂的变量,的确是非常耗时并且消耗大的操作。(浪费指令时间、浪费内存)

    对于这样的函数返回:
    vector<string> str_split(const string& s) {
    vector<string> v;
    // ...
    return v; // v是左值,但优先移动,不支持移动时仍可复制。
    }

    标准要求先调用移动构造函数,如果不符合那么再调用拷贝构造函数。所以可以轻松地写出这种写法而不必担心效率问题。
    同时,现代编译器都会对返回值进行优化,成为RVO以及NRVO。所以不用太担心会多调用构造析构函数。

    对于完美转发,C++对于引用的转发有规则。传统的C++是无法对引用进行再引用的。但是现代的C++放宽了它的使用范围。
    只有右引用右值的时候,才会产生右引用。这也称为引用折叠。

    3、auto关键字的作用是什么?
    auto关键字为的是能够让编译器自动推导类型。自C++98之后,编译器对类型的推导变得越来越智能了。
    而我们在编写复杂代码的时候,冗长的类型不仅容易出错,有时也不容易人工推导出类型。
    因此auto可以简化我们的任务量,让类型的推导交给编译器完成。
    除了auto外,我们还可以使用decltype()来让编译器推导类型。

    read more
  • 我感觉比起《Physically Based Rendering Technique》,还是《Ray Tracing in a Weekend》更容易上手,因为慢慢地能够做出一个渲染效果,这个是有成就感的。🎓

    read more
  • G

    北京名律免费法律咨询,解决您的法律困扰,如果您眼下没有遇到法律上的问题,也可以留一位大律师的联系方式以备不时之需!ccfd91efc3a6b2ed0e79054d2248eed.jpg bf6015b383483f1fe83cdcfd130fc6b.jpg 2f347879129add1096bf3424edbe517.jpg

    read more

关注我们

微博
QQ群