2014-02-18 78 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