查看完整版本: [-- 怎样使用Qt筛选区分中英文的字体 --]

QTCN开发网 -> Qt基础编程 -> 怎样使用Qt筛选区分中英文的字体 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

小痞子哥儿 2011-02-15 16:12

怎样使用Qt筛选区分中英文的字体

用过word的人都知道他又一项设置可以分别设置中西文对应的字体。
现在我也要实现相似的功能,但是我怎么根据字体的名字区分它是一种西文字体还是中文字体呢。
比如字体是“隶书”我要判定他为中文字体,如果为“Calibri”,我要判定他为西文字体。
请问用QT如何实现呢???

小痞子哥儿 2011-02-15 16:19
没人?

小痞子哥儿 2011-02-15 16:40
anyone???

cycloneii 2011-02-15 18:24
自己测试一下这些字体不就行了?
比如如果支持gb2312/big5之类的编码标准的肯定是中文字体
如果之支持unicode编码的字体,查找任何一个汉字对应的字型,如果找的到,就是中文字体,找不到就是英文字体

cycloneii 2011-02-16 00:11
可以用这个:
QStringList QFontDatabase::families ( WritingSystem writingSystem = Any ) const
WritingSystem的值设置成QFontDatabase::SimplifiedChinese,返回的就是支持简体汉字的字体;
WritingSystem的值设置成QFontDatabase::Latin,返回的就是支持英文的字体

小痞子哥儿 2011-02-16 11:56
谢谢,找到了!!!

qdxianxing 2012-05-01 12:33
引用第5楼小痞子哥儿于2011-02-16 11:56发表的 回 4楼(cycloneii) 的帖子 :
谢谢,找到了!!!

请问楼主是如何实现的?

qdxianxing 2012-05-01 14:41
找到一个好的解决方法:

    QFont ff("Times New Roman,SimSun,SimSun-ExtB");
    app.setFont(ff);

这样的话,对于每个字符:
程序优先到Times New Roman字体库查找并显示,,如果字符不在Times New Roman的字体库范围内,那么,到SimSun字体库查找,如果不在SimSun的字体库范围内,那么,到SimSun-ExtB字体库查找。

roywillow 2012-05-01 17:49
原来QFont还有这用法啊,受教了!

qdxianxing 2012-05-02 08:27
引用第8楼roywillow于2012-05-01 17:49发表的 回 7楼(qdxianxing) 的帖子 :
原来QFont还有这用法啊,受教了!

是的。我也是找了很久,才找到的。真是十分不起眼的用法。

toby520 2020-04-05 23:23
        


查看完整版本: [-- 怎样使用Qt筛选区分中英文的字体 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled