让 "Duchess" 字体正常工作

Getting the "Duchess" font to work

我从 Fontpalace 下载了一些 TTF 字体到我在 zackel.com/fonts/ 的网页上,然后我使用 @font 访问它们。这适用于 "Constitution" 字体,以及我尝试过的所有其他字体 - 除了 "Duchess" ,正如你在这个 jsFiddle - http://jsfiddle.net/mzvswy4e/4/ 中看到的那样。我试过从 Fontpalace 以外的其他来源复制 Duchess ttf 文件到我的 font/ 目录,但结果总是一样的:它不起作用。

有人知道这是怎么回事吗?

谢谢。

@font-face {
    font-family:constitution;   
    src: url(https://zackel.com/fonts/Constitution.ttf);
}

@font-face {
    font-family:duchess;    
    src: url(https://zackel.com/fonts/Duchess.ttf);
}

(免责声明:以下是目前样本量为 2 的实验性工作,但得到了 https://github.com/devongovett/pdfkit/issues/121 的证实:某些应用程序似乎需要 Unicode cmap。)

我用ttfdump查看了两种字体,而Duchess.ttf在文件中只有两种编码:

'cmap' Table - Character to Glyph Index Mapping Table

     'cmap' version: 0
     number of encodings: 2
     number of subtables: 2

Encoding 0. PlatformID: 1 EcodingID: 0 SubTable: 0, Offset: 0x00000014

Encoding 1. PlatformID: 3 EcodingID: 1 SubTable: 1, Offset: 0x0000011a

The specs suggest that's for Mac (Id 1) and Windows (Id 3, Encoding 1 is Unicode Basic Plane, UCS-2), 而工作字体有三个:

'cmap' Table - Character to Glyph Index Mapping Table

     'cmap' version: 0
     number of encodings: 3
     number of subtables: 2

Encoding 0. PlatformID: 0 EcodingID: 0 SubTable: 0, Offset: 0x00000124

Encoding 1. PlatformID: 1 EcodingID: 0 SubTable: 1, Offset: 0x0000001c

Encoding 2. PlatformID: 3 EcodingID: 1 SubTable: 0, Offset: 0x00000124

额外的是 Unicode 1.0。请注意偏移量与 Windows 编码的相同之处,因为它们基本上是相同的 Unicode。我大胆猜测浏览器会需要 Unicode 编码。我假设像 FontForge 这样的工具可以添加它,因为它只是指向您已经拥有的 table 的另一个指针。