LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: SCys

DWM窗口管理器[Xft特性][热键简介]

[复制链接]
发表于 2008-3-22 16:37:32 | 显示全部楼层
今天试了以前正常的arch livecd 0.72,内核是22的,也是不能上,100次中只有一次成功(夸张了点),看来不是设置问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-22 17:29:31 | 显示全部楼层
Post by takethat;1829240
你的补丁做得不错,不过如果能够同时设置两种字体分别显示英文和中文就更好了。看了一下代码,原来的是用font.set来做到这个的。你的补丁ms只支持设置一种字体(我对xft库不熟悉)。希望你能够继续研究下去。
...


你能够想像到两种字体配置都支持的混乱吗:)
---
我一开始也是打算这样,可是发现:
  在显示一个字的时候,不知道使用哪一种字体配置为准。
不论xft,还是x font core都能够自我配置。
---
如果兄弟确实想要,我今天回去尝试下,不过要修改的地方比较多点。可能会超过2000行大关了:)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-23 18:54:31 | 显示全部楼层
Post by SCys;1829606
你能够想像到两种字体配置都支持的混乱吗:)
---
我一开始也是打算这样,可是发现:
  在显示一个字的时候,不知道使用哪一种字体配置为准。
不论xft,还是x font core都能够自我配置。
---
如果兄弟确实想要,我今天回去尝试下,不过要修改的地方比较多点。可能会超过2000行大关了:)


兄弟,我今天写了一下,发现无法按两种都有的情况下配置字体。
已那种为中心呢?
我都提供了方法来开关xft了。
回复 支持 反对

使用道具 举报

发表于 2008-3-23 19:09:21 | 显示全部楼层
SCys果然是有求必应的老实人,给位别给他太大压力哦。
回复 支持 反对

使用道具 举报

发表于 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中确实不合适,代码量比较大,渲染速度也会下降的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-24 12:14:02 | 显示全部楼层
Post by takethat;1830170
兄弟,大概是我没有说清楚,其实我的想法就是字体可以这样配置: "snap:size=8,simsun:size=8",这样我可以用snap来显示英文,用simsun来显示中文。

我说的这个特性是gtk+/pango可以提供的,但是对于xft来说,它只能使用XftDrawStringUtf8来对非英文字符进行渲染。
其实utf8字符针对每个不同地区的字符集都是有编码区间的,可以将需要显示的字符分成英文和非英文两种,然后分别用不同的字体进行渲染。

但是这个功能的实现估计是要仿照XftDrawStringUtf8的代码进行重写了,这个工作可不轻松,估计代码量会大增。

在原来的dwm代码中,它是使用XmbDrawString来实现多字体的显示,它的渲染方式也是差不多的,把需要显示的字符分成不同的字符集,比如ISO8859-1,GB2312.1980-1,然后根据字符的类型,选用不同的字符集进行渲染。
我的想法是:在xft中,能够用第一个字体渲染的字符就用第一个进行显示,在第一个字体中没有的字符,用第二个字体进行渲染。
所以主要的问题是怎么判断能否用某个字体来渲染某个字符。

在这里有一个思路,就是utf8字符针对每个不同地区的字符集都是有编码区间,所以可以根据字符的特征位来判断应该用什么字体进行渲染。


这个问题可以研究一下,但是加到dwm中确实不合适,代码量比较大,渲染速度也会下降的。

這個昨天已經能夠實現,takethat兄弟,你僅僅是要求這個功能?
這個功能不難,而且如果只是需要分開顯示,也不是難事。
---
基本上我不需要修改xft等等一些東西,用來XftDrawStringUtf8寫字,我不過是圖方便罷了:P沒有考慮性能,畢竟那麽幾個字,能耗多少性能?
---
需要的話,明後天應該可以出來,昨天放假才有時間亂來
回复 支持 反对

使用道具 举报

发表于 2008-3-24 13:52:37 | 显示全部楼层
还是xft更方便,只要能支持两种字体就好,不用太复杂。
可以把XFT开关加入到config.h中,大家想用xft或者X font Core可以自己选择。
SCys真是一个热心的人,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-24 18:24:02 | 显示全部楼层
加入开关,这个一早就有了。可是,现在并不能直接在config.h里面,
include的时候,顺序不同
回复 支持 反对

使用道具 举报

发表于 2008-3-25 15:20:45 | 显示全部楼层
要是Fvwm呢有这样一个能分别对中英文设置字体的patch就好了。不知SCys兄是否对Fvwm感兴趣? :-P
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-25 20:46:08 | 显示全部楼层
fvwm源代码巨大~_~
---
Changes in alpha release 2.5.1 (26-Apr-2002) [top]

Added anti-aliased text rendering support using Xft (use --enable-xft to enable it). Recent versions of XFree and freetype2 are needed (see the FONT NAMES AND FONT LOADING section of the fvwm manual page).
---
如果仅仅是需要分开配置。我看看有没有能力解决~:)
---
extra里面还是2.4.20-2的版本。。。
楼上尝试下fvwm的cvs~一直都有更新
---
Changes in beta release 2.5.26 (not released yet) [top]
Bug fixes:
Fix crash in ARGB visual detection code
Fix compilation without XRender support
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表