1
kkocdko 2022-05-16 11:25:15 +08:00 via Android
Chrome 的架构确实很烦人,总是过度封装。Firefox 的架构就清晰很多。
|
2
Coelacanthus 2022-05-16 20:25:12 +08:00 2
事实上不只是 autohint ,不知道是因为封装的原因还是 Chromium 对 fontconfig 的使用有问题,Chromium 的字体选择几乎不遵守你的 fontconfig 设置,导致会出现代码块字体在 Firefox 上正常但是在 Chromium 上变成非等宽字体的情况,而且这个问题存在了很多年,Google 看起来也不打算修了[1]
相反,Firefox 没有这个问题,并且 Firefox 对相关问题修复态度非常积极,我报了两个相关的 bug ,其中一个尽管是我的配置有问题,维护者依然修复了显露出来的问题,而不是 notfirefoxbug 关闭了事[2],另一个维护者积极接受了相关修复[3] 而且我读了相关代码,Firefox 的字体部分仅仅是封装了平台 API 到一个一致的 API ,没有动具体怎么处理[4] 此外既然也提到了 Qt ,Qt 的字体相关代码实现也不好,一是对 fallback 字体数量做了硬编码,也即 QTBUG-80434[5],fallback 的时候最多使用 255 个字体,如果你安装了超过这个数目的字体,就有可能有字符 fallback 不到有这个字符的字体,二是 font feature 的支持非常差,现有代码是采取的硬编码方案[6],而 Firefox 和 Pango ( GTK 在用)则是采用的变长线性表储存[7],且支持从 fontconfig 配置中读取 font feature 配置(当然,Firefox 也支持从 CSS 读取)[8][9],而 Qt 的 feature request 开了三年了[10],没人管 相关链接: [1]: https://catcat.cc/post/2020-10-31/#chrome [2]: https://bugzilla.mozilla.org/show_bug.cgi?id=1756400 [3]: https://bugzilla.mozilla.org/show_bug.cgi?id=1744765 [4]: https://github.com/mozilla/gecko-dev/tree/master/gfx/thebes [5]: https://bugreports.qt.io/browse/QTBUG-80434 [6]: https://github.com/qt/qtbase/blob/a1fb3971f222afa01583e41f4d8f0e037d2c7892/src/gui/text/qtextengine.cpp#L1687-L1705 [7]: https://github.com/mozilla/gecko-dev/blob/a3ee6a0ee95a1095ce496b5adc07738a7eddc7c0/gfx/thebes/gfxFontEntry.h#L496 [8]: https://github.com/mozilla/gecko-dev/blob/a3ee6a0ee95a1095ce496b5adc07738a7eddc7c0/gfx/thebes/gfxFcPlatformFontList.cpp#L258 [9]: https://gitlab.gnome.org/GNOME/pango/-/blob/a553ba64c43c13e37d54f1fb20a656ffb2ef067/pango/pangofc-font.c#L860 [10]: https://bugreports.qt.io/browse/QTBUG-78645 |
3
nullizer 2022-05-16 23:14:29 +08:00
这就是我坚持 Firefox 的原因。而且 Chromium 在 Linux 上不支持鼠标中键自动滚动的 BUG Google 也不愿意修,非常膈应人。
|