问一个fontconfig字体回滚配置问题。

系统字体配置、中文显示和输入法问题
回复
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

问一个fontconfig字体回滚配置问题。

#1

帖子 vickycq » 2014-08-02 20:31

现在系统字体选为Droid Sans,中文字自动回滚到Droid Sans Fallback,想换为文泉驿正黑。

代码: 全选

fc-match -s DroidSans
头几行为

代码: 全选

$ fc-match -s DroidSans
DroidSans.ttf: "Droid Sans" "Regular"
DroidNaskh-Regular.ttf: "Droid Sans" "Regular"
DroidSansEthiopic-Regular.ttf: "Droid Sans" "Regular"
DroidSansHebrew-Regular.ttf: "Droid Sans" "Regular"
DroidSansThai.ttf: "Droid Sans" "Regular"
DroidSansArmenian.ttf: "Droid Sans" "Regular"
DroidSansGeorgian.ttf: "Droid Sans" "Regular"
DroidSansFallbackFull.ttf: "Droid Sans" "Regular"
DejaVuSans.ttf: "DejaVu Sans" "Book"
DejaVuSans-Bold.ttf: "DejaVu Sans" "Bold"
DejaVuSans-Oblique.ttf: "DejaVu Sans" "Oblique"
DejaVuSans-BoldOblique.ttf: "DejaVu Sans" "Bold Oblique"
wqy-zenhei.ttc: "WenQuanYi Zen Hei" "Regular"
现在的问题是怎么把wqy-zenhei.ttc拿到DroidSansFallbackFull.ttf前面来?
试了很长时间,就是没法在Droid Sans内部match出DroidSansFallbackFull.ttf来。

请赐教!
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 问一个fontconfig字体回滚配置问题。

#2

帖子 poloshiao » 2014-08-02 21:09

现在系统字体选为Droid Sans,中文字自动回滚到Droid Sans Fallback,想换为文泉驿正黑。
使用瀏覽器
參閱
file:///usr/share/doc/fontconfig/fontconfig-user.html
User configuration file
<!--
use WenQuanYi Zen Hei font when serif is requested for Chinese
-->
<match>
<!--
If you don't want to use WenQuanYi Zen Hei font for zh-tw etc,
you can use zh-cn instead of zh.
Please note, even if you set zh-cn, it still matches zh.
if you don't like it, you can use compare="eq"
instead of compare="contains".
-->
<test name="lang" compare="contains">
<string>zh</string>
</test>
<test name="family">
<string>serif</string>
</test>
<edit name="family" mode="prepend">
<string>WenQuanYi Zen Hei</string>
</edit>
</match>

試試
把上面的 serif 改為 Droid Sans
意思是
碰到 Droid Sans 就取代為 WenQuanYi Zen Hei
看看 行不行

設定好 登出再登入
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: 问一个fontconfig字体回滚配置问题。

#3

帖子 vickycq » 2014-08-02 21:35

poloshiao 写了: (......「恕删」......)
試試
把上面的 serif 改為 Droid Sans
意思是
碰到 Droid Sans 就取代為 WenQuanYi Zen Hei
看看 行不行

設定好 登出再登入
感谢回答。但是:


貌似是不行的 :em20
如果只用

代码: 全选

 55 <match>
 56         <test name="family">
 57                 <string>Droid Sans</string>
 58         </test>

 62         <edit name="family" mode="prepend" binding="strong">
 63                 <string>文泉驿正黑</string>
 64         </edit>
 65 </match>

则有效,但会把Droid Sans的英文部分一并替换为文泉驿正黑。(文泉驿正黑包含拉丁字符支持)

只要一加上判断lang的条件:

代码: 全选

 59         <test name="lang" compare="contains">
 60                 <string>zh</string>
 61         </test> 
就没作用了,还是回滚到Droid Sans Fallback。

注:
Droid Sans Fallback是由

代码: 全选

DroidSansFallbackFull.ttf: "Droid Sans" "Regular"
字体文件单独提供的。
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 问一个fontconfig字体回滚配置问题。

#4

帖子 poloshiao » 2014-08-02 23:20

只要一加上判断lang的条件:
代碼:
59 <test name="lang" compare="contains">
60 <string>zh</string>
61 </test>
就没作用了,还是回滚到Droid Sans Fallback。
測試看看

lang=en
Droid Sans --> Sans 或 其它

lang=zh
Droid Sans --> 文泉驿正黑
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: 问一个fontconfig字体回滚配置问题。

#5

帖子 自由建客 » 2014-08-03 18:47

这个太复杂了
头像
acid303
帖子: 547
注册时间: 2009-04-03 16:06

Re: 问一个fontconfig字体回滚配置问题。

#6

帖子 acid303 » 2014-08-03 19:25

是要这个效果?

代码: 全选

fc-match -s DroidSans
DroidSans.ttf: "Droid Sans" "Regular"
DejaVuSans.ttf: "DejaVu Sans" "Book"
DejaVuSans-Bold.ttf: "DejaVu Sans" "Bold"
DejaVuSans-Oblique.ttf: "DejaVu Sans" "Oblique"
DejaVuSans-BoldOblique.ttf: "DejaVu Sans" "Bold Oblique"
wqy-microhei.ttc: "文泉驿微米黑" "Regular"
DroidSansFallbackFull.ttf: "Droid Sans Fallback" "Regular"
~/.config/fontconfig/fonts.conf

代码: 全选

 <match>
	<test name="family"><string>sans-serif</string></test>
	<edit name="family" mode="prepend" binding="strong">
		<string>Droid Sans</string>
		<string>DejaVu Sans</string>
		<string>WenQuanYi Micro Hei</string>
		<string>Droid Sans Fallback</string>
	</edit>
 </match>
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 问一个fontconfig字体回滚配置问题。

#7

帖子 poloshiao » 2014-08-03 19:35

现在系统字体选为Droid Sans,中文字自动回滚到Droid Sans Fallback,想换为文泉驿正黑。
https://bugs.launchpad.net/ubuntukylin/ ... omments/28
65-droid-sans-fallback.conf
similar to 64-wqy-zenhei.conf
This makes Droid Sans be used for rendering Chinese
研究一下 65-droid-sans-fallback.conf
看看如何改變它 ?
看看能否達到你的期望
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: 问一个fontconfig字体回滚配置问题。

#8

帖子 vickycq » 2014-08-03 22:15

poloshiao 写了:
lang=en
Droid Sans --> Sans 或 其它

lang=zh
Droid Sans --> 文泉驿正黑
非常感谢提供思路,成功了。使用了一个dirty trick :em01
匹配lang的语句:(使用了not_contains)

代码: 全选

55 <match>
 56         <test name="family">
 57                 <string>Droid Sans</string>
 58         </test>

 59         <test name="lang" compare="not_contains">
 60                 <string>en</string>
 61         </test> 

 62         <edit name="family" mode="prepend" binding="strong">
 63                 <string>文泉驿正黑</string>
 64         </edit>
 65 </match>
存疑之处有二:
1)不知道fontconfig把Droid Sans Fallback的lang识别成了啥。(用fc-list :lang=zh能列出该字体。)
2)此法仅仅是替换,并未改变fc-match -s DroidSans的字体顺序。
上次由 vickycq 在 2016-02-26 9:27,总共编辑 6 次。
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: 问一个fontconfig字体回滚配置问题。

#9

帖子 vickycq » 2014-08-03 22:32

acid303 写了: ~/.config/fontconfig/fonts.conf

代码: 全选

 <match>
	<test name="family"><string>sans-serif</string></test>
	<edit name="family" mode="prepend" binding="strong">
		<string>Droid Sans</string>
		<string>DejaVu Sans</string>
		<string>WenQuanYi Micro Hei</string>
		<string>Droid Sans Fallback</string>
	</edit>
 </match>
我的~/.fonts.conf中也有类似语句。
又试了试,很遗憾:就算把<string>Droid Sans</string>拿到末尾,Droid Sans一族字体仍然牢牢占据fc-match -s DroidSans的榜首。貌似~./fonts.conf无法盖过/etc/fonts/中的配置?

更新:改成mode="prepend_first"后,的确可以改顺序了。但在我这里,<family>Droid Sans</family>会匹配DroidNaskh-Regular.ttf,DroidSansHebrew-Regular.ttf,当然也包括DroidSansFallbackFull.ttf在内的一众字体。因此无法单独操作Droid Sans Fallback.

-----------------------------------------
另注:用新系统做了实验,此问题是14.04.1更新fontconfig-config后引起的。
上次由 vickycq 在 2014-08-03 22:42,总共编辑 1 次。
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: 问一个fontconfig字体回滚配置问题。

#10

帖子 vickycq » 2014-08-03 22:34

自由建客 写了:这个太复杂了
老兄的fontconfig教程很耐读 :em09
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 问一个fontconfig字体回滚配置问题。

#11

帖子 poloshiao » 2014-08-03 23:00

不知道fontconfig把Droid Sans Fallback的lang识别成了啥。(用fc-list :lang=zh能列出该字体。)
https://bugs.launchpad.net/ubuntukylin/ ... omments/50
Considering that DroidSansFallbackFull.ttf is installed by default on all machines, whether Chinese language support has been explicitly installed or not
猜測
lang=en
lang=zh
都有
所以
成功了。使用了一个dirty trick
匹配lang的语句:(使用了not_contains)
此法仅仅是替换,并未改变fc-match -s DroidSans的字体顺序
1. fonts 有關的字型設定 很廣泛
1-1. https://help.ubuntu.com/community/Fonts
1-2. https://wiki.debian.org/Fonts#Fontconfig
1-3. http://www.freedesktop.org/software/fon ... -user.html
1-4. https://wiki.archlinux.org/index.php/Font_configuration
特別是 1-4 這一段 越來越扮演重要角色
Note: Configuration files and directories: ~/.fonts.conf/, ~/.fonts.conf.d/ and ~/.fontconfig/*.cache-* are deprecated since fontconfig 2.10.1 (upstream commit) and will not be read by default in the future versions of the package. New paths are $XDG_CONFIG_HOME/fontconfig/fonts.conf, $XDG_CONFIG_HOME/fontconfig/conf.d/NN-name.conf and $XDG_CACHE_HOME/fontconfig/*.cache-* respectively. If using the second location, make sure the naming is valid (where NN is a two digit number like 00, 10, or 99).
就是 登入後 實際發生效力的字型設定 (會覆蓋系統字型設定)
2. http://manpages.ubuntu.com/manpages/tru ... tch.1.html
2-1. fc-match - match available fonts
只是查一查 可配合的字型
不是讓它實際生效的設定
2-2. http://manpages.ubuntu.com/manpages/tru ... onf.5.html
fonts.conf - Font configuration files
Fontconfig is a library designed to provide system-wide font configuration, customization and application access.
Fontconfig 才是實際上讓字型生效的設定
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: 问一个fontconfig字体回滚配置问题。

#12

帖子 自由建客 » 2014-08-03 23:19

vickycq 写了:
自由建客 写了:这个太复杂了
老兄的fontconfig教程很耐读 :em09
惭愧,新的还未出来,都好多年了。
回复