linux – 如何在fontconfig中设置每个Unicode范围代码点的字体?

linux – 如何在fontconfig中设置每个Unicode范围代码点的字体?,第1张

概述我最近想出了如何在 Linux上使用fontconfig为serif,sans-serif和monospaced字体设置系统默认字体;基本上,您将XML配置文件保存到〜/ .config / fontconfig / fonts.conf,其中包含以下内容: <?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd"><fontco 我最近想出了如何在 @L_404_0@上使用Fontconfig为serif,sans-serif和monospaced字体设置系统默认字体;基本上,您将XML配置文件保存到〜/ .config / Fontconfig / Fonts.conf,其中包含以下内容:

<?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范围/代码点的字体?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1029707.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存