![是否可以在编码文件中使用私有 unicode 位置?](https://linux22.com/image/443151/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%9C%A8%E7%BC%96%E7%A0%81%E6%96%87%E4%BB%B6%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%A7%81%E6%9C%89%20unicode%20%E4%BD%8D%E7%BD%AE%EF%BC%9F.png)
我目前正在将大型图标字体转换为可用于 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
较小的代码点,但在我看来,保持一致更好)
这些规则源自 Adobe 字形列表使用的字形名称格式,该格式记录在https://github.com/adobe-type-tools/agl-specification。