字體真是個麻煩的東西,然後又是個重要的東西。為以更方的解決字體問題,就像上次推薦的《再談 Web 默認字體》,為了Pixel Perfect,我們不斷糾結。像支付寶在CSS Reset中是這樣寫的:
- body{font:12px Tahoma,Helvetica,Arial,'宋體',sans-serif}
而淘寶這樣寫:
- body, button, input, select, textarea {font:12px/1.5 tahoma,arial,'宋體',sans-serif;}
個人偏向於淘寶的寫法,顯然,button/input/select/textarea的字體都是要重設才會顯示正常的。這裡並不是為了討論這個,而是這裡面都有 tohama 這種字體,它是今天的主角。因為字體顯示好,也因為導致 BUG 而被搬上台面。讓我們來先看一個Demo:
Here: IE8 Tahoma Font-family bug
如果你是從 IE8 打開,將會看到第一個按鈕有錯位。如標題所說,你懂的,這就是 Tahoma 給我們帶來的問題。而解決方案很簡單,就是避用 tahoma 字體,其他的隨便。比如:
- body, button, input, select, textarea {font:12px/1.5 arial,'宋體',sans-serif;}
在支持沒有那麼完美的狀況下,這樣的解決方式可以說是完美的。即使你像我一樣也有一套 Hack 兼容方案,還是不推薦使用暴力方式,我們的目標是、也應該是更有效、更優雅。
然後,其實 hack IE 8的時候,可以考慮 selector{property:value\0;}
這樣的方法來,因為這是 IE8+ 獨有的方法。Hmmm… 多好,雖然有點暴力。最後,推薦一下鴿子工友。解決這個 Bug,還得歸功於他。
——————————–
經過一條完美分割線從火星來到地球,囧,剛剛還測試了arial放在前面是可以的,而且早上測試過,不過,事實證明測試要更小心,要多次,不然可能刷出來的是緩存。事實的解決方法似乎是這樣的:
多謝幫助尋找真相的 Justice 和 默默同學,一個問到底,一個提供一個非中文的 IE8 顯示效果圖片。