找回密码
 立即注册
查看: 484|回复: 4

请问如何批量查找受 HB_SUBSET_FLAGS_NO_HINTING 影响的字体

17

主题

106

回帖

0

VC币

中级会员

Rank: 3Rank: 3

积分
9993
QH7B 发表于 2025-12-29 11:32:29 | 显示全部楼层 |阅读模式
如题,目前已知 FA 丸ゴシックM 和 標楷體 存在此问题,想知道是否还有其他字体有相同的问题,以便我使用单独编译的工具进行子集化,避免出现文字显示问题。
回复

使用道具 举报

1

主题

25

回帖

0

VC币

中级会员

Rank: 3Rank: 3

积分
15148
milkfans 发表于 2025-12-30 21:48:59 | 显示全部楼层

中日字体基本都有hinting,受影响字符多少的问题,hb-info.exe --show-technology fontfile可以看有没有hinting  看了下原码就是判断字体是否包含
fpgm或prep或cvt子表,有其中任意子表就表示字体有hinting   

hb-subset的默认设置不是不开--no-hinting吗 ,用默认就好了啊
它默认子集化应该就是只保留必要的hinting
测试以下字体在不同字形范围内子集化后的大小,单位KB
 
字型gid范围
字体
1-100
1-100(nohinting)
1-1000
1-1000(nohinting)
*
*(nohinting)
FA 丸ゴシックM
46
9
165
125
5046
2686
標楷體
19
9
200
152
2839
2239
方正准圆_GBK
12
12
149
148
9769
9649

看结果默认子集化应该也是只保留相关的hinting
像方正准圆_GBK这种hinting用的少的字体,开启nohinting并不会减少多少体积  像標楷體和FA 丸ゴシックM这种hinting用的多的开启nohinting会导致显示不正常,

回复

使用道具 举报

17

主题

106

回帖

0

VC币

中级会员

Rank: 3Rank: 3

积分
9993
QH7B  楼主| 发表于 2025-12-30 22:46:39 | 显示全部楼层
milkfans 发表于 2025-12-30 21:48
中日字体基本都有hinting,受影响字符多少的问题,hb-info.exe --show-technology fontfile可以看有没有hi ...

感谢回复!
那就是说子集化时如果加了这个FLAG,多数字体都会出现显示问题,只是大部分的不明显很难发现是吗?
但是 mkvtool 的作者说这样会显著降低子集化后字体文件的体积,而只有极个别的字体会出现显示问题,所以拒绝去掉这个FLAG。
目前我一直是原版和自己编译的版本换着用,那按照你的说法以后我只用自己编译的去掉这个FLAG的版本就可以了是吗?


回复

使用道具 举报

1

主题

25

回帖

0

VC币

中级会员

Rank: 3Rank: 3

积分
15148
milkfans 发表于 2025-12-31 00:50:11 | 显示全部楼层
QH7B 发表于 2025-12-30 22:46
感谢回复!
那就是说子集化时如果加了这个FLAG,多数字体都会出现显示问题,只是大部分的不明显很难发现 ...


我没研究过harfbuzz subset的源码,单从测试的结果来看,我觉得默认开这个没什么道理,官方的默认设置也是不开启
harfbuzz github上release有提供windows下subset编译的二进制文件 harfbuzz ,你可以自己测试下不同字体的开启nohinting这个开关对结果的影响
测试下来大部分字体开启nohinting可能最终体积会小个几KB到几十KB,例如180KB和220KB看起来最终体积差的很多,但相较原字体几MB的体积来说,这点优化可能都不到原字体体积的1%,我自己的结论不开nohinting保证兼容性更重要
printscreen.jpg


回复

使用道具 举报

20

主题

164

回帖

20

VC币

至尊会员

Rank: 16Rank: 16Rank: 16Rank: 16

积分
244783
op200 发表于 2025-12-31 01:37:14 | 显示全部楼层
hb 和 fonttools 的 subset 都是默认保留 hinting,那些天天接触字体的开发者写的默认选项肯定是有道理的(
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表