【问题标题】:Disabled unicode characters in a font?禁用字体中的unicode字符?
【发布时间】:2019-11-11 21:00:51
【问题描述】:

我正在使用 FontForge(Windows 10 上的版本 20190801)编辑 woff 字体文件,我想为 unicode 字符 0xD835 添加字形。

但是,这个字符的方框在通常显示 unicode 字符的上部方框上有一个叉号。此外,它在顶部栏中的描述是“代理高,非私人使用”(这是什么意思?),见下图

我尝试从另一个字符复制字形并将其粘贴到 0xD835 框中,得到了这个

但是当我使用它时,该字符没有显示。此外,如果我点击“字形信息”,FontForge 会崩溃。

还有很多其他字符无法使用,这些字符是永久禁用还是有办法使用它们?

我正在处理的文件是 Computer Modern Serif 字体的cmunrm.woff,可用here。这是 woff file 的直接链接。

【问题讨论】:

    标签: fonts fontforge


    【解决方案1】:

    但是没有“unicode 字符 D835”这样的东西。 D800 和 DFFF 之间的所有内容本身都是非法的,并且只能在 UTF-16 编码中成对使用(但仍未分配)代理代码,以解析大于 16 位的数字,即 16位固定宽度编码方案。

    您可能甚至没有使用 UTF-16(因为您的字体可能使用单独的 UCS-2 和 UCS-4 cmap 子表),但为了确保没有人对这些代码点做任何有趣的事情,Unicode 标准 forbids the use of those codepoints for anything other than surrogate pairs无论如何。

    请参阅https://www.unicode.org/versions/Unicode12.0.0/ch23.pdfpp890,了解有关代理对的更权威、最详细的信息,这些信息可以在互联网上找到。

    【讨论】:

    • 非常感谢您解开谜团!奇怪的是,我不是很精确,通过在我的站点编辑器𝑎 或直接? 中编写,显示的是默认站点字体的斜体“a”(我认为是新罗马时代)这不是我现在使用的字体。由此我得知我的字体不包含该字符,因此该站点以默认字体搜索并实际找到它,我试图了解是否可以更改该字符。但是从您链接的来源来看,似乎没有办法。是这样吗?再次感谢
    • 这里是打印字符i.imgur.com/OezkZpq.png的截图
    • 我很困惑:如果你输入&#x1d44e,它当然可以工作,因为1D44E is the codepoint for that character。那你为什么要把东西放在D835?该数字仅显示在 UTF-16 编码值的字节序列中(其中 1D44E 必须 编码为两个字节 D835 + DC4E 因为它大于适合 16 位值的值)。但是,字体内部不使用任何特定的编码,FontForge 向您显示 unicode 代码点,所以...将您的字形放在代码点 1D44E,它应该在哪里?
    • 是的,您需要通知 FontForge 您打算支持哪些 unicode 块 - 一旦您完成创建字体,您可以告诉它“紧凑”。虽然这是您制作字体的方式,但请注意,如果您正在编辑某人的字体,那可能违反了许可。您可能想要做的是仅使用您的字符创建一个专用字体,然后通过利用 CSS 字体后备在您的网站上使用它,将其添加到通用类别关键字之前的字体链(那些是 @987654330 @、monospace 等)
    • 恐怕我无法帮助您学习如何使用 fontforge,因为这需要几天时间,但我建议不要制作新字体 - 而是使用旧字体,清除它,然后输入您想要的字形并更新文件信息,并生成新字体。另外,请记住字形是受版权保护的,所以如果您从不同的字体复制字形,那可能实际上是非法的……您需要仔细检查许可证是否有字形来自(如果没有许可证,根据法律,这意味着它是“保留所有权利”,你不能用它做任何事情)。
    猜你喜欢
    • 2012-10-01
    • 1970-01-01
    • 2012-01-16
    • 2011-04-04
    • 2015-04-10
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    相关资源
    最近更新 更多