KonghaYao / cn-font-split

划时代的字体切割工具,CJK与任何字符!支持 otf、ttf、woff2 字体多线程切割,完美地细颗粒度地进行包大小控制。A revolutionary font subetter that supports CJK and any characters! It enables multi-threaded subset of otf, ttf, and woff2 fonts, allowing for precise control over package size.
https://chinese-font.netlify.app/
Apache License 2.0
442 stars 15 forks source link

字体分包后丢失部分文字的字形 #52

Closed jl-sun closed 3 days ago

jl-sun commented 6 months ago

开发者你好! 我在使用喜鹊宋体时,通过在线分包工具对字体进行了子集化处理,然后将处理后的字体部署到 imagekit 进行测试。结果发现,部分常用汉字的字形显示异常或缺失。调用方式是没问题的,分包其他字体(试了京华老宋体)并部署没有发现这个问题。 使用在线分包工具的版本号:4.11.2,4.9.2 请问需要我提供什么其他信息吗?

image
KonghaYao commented 6 months ago

可以提供一原始的字体文件吗,随便挑一个在线存文件的网站存着即可,我会拿去测试一波 @jl-sun

jl-sun commented 6 months ago

可以提供一原始的字体文件吗,随便挑一个在线存文件的网站存着即可,我会拿去测试一波 @jl-sun

感谢您的回复,我发送到您GitHub主页提供的邮箱了。

KonghaYao commented 6 months ago

ok,我们这边诊断是该字体的某些字进行了特殊处理,导致浏览器在读取字体的时候会出现问题。

  1. ❌ 原始字体直接上网页,不能显示,cmap 出错
  2. ❌ cn-font-split 切割后上线,部分能展示,但是部分分包不能显示 image
  3. ✅ 在 Mac 上安装字体,用文档软件打开,没有问题

我们初步认为是不支持的字符分配到了这几个分包里面,导致里面的字符也失效了,我们会持续跟进这个 BUG

KonghaYao commented 6 months ago

我使用了 OTS 的检查工具检查了这个字体,发现这个字体的某些点位不能够被浏览器解析,导致了这个 BUG。所以这是原字体文件的问题,或许你应该获取一份支持加载的版本或者 OTF 文件试试。一般这种情况都是设计师的导出工具导致的。 @jl-sun

ERROR: cmap: Bad mapping (4EE4 -> 0) in mapping 0 of variation selector 0
ERROR: cmap: Failed to parse format 14 cmap subtable 1
ERROR: cmap: Failed to parse table
Failed to sanitize file!
KonghaYao commented 5 months ago

image https://www.cnblogs.com/garyw/p/14245882.html 在网络上搜到一个 FontForge 的修复教程,晚点回去试试。这种方式就直接更改了字体内容了,大概率会违反字体协议。