加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 01:44:56 所属栏目:Linux 来源:网络整理
导读:我最近想出了如何在 Linux上使用fontconfig为serif,sans-serif和monospaced字体设置系统默认字体;基本上,您将XML配置文件保存到?/ .config / fontconfig / fonts.conf,其中包含以下内容: ?xml version="1.0"?!DOCTYPE fontconfig SYSTEM "fonts.dtd"fontcon
我最近想出了如何在 Linux上使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读