代码之家  ›  专栏  ›  技术社区  ›  Forivin

某些计算机上不显示Unicode字符(六边形)

  •  1
  • Forivin  · 技术社区  · 12 年前

    我有个大问题。我刚刚更新了我的网站主页,显示了一个unicode六边形字符: ⬢ 又名U+2B22
    我把它放大了200像素,并用文字填充。它看起来不错,在我的电脑上也很好用。同时使用Internet Explorer(win8)和Firefox 28。
    我在5台不同的计算机上测试了它,但它在那里不起作用!在每台设备和一台计算机上使用Firefox 28和Internet Explorer(win7)进行测试,即使使用最新的Chrome。

    那么我做错了什么?它怎么可能在我的FF 28和5个不同的设备上工作?

    我已经尝试过:

    <?php header('Content-Type: text/html; charset=utf-8'); ?>  
    

    并且直接在HTML中:

    meta http-equiv="content-type" content="text/html; charset=utf-8" 
    

    U+2B22不是utf-8的一部分吗?

    在这里自己尝试一下,滚动到下面: http://jtauber.github.io/articles/css-hexagon.html
    对于我的电脑,它看起来像这样: http://250kb.de/u/140401/j/RzN1lYTL8fLJ.jpg
    在其他设备上,情况如下: http://250kb.de/u/140401/p/VEeerGhyv4lM.png

    我感谢任何帮助!

    2 回复  |  直到 12 年前
        1
  •  6
  •   Jukka K. Korpela    12 年前

    字符U+2B22黑色六边形仅包含在少数字体中。这些字体都没有随Windows或其他广泛使用的软件一起提供,因此在大多数计算机中,都没有包含它的字体。此外,即使系统中的某些字体有这种字体,浏览器也可能无法呈现该字符。有关更一般的解释,请参阅我的 Guide to using special characters in HTML .

    在这种情况下,字体设置为 font-family: "Helvetica Neue", Arial, Helvetica 。这些字体都不包含该字符,因此每个浏览器都会尝试使用系统中的其他字体,并按浏览器的顺序使用。在您自己的计算机中,您有一个包含该字符的字体。您可能已经下载并安装了它,或者它可能附带了一些软件

    你可以做的是,

    a) 指定,在 font-family 声明,已知包含该字符的字体列表。这可能有助于解决浏览器找不到字体的问题,但这无关紧要。

    b) 使用可下载的字体(网络字体,通过 @font-face ). 如果您只需要一个字符用于基本上非文本的用途,那么这将是过度的。包含U+2B22的字体通常较大。

    c) 而是使用图像,可能作为背景图像。这将是一个合理的选择,特别是因为您不会将U+2B22用作文本中的字符,而是用作某种背景。

    关于“U+2B22不是utf-8的一部分吗?”这个问题,字符实际上不是utf-7的一部分。相反,utf-8是字符的传输编码,所有Unicode字符(以及所有Unicode代码点)都在utf8中表示。此外,所述页面不包含U+2B22,而是作为字符参考 &#x2b22; ,这与字符编码无关。因此,这不是编码问题,而是字体问题。

        2
  •  2
  •   deceze    12 年前

    这些不工作的计算机没有安装包含此特定字符字形的字体。仅此而已。

    解决方案包括不依赖于用户安装了具有这种不寻常字符的字体,而是将其作为web字体提供(您可能需要创建),或者使用图像、SVG或画布。