免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3546 | 回复: 1
打印 上一主题 下一主题

使用XftDrawStringUtf8混合显示中英文的问题[已结贴] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-15 23:37 |只看该作者 |倒序浏览
我在对中英文混合字符串中的字符, 一个个显示时, 碰到如下问题:

1. 如果全部是中文, 则使用匹配到的中文字体来显示, xftdraw时的unicode codepoint正确, 显示正常。
2. 如果全部是英文, 也正常。
3. 如果中文后面跟英文, 比如 "退出 Exit", 此时,中文会显示成乱码,奇怪的就是, 匹配到的字体跟取出的codepoint全是对的!而且, 只显示“退出 "也正常, 多个英文字符后, 原本正常显示的"退出 "就变成乱码了。
4. 如果英文后面跟中文, 问题跟第3点一样, 相反的是, 这时英文显示正常, 但中文变成乱码了。

以上, 英文是匹配到dejavu sans来取glyphs来显示的, 中文是匹配到microsoft yahei取glyphs显示。

在字体加载正确, codepoint也正确, 编码也正确的情况下, 为什么混合显示会出现这么奇怪的问题呢?

注, 我是修改了XftDrawStringUtf8函数, 把原本的XftCharIndex, 改为, 先match一款适合的字体, 再做XftCharIndex, 其它的逻辑全部没改。


请高人指点。谢谢。

[ 本帖最后由 kemean 于 2009-2-15 23:42 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-02-15 23:41 |只看该作者
晕, 刚发完贴子, 就想通了:(

glyphs是字符在字体中的索引, 如果想实现混合字体显示混合语言的文字, 必须用不同字体来做xftcharindex, 不但如此, 还必须先把这个 glyphs画出来, 我居然忽略了这一点, 以为单单靠改下xftcharindex就可以OK了, 实际上, glyphs作为字体中字符的索引, 必须跟操作的font一起draw, 否则, 就会出现我上述的乱码问题:(

结贴:(
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP