2013-02-16 117 views
0

我想在我的网站上显示Interrobang(‽)字符。它适用于所有桌面浏览器,但不会显示在我的Android手机上。我已经尝试了文字字符和HTML实体&#8253,但都不起作用。我已经将我的字符编码声明为UTF-8。Interrobang在手机网站上不显示

我创建了一个jsFiddle来演示我的问题。在桌面上,Interrobang应该显示得很好;在我的手机上,它不起作用。

我怎样才能让这个角色显示,而不必包含一个特殊的字体呢?

回答

0

您提到的Wikipedia页面Interrobang指出,“很少现代字体或字体包含interrobang字符的字形”。这是不准确的 - 例如,在PC上,通常至少包含Palatino Linotype字体,而在现代PC中,所谓的Microsoft C字体也包含它(请参阅font coverage上的Fileformat.info页面)。但例如在Android中,通常只有Droid字体集合,并且它们没有这个符号。

因此,通过@font-face使用可下载的字体(网络字体)将是唯一的方法, Androids会显示这个字符(除了那些由用户安装了合适的额外字体的机器人,但这些不是你正在寻找的机器人)。

但是,除了使用图像之外,还有一种解决方法是使用“?”和“!”字符以某种方式重叠。你可以做到这一点通过使用负号letter-spacing或在声明为嵌入块的元素中包含的字符上设置负边距。不过,也许最好的拍摄是用定位:

<style> 
.bang { position: relative; } 
.excl { position: absolute; left: 0.1em; } 
</style> 
<span class=bang>?<span class=excl>!</span></span> 

0.1em的值是一个猜测,但可能是一个相当不错的一个。重点在于,在大多数字体中,“!”的前进宽度比“?”的前进宽度小,因此需要向左推一点以便适当地“重击”问号。这个值似乎对Droid Sans和Arial都有效。

+0

非常感谢 - 我用'left:0.04em'实现了这个建议,经过一些调整后,它就像预期的那样工作。 – LonelyWebCrawler 2013-02-16 16:54:35

0

这个角色绝对不是日常使用。如果你的手机没有显示它,这意味着没有人会将它添加到正在使用的字体中。

+0

我不确定这里发生了什么。我正在使用Libre Baskerville,所以如果它显示在桌面上,为什么不能在移动设备上使用? – LonelyWebCrawler 2013-02-16 04:42:07