<?xml version="1.0"?><!DOCTYPE Fontconfig SYstem "Fonts.dtd"><Fontconfig><match> <test qual="any" name="family"><string>serif</string></test> <edit name="family" binding="strong" mode="prepend_first"> <string>Gentium</string> <string>Sun-ExtA</string> <string>HanaMinA</string> <string>HanaMinB</string> </edit> </match></Fontconfig>
binding =“strong”mode =“prepend_first”属性确保匹配规则优先于其他设置,并且字体名称序列确保字体不包含给定代码点/字符的位置,下一个字体尝试列表(这个列表适用于从上到下;恕我直言,它应该是一个后来更强大的逻辑,但无论如何).
这种配置的优点在于它可以在文本编辑器和终端仿真器中使用.
然而,还有一个问题:在许多情况下,给定的字体确实包含给定的字形,但另一种字体对于该代码点是可取的;例如,Sun-ExtA是CJK字符的一个很好的默认字体,但它也涵盖了很多很多非CJK字符,并且有一些有问题的字形.
假设我不喜欢Sun-ExtA中〇U3007 IDEOGRAPHIC NUMBER ZERO的外观而宁愿使用HanaMinA,我怎么能用Fontconfig做到这一点?显然,我不能仅仅优先考虑HanaMinA对Sun-ExtA的条目,因为这会影响两种字体中包含的所有字形.
我的预感是应该有一个涉及元素的解决方案< charset> (根据
fontconfig user documentation,“此元素至少包含Unicode代码点的一个元素”和/或< range> (“此元素包含范围表示的两个元素” – 表示可以表示一系列Unicode代码点).但是,我找不到一个如何使用这些元素的例子.
是否可以将Fontconfig配置为对单个Unicode代码点或一系列代码点使用特定字体?
解决方法 在扫描模式内,包括< minus>. < edit>中的元素标签允许您从字符集中减去.这主要是为了从字体中删除“坏”或错误的字符,但更进一步,你可以写一个< test>除了你想要使用的字体之外,它匹配每种字体:
<match target="scan"> <test name="family" compare="not_eq"> <string>VL Gothic</string> </test> <edit name="charset" mode="assign"> <minus> <name>charset</name> <range> <int>0x0021</int> <int>0x00FF</int> </range> </minus> </edit></match>
类似的配置也可用于从字体中删除整个lang.
据我所知,这在现在之前没有真正记录过,我发现了它from a redhat bug
总结以上是内存溢出为你收集整理的linux – 如何在fontconfig中设置每个Unicode范围/代码点的字体?全部内容,希望文章能够帮你解决linux – 如何在fontconfig中设置每个Unicode范围/代码点的字体?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)