HTML/CSS 使用 DOS 代码页 437 字体/缺少字形

HTML/CSS use DOS Codepage 437 font / missing glyphs

我想在 HTML 网页上使用经典的 DOS Codepage437 字体。我包含了一个带有 CSS 的 *.ttf 文件,普通字母也能正常工作。但是有一些缺失的字形,它们被解释为控制字符(例如漂亮的 DOS 风格的笑脸 :D 或中国日元符号)。我怎样才能强制浏览器显示例如ttf文件的字形0x0E?

参见Link to example html file(ttf文件可在源代码中找到)

它应该是这样的:

tl;dr:您不能在网页上使用 DOS 437 字符集。


一个问题是浏览器将数字字符引用解释为 Unicode 代码点。在您的示例页面中,È 始终表示 U+00C8 带有坟墓的拉丁文大写字母 E。
现在您使用的字体 U+00C8 恰好看起来像 而不是 È,但这并不重要。
或者更确切地说,它 确实 重要,因为它只会助长混乱。你说,"normal letters do work",他们不会"work";它们只是简单地显示出来,但结果不是你所期望的。
作为测试,尝试显示

ÔÕÖ×ØÙÚ

使用您的字体。然后双击第一个字符,select整个单词。您会看到只有前三个字符得到 selected,因为 ÔÕÖ 是一个单词。 × 不是字母,因此无论字体如何,都不是单词的一部分!

对于32以下的数字引用也是如此,比如,其中字体可能在该位置包含,但浏览器知道这是Unicode U+0019 END OF MEDIUM,非打印字符。所以不会打印出来。

另一个与您的网页无关的问题是您为字符集指定了 UTF-8,而不是 IBM437
浏览器没有义务接受不常见的代码页,因此如果您更改它,它不会神奇地开始工作。此外,像 È 这样的数字引用仍然表示 Unicode 代码点 200 而不是字体中的第 200 个字形。
因此,在这种情况下,您指定的字符集并没有多大区别。


然后,解决方案是创建一个 Unicode 兼容字体,将字形映射到正确的代码点( 在代码点 U+255A,依此类推)并通过参考使用它们在 HTML(╚╚)中表示代码点。或者当然,使用 UTF-8 并在编辑器中输入