网络浏览器引擎和特殊字符渲染

4
我很惊讶。Chrome、Safari、Opera和Firefox都有自己的HTML字符实体版本。我只是不明白符号的呈现是由浏览器内部定义的。因此,在我的浏览器应用程序代码中,有关于雪人HTML实体的渲染规范。

enter image description here

或者比较Chrome或Safari和Firefox之间的回收标志和双方块标志的几乎激进的大小差异:http://marckremers.com/SO/test.html 在Opera中,它甚至不显示双方块。

我非常困惑,并且实际上对浏览器公司的短视感到失望。在这里,他们有一个绝佳的机会为所有UI提供标准化的符号,供Web开发人员和设计师使用。但是没有,他们都制作了自己奇特的版本,这意味着我们不能依靠它们进行一致的Web设计。

我的问题:是否有一种方法可以一致地显示这些符号? 是否有官方的雪人?(只是作为示例,它可以是可用的数百个符号之一)

最后,请在此处调查渲染的巨大差异(通过浏览器快速翻阅即可看到)

http://copypastecharacter.com/

编辑 进一步查看后,显然与Webkit、Gecko和Presto(Opera)渲染引擎有关,而不是不同的浏览器。Safari和Chrome渲染的雪人完全相同。


2
这个 downvote 不是我给的,因为这是一个有趣的问题,但这不是浏览器的问题,而是字体的问题吧?你能否尝试指定一个 font-family - Pekka
2
我稍微修改了'marck...'的URL,将hmtl改为html。希望这是你想要发布的内容... - home
不是这样的。我简直不敢相信有些人。这是一个完全合法的问题。字体与此无关。事实上,我已经指定了Arial来证明这一点。 - RGBK
你应该始终使用字符实体而不是符号。 - david
@home 理解了,可能是标准本身的问题,而不是浏览器一开始就没有标准可用。只是想知道这种自由的方法背后的故事。看起来很辛苦,要为数百个实体设计图案。有趣的是,Safari 和 Chrome 都使用相同的雪人,这意味着它是基于 Webkit 渲染的。 - RGBK
显示剩余2条评论
1个回答

3

一个答案是... 雪人的十进制表示为9731,如在http://copypastecharacter.com/上指定:

<span data-decimal="9731" data-entity="&amp;#9731;" data-id="45739" title="Snowman">☃</span>

它的十六进制表示为0x2603。在unicode.org/charts上查找此字符告诉我们应该查看此文档
其中字体部分说明:
引用代码图表中使用的参考字形的形状并非规定的。实际字体应该会有很大差异。这些图表中使用的特定字体由许多不同的字体设计师提供给Unicode联盟,他们拥有这些字体的版权。 结论 这些字形没有标准化,您不能依赖其图形表示。它可能取决于字体以及您用于显示符号的应用程序(应用程序或浏览器可能使用内部非操作系统字体)。顺便说一下:在我的计算机上(Ubuntu 11.04),在Firefox(7.0.1)和Chrome(15)中,这些符号看起来完全相同。
标准向我们展示了两个不同的雪人-有和没有背景雪花 :-)

谢谢大家。我认为这是一个相当不错的解释。我的解决方案将使用SVG结合Ample SDK,它可以让SVG图形在所有浏览器中使用,甚至包括IE 5.5。谢谢。 - RGBK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接