|
发表于 2008-3-24 09:49:07
|
显示全部楼层
引用:
作者: SCys
你能够想像到两种字体配置都支持的混乱吗:)
---
我一开始也是打算这样,可是发现:
在显示一个字的时候,不知道使用哪一种字体配置为准。
不论xft,还是x font core都能够自我配置。
---
如果兄弟确实想要,我今天回去尝试下,不过要修改的地方比较多点。可能会超过2000行大关了:)
兄弟,我今天写了一下,发现无法按两种都有的情况下配置字体。
已那种为中心呢?
我都提供了方法来开关xft了。
兄弟,大概是我没有说清楚,其实我的想法就是字体可以这样配置: "snap:size=8,simsun:size=8",这样我可以用snap来显示英文,用simsun来显示中文。
我说的这个特性是gtk+/pango可以提供的,但是对于xft来说,它只能使用XftDrawStringUtf8来对非英文字符进行渲染。
其实utf8字符针对每个不同地区的字符集都是有编码区间的,可以将需要显示的字符分成英文和非英文两种,然后分别用不同的字体进行渲染。
但是这个功能的实现估计是要仿照XftDrawStringUtf8的代码进行重写了,这个工作可不轻松,估计代码量会大增。
在原来的dwm代码中,它是使用XmbDrawString来实现多字体的显示,它的渲染方式也是差不多的,把需要显示的字符分成不同的字符集,比如ISO8859-1,GB2312.1980-1,然后根据字符的类型,选用不同的字符集进行渲染。
我的想法是:在xft中,能够用第一个字体渲染的字符就用第一个进行显示,在第一个字体中没有的字符,用第二个字体进行渲染。
所以主要的问题是怎么判断能否用某个字体来渲染某个字符。
在这里有一个思路,就是utf8字符针对每个不同地区的字符集都是有编码区间,所以可以根据字符的特征位来判断应该用什么字体进行渲染。
这个问题可以研究一下,但是加到dwm中确实不合适,代码量比较大,渲染速度也会下降的。 |
|