跨平台的 PNG-in-OTF 字体是不是有效?

Posted

技术标签:

【中文标题】跨平台的 PNG-in-OTF 字体是不是有效?【英文标题】:Are cross-platform PNG-in-OTF fonts possible efficiently?跨平台的 PNG-in-OTF 字体是否有效? 【发布时间】:2017-04-30 12:32:41 【问题描述】:

Opentype font format 的最新版本(截至 2016 年底为 1.8)标准化了两个不同的表以嵌入 PNG 位图数据:Google 的 CBDT(连同 CBLC)和 Apple 的 sbix。此外,Mozilla 的SVG  table 中的 SVG 还可以嵌入或引用 PNG。

是否可以将PNG块嵌入一次并在至少两个表中使用它们以制作不大于所需的跨平台表情符号字体文件?

附带问题:PNG 块可以重复用于多个字形,例如索引调色板?

PS:我知道 Apple 的操作系统会使用 PS 名称为 AppleColorEmoji 的字体覆盖表情符号。

【问题讨论】:

“.. 标准化两个不同的表格”让我笑了。 (苦涩,但仍然如此。) 【参考方案1】:

您不能跨表共享图像,例如在cbdt 表中的sbix 表中使用PNG 图像。但是,如果您使用完全相同的图像文件,它们可能会在压缩的 WOFF 中“重复数据删除”。

奇怪的是,CBDT/CBLC 规范说不应存在 glyf 表,而其他格式需要它。因此,您不能将cbdtsbixsvg 表格放在一起。但是您可以将后两者结合起来,以获得在 Windows 和 OSX 上相对较好的支持。

【讨论】:

我可以确认您可以将 sbix 和 svg 表放在一种字体中:) 顺便说一句,在这种情况下,也许 WOFF2 会比 WOFF 更好? 其实我认为这是错误的,我还没有 POC 但我想我想出了一种方法让 CBLC 和 sbix 指向相同的 PNG 数据(注意 only PNG , 不适用于 sbix JPEG/TIFF): twitter.com/fr_brennan/status/1478240370412638211

以上是关于跨平台的 PNG-in-OTF 字体是不是有效?的主要内容,如果未能解决你的问题,请参考以下文章

出现“要求的文件D:\msyh.ttf 不是有效的字体文件”错误

关于字体跨域

允许火狐浏览器跨域取字体

加上cdn后字体跨域

css 跨浏览器中更好的字体平滑

css 跨浏览器中更好的字体平滑