是否可以在编码文件中使用私有 unicode 位置?

是否可以在编码文件中使用私有 unicode 位置?

我目前正在将大型图标字体转换为可用于 LaTeX 的字体。到目前为止,一切运行良好,我编写了一个脚本,将附带的文档转换为编码文件,然后运行 ​​otftotfm。但是字体利用了 0xFFFF 以上的数字空间,因此在 0xF0000 及以上的范围内也有字符。我尝试将其写入编码文件,例如:

[...]
/uniEB0C
/uniEB0D
/uniEB0E
/uniEB0F
/uniF0000
/uniF0001
/uniF0002
/uniF0003
[...]

但是当我运行otftotfm它时,它似乎忽略了后面的每一行/uniEB0F。所以我的问题是:有没有办法使用 unicode 空格 F0000 及以后?

编辑:我想我现在明白了,编码应该是 UTF16,对吧?所以 0xF0000 应该是 0xDB80 0xDC00,对吧?但我怎么才能在编码文件中写入它呢?/uniDB80uniDC00?这可能吗?

答案1

对于 BMP 之外的代码点(即 U+10000 以上),您必须使用前缀/u而不是/uni。您不应使用 UTF-16(或其他编码)对它们进行编码。

所以你得到

[...]
/uEB0C
/uEB0D
/uEB0E
/uEB0F
/uF0000
/uF0001
/uF0002
/uF0003
[...]

(您也可以继续使用/uni较小的代码点,但在我看来,保持一致更好)

这些规则源自 Adob​​e 字形列表使用的字形名称格式,该格式记录在https://github.com/adobe-type-tools/agl-specification

相关内容