用 golang 重写了 openSUSE 的 fonts-config

我接手 fonts-config 包的维护以来,好多字体问题的 bug 都归到我手里了,有些东西挺难说清楚:

  1. 调试必须用带显示器的电脑
  2. 好多字体是封闭的,fontconfig 确实是有点连蒙带猜的感觉
  3. 好多用户是只要自己动手写 config 了,就认为是对的,一点不懂 FC_DEBUG,fontconfig 的配置是 xml 格式的,但是格式正确不代表程序真正 pick up 了,网上好多的配置其实程序都是不 pick up 的。

有些东西好像是先天不足,比如涉及到大量计算生成的配置:

  1. noto 字体系列的配置
  2. 用 noto 字体去“模仿” Adobe Source Han 字体
  3. 批量 blacklist 正常字体中的 emoji 字符好让 emoji 字体能够显示

于是我决定用编程语言来扩展一下子 fonts-config 的能力,就有了这个项目

是用 golang 写的,目前只是实现了以上我说的需要大量计算的功能。

后续可能会加:

  1. 配置校验,提示错误。不是校验 xml 那太简单了,是告诉你会不会被 fontconfig pick up
  2. 一个 gui 界面来调试字体配置的错误。正确很简单,知道为什么错了和错哪里了很难。
  3. lib 库最好能读封闭字体的 hinting instructions, 像 python 的 fonttools 一样,至少要能够取出对配置有意义的东西,比如你现在根本不知道一个封闭字体是 hintfull 还是 hintslight, subpixel-rendering 到底应该用 rgb 还是 vrgb。现在 golang 的 freetype 库很强大,但是也没有这方面的内容。

测试包在:

装上只有 /etc/fonts/conf.d 下面会多一些东西,如果 break 了什么欢迎在 github 报 bug。

4赞

好耶!看来我也可以尝试开始碰字体了,之前都视为洪水猛兽

虽然没看懂,但是仍要支持,给你1:star2: