2014-02-18 121 views

回答

2

在屏幕截图所示的复制文本的第一个字是“斯考尔”,通常看起来很正常,但不是:“一”是真的两个字符,一个基本的拉丁字母“a”,后面是U + 030A COMBINING RING ABOVE。尽管这是正确的,并且与Unicode标准中的正常“can”“正常等价”,但事实却更加模糊。

虽然规范等价序列“预期”呈现相同,但这通常不会发生。首先,正在使用的字体可能不包含U + 030A,然后可能会发生奇怪的事情。而且,对于软件,在Unicode标准或HTML规范中,确实没有对U + 030A等字符的一般要求。

这是一个通用的W3C政策,虽然不是HTML规范或草案的一部分,但使用规范化表单C.这包括像“å”这样的字符用他们自己的代码表示的原则,而不是作为基本字符和组合变音标记的对。见Character Model for the World Wide Web 1.0: Normalization(一个工作草案,可能会和可能会大幅改变,但正常化原则可能得到广泛支持)。

在这种特定的情况下,下面的CSS声明适用于文:

font-family: DIN,Arial,Helvetica,sans-serif !important; 

这里会发生什么事是,DIN字体用于基本的拉丁字母,而不是U + 030A,因为这字符在DIN字体中没有字形。 Arial字体用于它。一般来说,当您将来自一种字体的基本字符与来自另一种字体的组合标记混合使用时,您应该预期会变得更糟。

最简单的解决方案似乎是使用“å”作为单个“预综合”字符U + 00E5而不是双字符序列。 DIN字体包含它。

另一个解决方案是放弃使用DIN。当使用Arial时,现代浏览器中的组合标记可以正常工作,因为现在它将用于来自相同字体的基本字符。

请注意,您可能与其他字符有类似问题,如“é”(e带尖锐重音)。

+0

它工作!我不知道“两个字符”来自哪里,但它可能是一些文本编辑的废话。改变为真Å修复了它。从未见过这样的事情,所以再次感谢你。 – user977101

+1

它可能来自某些软件执行的某些规范化(以分解形式)。戒指现在放置好,字符来自DIN字体。但是现在在Firefox中(Win 7)有一个不同的问题:戒指的上半部分被切断。增加行高无助于事。当字体大小小于15px时,这似乎发生在DIN上。 –

+0

非常感谢您的支持,我会研究FF问题。 – user977101