HTML/CSS使用DOS Codepage 437字体/缺失的字形。

3
我想在HTML网页上使用经典的DOS Codepage437字体。我已经用CSS包含了一个*.ttf文件,普通字母可以正常显示。但是有一些缺失的字形被解释为控制字符(例如:D这样的好看的dos风格表情符号或日元符号)。如何强制浏览器显示ttf文件的0x0E字形?
请查看链接到示例html文件(ttf文件可以在源代码中找到)
应该看起来像这样: enter image description here
1个回答

1

简而言之:您无法在网页上使用DOS 437字符集。


一个问题是浏览器将数字字符引用解释为Unicode代码点。在您的示例页面中,È始终表示U+00C8 LATIN CAPITAL LETTER E WITH GRAVE。
现在,您正在使用一种字体,其中U+00C8看起来像而不是È,但这并不重要。
或者更确切地说,它很重要,因为它只会导致混淆。您说:“普通字母确实可行”,但它们并没有“可行”;它们只是被显示出来,但结果并不符合您的期望。
作为测试,请尝试显示
ÔÕÖ×ØÙÚ

使用您的字体。然后双击第一个字符以选中整个单词。您会发现,只有前三个字符被选中,因为ÔÕÖ是一个单词。×不是一个字母,因此不属于单词,无论字体如何!

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

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


那么解决方法就是创建一个Unicode兼容的字体,将字形映射到正确的代码点上(位于代码点U+255A,等等),并通过在HTML中引用这些代码点来使用它们(╚╚)。当然,您也可以使用UTF-8,在编辑器中直接输入

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接