LinuxSir.Org  
| 网站首页 | 注册账号 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
 
主题工具
旧 07-06-02, 20:08 第 1 帖
herberteuler
 
herberteuler 的头像
 
 
注册会员  
  注册日期: Jul 2004
  我的住址: 你的居住地
  帖子: 1,620
  精华: 3
 

标题: FontConfig 配置实例一则


故事是这样的: 最近我在家里的电脑上安装了一个 Debian + KDE。我不想在那里面输入中文,但希望能够阅读中文。这样,我只安装了中文字体,生成了中文的环境,但没有安装中文输入法。不知道是否是我配置的问题,只有当系统的 LANG 环境变量为 zh_CN 时,KDE 环境才能正常地显示中文;否则,如窗口的标题栏上的中文是乱码。于是,我在 ~/.Xsession 里加上了 export LANG=zh_CN。

但是我马上发现,进入 X 后 sans serif 字体也使用中文字体显示了。对我来说,中文字体里的英文字符是很难看的,我无法接受,所以需要修改它,使它也用中文字体显示。通过使用下面的命令:
代码:
FC_DEBUG=4 fc-match 'sans serif'
我发现在 zh_CN 环境下 FontConfig 总是使用中文字体来代表 sans serif。解决方案自然也就有了,编辑 ~/.fonts.conf,加入下面的内容:
代码:
<?xml version="1.0"?> <fontconfig> <match target="pattern"> <test qual="any" name="family"> <string>sans-serif</string> </test> <edit name="familylang" mode="assign"> <string>en</string> </edit> <edit name="lang" mode="assign"> <string>en</string> </edit> </match> </fontconfig>
意思是说,如果字体的 family 是 sans-serif,就将它的 familylang 和 lang 都设置为英文。这样,由于中文字体的 lang 属性为中文,与属性为英文的英文字体相比距离就远了些,从而英文字体就排在了中文字体的前面。

这正是我要解决的问题。







__________________
你所知道的有关计算的东西,其他人也都能学到。绝不要认为似乎成功计
算的钥匙就掌握在你的手里。你所掌握的,也是我认为并希望的,也就是
智慧:...

What you know about computing other people will learn. Don't
feel as if the key to successful computing is only in your
hands. What's in your hands, I think and hope, is intelligence:
...

- Alan J. Perlis
  herberteuler 当前离线   回复时引用此帖
旧 07-06-02, 21:17 第 2 帖
x11 帅哥
 
x11 的头像
 
 
注册会员  
  注册日期: Nov 2002
  我的住址: 上海
  帖子: 2,791
  精华: 2
 

我看你的要求只要设置LC_CTYPE=zh_CN.UTF-8就可以了吧,需要这么麻烦么







__________________
-..- .---- .----
  x11 当前离线   回复时引用此帖
旧 07-06-02, 21:30 第 3 帖
herberteuler
 
herberteuler 的头像
 
 
注册会员  
  注册日期: Jul 2004
  我的住址: 你的居住地
  帖子: 1,620
  精华: 3
 

引用:
作者: x11
我看你的要求只要设置LC_CTYPE=zh_CN.UTF-8就可以了吧,需要这么麻烦么
我试了一下,这是不行的。可能 FireFox 可以,但 Konqueror 和 KDE 环境我没有成功。顺便把前后的效果放在下面了。虽然修改后那个向下的三角形无法正常显示,但对我来说,能够以好的方式显示大多数字符比能够显示不常用的一些字符重要得多。

我想 FontConfig 一定通过 LANG 或 LC_... 环境变量来匹配字体,通过对比设置 FC_DEBUG 前后 FontConfig 的输出也许可以验证一下,但我没有精力去做这个了。Anyway,我已经找到了一个解决方案。
上传的图像
文件类型: png before.png (47.2 KB, 53 次查看)
文件类型: png after.png (56.1 KB, 47 次查看)

此帖于 07-06-02 21:34 被 herberteuler 编辑.
  herberteuler 当前离线   回复时引用此帖
旧 07-06-03, 18:23 第 4 帖
Jockey
 
 
 
注册会员  
  注册日期: Mar 2004
  帖子: 2,611
  精华: 6
 

在我这边设定lang即可,familylang无所谓。
  Jockey 当前离线   回复时引用此帖
旧 07-06-03, 22:35 第 5 帖
晨想 帅哥
 
晨想 的头像
 
 
资深版主  
  注册日期: Feb 2003
  我的住址: P.R.China
  帖子: 9,637
  精华: 9
 

herberteuler,修改后,你的输出是什么?
fc-match 'sans serif' -v







__________________
我的wiki: http://wiki.linuxgnu.org

马甲Show:终极幻想 黯然销魂 DawnFantasy FinalFantasy ArmageddonMa
  晨想 当前离线   回复时引用此帖
旧 07-06-04, 18:48 第 6 帖
herberteuler
 
herberteuler 的头像
 
 
注册会员  
  注册日期: Jul 2004
  我的住址: 你的居住地
  帖子: 1,620
  精华: 3
 

引用:
作者: Jockey
在我这边设定lang即可,familylang无所谓。
嗯,确实可以,谢谢。
  herberteuler 当前离线   回复时引用此帖
旧 07-06-04, 18:50 第 7 帖
herberteuler
 
herberteuler 的头像
 
 
注册会员  
  注册日期: Jul 2004
  我的住址: 你的居住地
  帖子: 1,620
  精华: 3
 

引用:
作者: 晨想
herberteuler,修改后,你的输出是什么?
fc-match 'sans serif' -v
下面的命令说明了设置之前和之后 fc-match 的输出:
代码:
herbert@herbert-euler:~$ cat .fonts.conf <?xml version="1.0"?> <fontconfig> <match target="pattern"> <test qual="any" name="family"> <string>sans-serif</string> </test> <edit name="lang" mode="assign"> <string>en</string> </edit> </match> </fontconfig> herbert@herbert-euler:~$ fc-match 'sans serif' -v Pattern has 27 elts (size 32) family: "Bitstream Vera Sans"(s) familylang: "en"(s) style: "Roman"(s) stylelang: "en"(s) slant: 0(i)(s) weight: 80(i)(s) width: 100(i)(s) size: 12(f)(s) pixelsize: 12.5(f)(s) foundry: "bitstream"(s) hintstyle: 3(i)(s) hinting: FcTrue(s) verticallayout: FcFalse(s) autohint: FcFalse(s) globaladvance: FcTrue(s) file: "/var/lib/defoma/fontconfig.d/B/Bitstream-Vera-Sans.ttf"(s) index: 0(i)(s) outline: FcTrue(s) scalable: FcTrue(s) dpi: 75(f)(s) scale: 1(f)(s) charset: 0000: 00000000 ffffffff ffffffff 7fffffff 00000000 ffffffff ffffffff ffffffff 0001: c00230c0 00030000 c00c0006 61000003 00040000 00000000 00000000 00000000 0002: 00000000 00000000 00000000 00000000 00000000 00000000 3f0000c0 00000000 0003: 00000000 00000000 00000000 00000000 00000000 00000200 00000001 00000000 0020: 77180000 06010047 00000010 00000000 00000000 00001000 00000000 00000000 0021: 00000000 00000004 00000000 00000000 00000000 00000000 00000000 00000000 0022: 46268044 00000800 00000100 00000031 00000000 00000000 00000000 00000000 0025: 00000000 00000000 00000000 00000000 00000000 00000000 00000400 00000000 00fb: 00000006 00000000 00000000 00000000 00000000 00000000 00000000 00000000 (s) lang: aa|ast|ay|bi|br|ch|co|da|de|en|es|et|eu|fi|fj|fo|fr|fur|fy|gd|gl|gv|ho|ia|id|ie|io|is|it|lb|mg|nb|nds|nl|nn|no|oc|om|pt|rm|sma|smj|so|sq|sv|sw|tn|tr|ts|vo|vot|wa|xh|yap|zu(s) fontversion: 131072(i)(s) fontformat: "TrueType"(s) embeddedbitmap: FcTrue(s) decorative: FcFalse(s) herbert@herbert-euler:~$ mv .fonts.conf _fonts.conf herbert@herbert-euler:~$ fc-match 'sans serif' -v Pattern has 32 elts (size 48) family: "AR PL ShanHeiSun Uni"(s) familylang: "zh-tw"(s) style: "Regular"(s) stylelang: "en"(s) slant: 2(i)(w) weight: 1(i)(w) width: 100(i)(s) size: 12(f)(s) pixelsize: 12.5(f)(s) spacing: 0(i)(w) foundry: "unknown"(s) antialias: FcFalse(w) hintstyle: 3(i)(s) hinting: FcTrue(w) verticallayout: FcFalse(w) autohint: FcFalse(w) globaladvance: FcFalse(w) file: "/var/lib/defoma/fontconfig.d/S/ShanHeiSun-Uni.ttf"(s) index: 0(i)(s) outline: FcTrue(s) scalable: FcTrue(s) dpi: 75(f)(s) scale: 1(f)(s) minspace: FcFalse(w) charset: 0000: 00000001 ffffffff ffffffff 7fffffff 00000000 ffffffff ffffffff ffffffff # 此处略去很多行。。。。。。。 0f05: 00000003 00000000 00000000 00000000 00000000 00000000 00000000 00000000 (s) lang: "hak"(w) fontversion: 6553(i)(s) capability: "otlayout:DFLT otlayout:hani otlayout:latn"(s) fontformat: "TrueType"(s) embolden: FcFalse(w) embeddedbitmap: FcTrue(s) decorative: FcFalse(s) herbert@herbert-euler:~$
  herberteuler 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 22:05


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2010, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2009, LinuxSir.Org