QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3221|回复: 2

fontconf字体替换的奇怪问题

[复制链接]
发表于 2006-7-31 23:27:28 | 显示全部楼层 |阅读模式
假设fonts.conf中有如下内容:

[code:1]
  <alias>
    <family>xyz</family>
    <prefer>
      <family>Bitstream Vera Sans</family>
      <family>SimSun</family>
    </prefer>
    <accept>
      <family>Webdings</family>
    </accept>
    <default>
      <family>abc</family>
    </default>
  </alias>
[/code:1]

按照文档的说法,fontconf会先找prefer列表中的字体。找不到,则去找名为xyz的字体。还没有接着找accept,最后找default。可实际情况并不是这样。

$ LANG=zh_CN fc-match xyz
simsun.ttc: "SimSun" "Regular"

$ LANG=C fc-match  xyz
Vera.ttf: "Bitstream Vera Sans" "Roman"

也就是说,match到的字体还跟locale有关。如果是这样,字体替换岂不是根本无法实现?

测试用系统是archlinux
fontconfig 2.3.2-6
freetype2 2.1.10-4
发表于 2006-8-2 16:52:02 | 显示全部楼层
我在 Suse 的系統下 ..
更改字型的排列確實會跟 locale 的語言有相關..

之前有是過語言設定為繁體中文,並把 MAC 的 STHiti 字型社為首要
可是就是不會以這個字型為優先 ..

後來有更改語言為簡體之後,就可以囉~~ ..

原因是 ..
因為 sthiti 是屬於簡體中文字,所以就必須是簡體的 locale 就會優先取用
回复

使用道具 举报

发表于 2006-8-14 10:42:48 | 显示全部楼层
fontconfig 的字体匹配算法和 locale 关系紧密,语言特性具有很高的优先级。比如:
[code:1]
        <alias>
                <family>sans-serif</family>
                <prefer>
                        <family>Arial</family>
                        <family>SimSun</family>
                </prefer>
        </alias>
[/code:1]
Arial 是排在 SimSun 前面的,按一般思维来说,应该先使用 Arial 的英文。
但如果你的 locale 为 zh_CN.UTF-8,Arial 的 lang 参数不含 zh-cn,而 SimSun 的 lang 参数包含 zh-cn,则优先使用 SimSun,用下面命令查看:
[code:1]
$ LANG=zh_CN.UTF-8 fc-match sans --sort
simsun.ttc: "SimSun" "Regular"
Arial.ttf: "Arial" "Regular"
......
[/code:1]
如果讲 locale 改为 en_US.UTF-8,则优先使用 Arial,道理同上。
[code:1]
$ LANG=en_US.UTF-8 fc-match sans --sort
Arial.ttf: "Arial" "Regular"
simsun.ttc: "SimSun" "Regular"
......
[/code:1]

可以通过强绑定机制,强行优先使用你喜欢的字体:
[code:1]
      <match target="pattern">
                <test name="family" >
                        <string>SimSun</string>
                <edit name="family" mode="prepend" binding="strong">
                        <string>Arial</string>
                </edit>
        </match>
[/code:1]
不过这种处理问题多多,这也是 fontconfig 匹配算法很大争议的地方。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-6-7 07:45 , Processed in 0.157386 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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