Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检测网页上是否正确显示Unicode字符?_Javascript_Html_Unicode_Windows Xp - Fatal编程技术网

Javascript 如何检测网页上是否正确显示Unicode字符?

Javascript 如何检测网页上是否正确显示Unicode字符?,javascript,html,unicode,windows-xp,Javascript,Html,Unicode,Windows Xp,我正试图在网站上使用一个相当深奥的Unicode字符——特别是“︙”。据我所知,Windows XP没有附带包含此字符标志符号的字体-虚拟PC IE 6测试图像无论如何都不会显示它 如果人们使用未安装Arial Unicode MS的Windows XP查看站点,是否有任何方法可以检测字符是否正确显示 建议将仅包含此字符的元素的宽度与包含不可打印Unicode字符的元素的宽度进行比较。不幸的是,在能够正确显示我的角色的浏览器中,两者的渲染宽度似乎相同。您试图做的实际上是不可能的,至少不是以安全的

我正试图在网站上使用一个相当深奥的Unicode字符——特别是“︙”。据我所知,Windows XP没有附带包含此字符标志符号的字体-虚拟PC IE 6测试图像无论如何都不会显示它

如果人们使用未安装Arial Unicode MS的Windows XP查看站点,是否有任何方法可以检测字符是否正确显示


建议将仅包含此字符的元素的宽度与包含不可打印Unicode字符的元素的宽度进行比较。不幸的是,在能够正确显示我的角色的浏览器中,两者的渲染宽度似乎相同。

您试图做的实际上是不可能的,至少不是以安全的方式

相反,您应该明确定义受支持的受众,确切地指定您将支持的浏览器以及不受支持的浏览器会显示警告

顺便说一句,不要为任何浏览器显示您未识别的警告,只为已识别为坏的浏览器显示警告

您可以添加嵌入式字体,但这只适用于某些浏览器,可能不适用于移动设备。我不建议您使用这样的
深奥的
字符

一个想法


注意:在上文中,我将浏览器称为浏览器和操作系统的组合。如今,大多数浏览器都能正确显示Unicode字符,但字体却不能,用户将看到框而不是正确的字符。设计良好的网页必须使用客户端计算机上现有的默认字体正确呈现。

我不确定您是否需要担心这一点。。。根据微软网站,Arial Unicode MS是为Windows XP自动安装的


使用嵌入式字体。你必须有4个版本左右的字体文件才能在所有浏览器中使用,但它可以在IE6和所有现代浏览器中使用,包括iOS移动设备


你可以上传一个TTF字体,然后下载整个软件包——所有需要的字体文件和CSS加上一个要测试的示例页面。我还没有找到一个不能使用此功能的浏览器(包括从当前版本返回的1-2版本,具体取决于浏览器)。

尝试使用⋮ (
和#8942;
),是同一事物的替代字符(垂直省略号)。我不知道为什么会有两个标志符号,它们略有不同;在我自己的测试中,︙(
&XFE19;
)使用圆作为点,而另一个使用正方形。不过,这可能因字体而异。无论如何,您必须将字体大小增加到荒谬的大小才能注意到差异。

但这不是浏览器的问题。这是字体问题。所有现代浏览器都可以使用Unicode,包括IE6。Unicode并不是异国情调。这不是不可靠的。它无处不在,在大多数情况下,它运行良好。问题是Windows XP没有附带包含大多数Unicode字符的字体。而且,正如oddy的链接所示,嵌入式字体也得到了很好的支持。@sorin:“现在大多数浏览器都能正确显示Unicode字符,但字体不能”-这取决于您对“今天”的定义。MacOSX于2000年问世;Vista于2006年推出,两款产品开箱即用。在某种程度上,停止支持老客户会变得很好。我可以这么做。相反,我试图找到一种方法来发现他们缺乏支持。我认为这比限制所有网站只使用已有10年历史的操作系统上支持的开箱即用的内容更合理。Shorty:你不能依靠字符大小来确定浏览器是否能正确显示字符,这太危险了。@sorin:可能吧(如果出了问题,似乎没有人会死)。不过我明白你的意思。我认为使用特定字体进行测试很重要。也许可以测试Windows XP是否存在。我有XP和Arial Unicode MS。不过,我刚刚检查了字符映射,但它没有U+FE19的字形。@Will:没有吗?天哪。它有50000个字形!啊,我认为该页面意味着Microsoft Office会如果安装在Windows XP上,则自动安装Arial Unicode MS。但我不认为Arial Unicode MS随Windows XP附带。您使用此字符的目的是什么?另外,您是否尝试过⋮;(U+8942)哪个字符似乎是同一事物的替代字符?@Will:holy moly,我想你已经破解了它。Lucida Sans Unicode(包含在Windows XP中)有一个字符的标志符号。如果你把它作为答案,投票和接受将像山腰下的泉水一样流向你。@will:哦,是的,我是这样使用的:
表示两个对象之间的范围。设计要求使用垂直字符,因为对象位于对象的上方和下方⋮.如果现在有人在这里绊倒,我建议考虑实际的三个点…并使用css旋转它们;类似于
#mydots{transform:rotate(90deg);}
将适用于IE10+和所有非ie浏览器。对于IE9支持,添加
-ms transform
。当然,仅仅因为Windows XP无法在默认状态下呈现此字符,就要求每个用户下载字体似乎有点难。font Squirrel是否允许您自定义字体,使其仅包括,例如,一个字形?我知道它有一些自定义功能ion(包括所有unicode字符或标准字符)。生成的字体相对较小,最好将其视为站点的自定义图像。它也会被缓存,因此只需下载一次。此方法的好处是您现在可以使用字体(在您的示例中为单字形)所有操作系统中的所有浏览器看起来都是一样的。至少尽可能接近,有些浏览器使用的是不同的