某些计算机上未显示Unicode字符(六角形)

时间:2014-04-01 19:03:36

标签: html unicode utf-8 device

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

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

我已经尝试过:

<?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 个答案:

答案 0 :(得分:6)

字符U + 2B22 BLACK HEXAGON仅包含在少量字体中。这些字体都不附带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-8的一部分。相反,utf-8是字符的传输编码,所有Unicode字符(以及所有Unicode代码点)在utf-8中都有表示。此外,提到的页面不包含U + 2B22,而是包含字符引用&#x2b22;,这与字符编码无关。因此,这不是编码问题,而是字体问题。

答案 1 :(得分:2)

这些无法使用的计算机没有安装包含此特定字符的字形的字体。就是这样。

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