HTML / CSS使用DOS Codepage 437字体/缺少字形

时间:2015-05-20 20:10:48

标签: html css ascii font-face codepages

我想在HTML网页上使用经典的DOS Codepage437字体。我已经包含一个带有CSS的* .ttf文件,普通字母可以正常工作。但是有一些缺失的字形,被解释为控制字符(例如漂亮的dos样式表情符号:D或中国日元符号)。如何强制浏览器显示例如字形0x0E的ttf文件?

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

这应该是这样的:

enter image description here

1 个答案:

答案 0 :(得分:0)

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

一个问题是浏览器将数字字符引用解释为Unicode代码点。在您的示例页面中,È始终表示U + 00C8 LATIN CAPITAL LETTER E WITH GRAVE。
现在您使用的字体U + 00C8恰好是而不是È,但这并不重要。
或者更确切地说,它确实很重要,因为它只会造成混乱。你说,"正常的字母可以正常工作"但是他们不会工作&#34 ;;它们只是简单地显示出来,但结果并不是你所期望的 作为测试,尝试显示

ÔÕÖ×ØÙÚ

使用你的字体。然后双击第一个字符,选择整个单词。您将看到只有前三个字符被选中,因为ÔÕÖ是一个单词。 ×不是字母,因此不是字的一部分,无论字体是什么!

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

您的网页存在另一个不相关的问题,即您为字符集指定了UTF-8,而不是IBM437
浏览器没有义务遵守不常见的代码页,因此如果你改变它,它就不会神奇地开始工作。此外,像È这样的数字引用仍然意味着 Unicode 代码点200而不是字体中的第200个字形。
所以在这种情况下,它确实与你指定的字符集有很大不同。

然后,解决方案是创建一个Unicode兼容字体,其字形映射到正确的代码点(位于代码点U + 255A,依此类推)并通过引用所述代码点来使用它们在HTML中(╚╚)。或者当然,使用UTF-8并只需在编辑器中键入