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

关于字体分割的技术讨论 #53

Closed dufu1991 closed 5 months ago

dufu1991 commented 5 months ago

开发者你们,首先需要感谢您们为字体切割所做的贡献,尤其是对 CJK 文字。 关于字体切割想请教一下技术问题。我还没深入使用过你们这个项目,从你们的描述和在线工具体验来看,你们其实是将一个大的字体文件拆成多个小的字体文件,最终还是需要将所有文字加载完成。 这是我的理解,可能有错误,还望见谅。 我目前有个想法,比如我的一篇文章中某种字体只使用了其中的十个汉字,但是按照目前的方案必须要将包含上千字的字体文件加载下来,即使使用了分割,也只是将字体文件拆小。我想的是能不能实现我传入这些文字或 Unicode 编码,工具自动处理,提取出只包含这十个汉字的字体文件,这样字体文件将会非常小。 会不会目前你们的方案是支持的这需求的,只是我没 get 到。如果暂不支持,你们这个分割方案能不能实现? 另外,据我了解,私自修改厂商的字体文件好像会有版权问题?即使是开源且商业免费的开源协议。这方面还望给一些指导性意见。非常感谢。

KonghaYao commented 5 months ago
  1. 浏览器在渲染的时候,会直接获取到页面中的字符,然后根据 css 中的 unciode-range 去匹配对应的分包。这个在静态页面较多的情况下,可以极大提升 CDN 的利用率。但是如果说只是很少字符,建议使用 图片 或者 单独分包较为合适。
  2. cn-font-split 支持输入指定文本进行分包,代码如下,但是我们没有做 vite 或者 webpack 的插件。不过这方面的字蜘 font-spider 已经做得很好了。 https://github.com/KonghaYao/cn-font-split/blob/db389316ee55e2b2ccb48494d66007fb70c6264e/packages/test/script/article_build.mjs#L1-L20
  3. 私自修改厂商字体的话,会涉及一些问题。较为开放的 OFL、GPL 等开源协议一般不会计较字体切割的问题,因为 Web 端本身有很多限制,采用图片、切割字体并不会涉及到特殊的对作者字体的混淆。使用场景的话,合法范围内,注意作者允不允许商用、允不允许网络使用两个比较特殊的。
  4. 如果字体是大厂研发的字体,那么大概率会有规范的一个说明文件,或者是公开的帖子,注意里面对字体的使用限制,一般会有明确表示的。如果没说,发个 emil 或许能问到。
  5. cn-font-split 和 font-spider 这类工具都算作是对字体进行处理过的,也就是源代码或者字形的删减、修改。cn-font-split 是没有删减字形的,也就是能显示就显示;而 font-spider 则是挑选页面中的字体切出来,也就是有字形的删减、修改。
  6. 但是从使用本意上来解释,用户在看到整个页面的时候,看到是一样的字体效果,没有损坏或者字体渲染错误,那么字体开发者一般也不会用这一条针对你的网站字体。 @dufu1991 希望能帮到你哈
dufu1991 commented 5 months ago

非常感谢,我尝试一下。