沉沦 发表于 2024-4-2 23:32:31

改进喵玉殿字体渲染

本帖最后由 沉沦 于 2024-4-3 03:53 编辑

由于喵玉殿的字体 fallback 完全围绕 Windows 开发,并且很多年没有改进了,这导致其他系统使用喵玉殿会有一些字体问题。我看有不少喵玉殿的人喜欢使用黑体以外的字体,这应该算是个蛮重要的问题。

1. Mac 系统使用 Tahoma 显示中文标点
12px/1.5 微软雅黑,Tahoma,Helvetica,SimSun,sans-serif
   喵玉殿这里大概是乱写的,微软雅黑在最前面,然后再引用英文字体和宋体。由于中文字体包含英文字符,也就是说 Windows 用户会以始终微软雅黑渲染所有文字,除非用户特别指定使用其他字体,不然 Tahoma 和 Helvetica 是完全用不到的。因为 Mac 系统没有微软雅黑,所以浏览器会进一步读取字体列表,导致浏览器使用 Tahoma 字体来显示中文标点符号。

https://s2.loli.net/2024/04/02/PlG2OoCiZqABnry.png 错误的标点
https://s2.loli.net/2024/04/02/xZcuKURe3aNnlGX.png正确的标点


2. Mac 系统无法正确显示黑体以外的字体
由于喵玉殿的字体列表是针对 Windows 系统写的,Mac 并没有针对 Windows 字体做 fallback,这导致 Mac 用户无法显示黑体以外的中文字体,不管用户指定使用哪款字体发布,最后都会 fallback 成默认的苹方字体。

https://s2.loli.net/2024/04/02/9BzKJ71bEUNkSRq.png 楷体显示成黑体

https://s2.loli.net/2024/04/02/cHCQ6S1ToqAxwfg.png 正确显示楷体

3.改进方法
   第一个问题很好改进,可以将 fallback 写成 "PingFang SC, Noto Sans CJK SC, 微软雅黑"。如果嫌弃微软雅黑显示英文太难看,可以将 Arial 字体排在微软雅黑前面,大多数中文网站都是这样排版的。Arial 的双引号显示起来还是比较接近中文的写法。只要在 fallback 列表上加上苹方字体,Mac 就会正确的显示中文标点符号了。Noto Sans CJK SC 是针对 Linux 发行版的,现在绝大多数发行版都内置思源黑体了。
第二个问题的解决方案可以参考这个项目:https://zenozeng.github.io/fonts.css/唯一的缺点是这个项目已经很久没有更新了,最新的 CSS 标准使用 Cursive 代表中文楷体,他们还没有更新。虽然我在这里主要用 Mac 作为例子,其实喵玉殿的字体只能在 Windows 正常使用。只要别人用其他系统就会遇到问题,平板大概也不例外。我知道新版论坛已经解决了这个问题,如果他们真想用 Google 云字体的话。不过新版论坛一时半会不会开发结束,修一下这个问题可能会比较好。

9654 发表于 2024-5-1 19:39:57

平板没有问题,咱就是平板用户(

沉沦 发表于 2024-5-1 20:14:21

本帖最后由 沉沦 于 2024-5-1 20:44 编辑

9654 发表于 2024-5-1 19:39
平板没有问题,咱就是平板用户(
你能正确显示仿宋、宋体和楷体吗?我查过这些都是调用 Windows 字体,还是说安卓平板厂家自己写了 fallback?iPad 显示这段文字全部是黑体。
页: [1]
查看完整版本: 改进喵玉殿字体渲染