【问题标题】:HTML/CSS use DOS Codepage 437 font / missing glyphsHTML/CSS 使用 DOS 代码页 437 字体/缺少字形
【发布时间】:2015-08-02 06:40:08
【问题描述】:

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

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

它应该是这样的:

【问题讨论】:

    标签: html css ascii font-face codepages


    【解决方案1】:

    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 并在编辑器中输入

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-11
      • 2014-08-03
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      • 2014-12-11
      相关资源
      最近更新 更多