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

标签 html css ascii font-face codepages

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

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

它应该是这样的:

enter image description here

最佳答案

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


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

ÔÕÖ×ØÙÚ

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

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

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


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

关于HTML/CSS 使用 DOS 代码页 437 字体/缺少字形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30359451/

相关文章:

html - 带有图像的 Flexbox 列

HTML/CSS 修复定位导致 div 重叠

javascript - 如何让不同高度的html div float 起来2

html - 滑动 CSS 动画没有在正确的区域翻转

html - 无法根据屏幕分辨率应用样式表

html - 图像框水平对齐

html - 为表格的所有行设置固定高度

c# - Java 到 C# - 从 jar 服务器发送/读取字节到 C# 客户端

terminal - 通过打印字符来清除屏幕?

c++ - 如何将无符号整数值解释为四个字母的单词?