2013-02-21 74 views
1

有一个网站,其中将包含大量异国语言的文本片段。他们将需要几个特殊的Unicode字符。为特殊字符设置字体的网页安全方法

我需要一种方法,确保每个主要操作系统中的每个主要浏览器都能正确显示每个特殊字符。

如果我使用标准的Web安全模式,如“Times New Roman”,Times,serif;“,是否有可能特殊字符在不同的机器上看起来不同?

编辑:我实际上并不需要使用Unicode字符的全部。尽可能使用特殊字母的较小但受到广泛支持的子集也可以这样做,如果它们可以安全使用的话。

编辑2:我想要的是一种方法,我可以指定(并使用)尽可能多的特殊字符,在所有主流浏览器和操作系统中都能正确呈现,以防止出现文本充满异国情调的语言充满了问号,或者错误地呈现了人物形象。

+0

我删除了我的答案,因为我完全误解了这个问题。我不确定浏览器支持,但我确定它不依赖于您选择的字体。浏览器始终忽略特殊字符的字体。 – 2013-02-21 17:00:20

+0

他们如何渲染它们?当我说特殊字符时,我的意思是特殊语言中的特殊字母。 – mimrock 2013-02-21 17:03:18

+0

如果选择的字体没有字符,例如''',浏览器将显示带有一些硬编码替代字体的字符,或者显示[Unicode字符'替换字符'(U + FFFD)] (http://www.fileformat.info/info/unicode/char/fffd/index.htm)。我不会错误地渲染它(除非它是一个非常糟糕的浏览器)。 – 2013-02-21 17:07:01

回答

2

您需要使用@font-face可下载的字体(网络字体)或几种此类字体。正确使用,现在几乎所有相关的浏览器都支持该技术。困难的部分是决定字体,具体的解决方案取决于所需字符集。有关一般信息和一些提示,请参阅我的Guide to using special characters in HTML

“Web安全字体”不是。确实,大多数系统都有一种叫做Times New Roman的字体,虽然其字符集有所不同,例如Androids没有得到它。但是,Times New Roman在角色覆盖方面相当不足。

1

要使任意两个符号逐像素地完美呈现,这是不可能的,或者至少是非常困难的。举一个简单的例子,在OSX和Windows之间,你会发现任何给定字体的字体重量有很大的差异。但似乎你的担心只是避免完全用另一个字符替换字符。例如,不支持的字符被替换为问号或框。

如果这是真的,第一步就是找到一个包含所有你想要的字符的字体。如果该字体正好是'web safe font' —也就是说,一种字体是最常用的操作系统—的标准,然后继续使用它。

如果该字体碰巧不是一个网页安全的字体,@font-face它。这允许任何支持@ font-face的浏览器显示您引用的任何字体。

请注意,如果您打算这样做,您需要知道字体的许可证。你不想绕着@字体面对本地托管的Proxima Nova。

关于支持的问题,@font-face有显着的浏览器支持。这是a good article on @font-face cross-browser support

当然,这只是如何实现跨浏览器解决方案的方法。如果你打算问的是'我该怎么做,我应该用什么字体?'呃...这是一个不同的问题!

+0

我不需要像素完美的渲染。你会建议什么字体? – mimrock 2013-02-21 21:52:33

+0

获得像素完美渲染的唯一方法是使用图像。现在,[文字不会呈现相同](http://css-tricks.com/font-rendering-differences-firefox-vs-ie-vs-safari/) – jmeas 2013-02-21 22:50:50

+0

我不需要像素完美的渲染。我只是想避免在某些机器中出现的问号和完全错误的字符出现在文本中。 – mimrock 2013-02-22 09:21:54

1

对于外来语言?你不能保证它,因为许多用户在他们的系统上不支持外来语言。即使使用@ font-face,标准的美国或欧洲Windows计算机也不会正确显示阿拉伯语或某些其他语言,因为缺少这种支持,这不仅仅是缺少字体。

看看韩国,沙特阿拉伯,中国等等的维基百科文章 - 它们都带有一个警告框“本文包含[语言]字符如果没有适当的渲染支持,您可能会看到问号,框或其他符号“。如果有可能解决,他们会解决它。

因此,您唯一的选择是使用异国语言的文本图像 - 这就是Omniglot所做的,参见e。 G。 http://www.omniglot.com/writing/akkadian.htm - 或者显示维基百科这样的文字,以及一个链接教人们如何激活对这些语言的支持。