• 8766阅读
  • 10回复

[提问]怎样使用Qt筛选区分中英文的字体 [复制链接]

上一主题 下一主题
 
只看楼主 倒序阅读 楼主  发表于: 2011-02-15
用过word的人都知道他又一项设置可以分别设置中西文对应的字体
现在我也要实现相似的功能,但是我怎么根据字体的名字区分它是一种西文字体还是中文字体呢。
比如字体是“隶书”我要判定他为中文字体,如果为“Calibri”,我要判定他为西文字体。
请问用QT如何实现呢???
只看该作者 1楼 发表于: 2011-02-15
没人?
只看该作者 2楼 发表于: 2011-02-15
anyone???
离线cycloneii

只看该作者 3楼 发表于: 2011-02-15
自己测试一下这些字体不就行了?
比如如果支持gb2312/big5之类的编码标准的肯定是中文字体
如果之支持unicode编码的字体,查找任何一个汉字对应的字型,如果找的到,就是中文字体,找不到就是英文字体
离线cycloneii

只看该作者 4楼 发表于: 2011-02-16
可以用这个:
QStringList QFontDatabase::families ( WritingSystem writingSystem = Any ) const
WritingSystem的值设置成QFontDatabase::SimplifiedChinese,返回的就是支持简体汉字的字体;
WritingSystem的值设置成QFontDatabase::Latin,返回的就是支持英文的字体
只看该作者 5楼 发表于: 2011-02-16
回 4楼(cycloneii) 的帖子
谢谢,找到了!!!
离线qdxianxing
只看该作者 6楼 发表于: 2012-05-01
Re:回 4楼(cycloneii) 的帖子
引用第5楼小痞子哥儿于2011-02-16 11:56发表的 回 4楼(cycloneii) 的帖子 :
谢谢,找到了!!!

请问楼主是如何实现的?
离线qdxianxing
只看该作者 7楼 发表于: 2012-05-01
找到一个好的解决方法:

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

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

只看该作者 8楼 发表于: 2012-05-01
回 7楼(qdxianxing) 的帖子
原来QFont还有这用法啊,受教了!
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线qdxianxing
只看该作者 9楼 发表于: 2012-05-02
Re:回 7楼(qdxianxing) 的帖子
引用第8楼roywillow于2012-05-01 17:49发表的 回 7楼(qdxianxing) 的帖子 :
原来QFont还有这用法啊,受教了!

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

只看该作者 10楼 发表于: 2020-04-05
        
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
快速回复
限100 字节
 
上一个 下一个