Re: CSS transform 中文字變形問題 — 拿掉點陣字形(Bitmap Strike)的 CSS3 Fonts 屬性

(再發一次到郵件群,上次那封因為有圖檔檔案太大沒庫存起來)
首先先給大家看一下我本來以為要解決的問題,在 FF5, WindowsXP 下的情形[1]
跟 Chrome12, WindowsXP 的情形[2]比起來不管是中文還是英文都有問題,不過這
似乎說明這個問題跟中文使用點陣字形無關,因為英文的字形是 Arial 是一個向
量字形(有錯請更正),另外,把字放大也不能改善這個現象。如果我沒理解錯誤
的話這好像是 FF 反鋸齒(Anti-aliasing)有問題的樣子,有人能提供在
Windows Vista 以上的狀況嗎?我看到一篇文章[3]裡提到了一些調整 Windows
Vista 以上 FF 反鋸齒的方法,目前還沒辦法嘗試。

[1]
https://lh3.googleusercontent.com/-rolIIVVtouk/ThKY3FNI3ZI/AAAAAAAAAEs/drUWCsEraJI/s800/ff-transformed-bitmap.PNG
[2]
https://lh3.googleusercontent.com/-8A3LrtW4RrI/ThKZsD8Qw_I/AAAAAAAAAE8/y6T6vN1EZL4/s800/chrome-transformed-bitmap.PNG
[3] http://blog.ginchen.de/en/2011/03/26/schriftglaettung-im-firefox-4/

Hax 在跟我研究 CSS 有沒有拿掉點陣字形的屬性的時候我以為要解決的問題是這
個,不過看來不是。所以要解決的是在不能反鋸齒的裝置(例如電子書 Bambook)
發生的問題嗎?沒有正確圖片的還蠻難理解要解決的問題在哪的。還是說就很單純
的是在某些情形下不用點陣字形比較好看?老話一句, 沒圖片很難有下一步動作。

我用了有內嵌點陣字形的字形也不能在 MacOSX 上的 FF 重現這個變形的現象、、、

(11/07/04 21:15), Yuan Chao wrote:
> 2011/7/4 Kang-Hao (Kenny) Lu <kennyluck@w3.org>:
>
>> 多個月之前裕波提出過 CSS Transform 會使得中文字變形的問題[1],而 Hax 提
>> 出的一個解釋[2]是因為中文很多字形在字體小的時候會使用點陣字形(bitmap
>> strike)[3](或者說是字形檔裡面的 EBDT、EBLC、EBSC 表[4])而不是向量部份
>> 造成的結果。(以上是對字形完全沒專業的人到目前為止的理解,如果有比較好的
>> 資訊請不舍指教)
> 這個應該是關係到UA字型描繪實作上的問題吧?至少目前就小弟所知在Linux下,
> 雖然都是使用FreeType,FF會遵循fontconfig的設定,而Chrome則是似乎一直有著無視相關
> (hinting and embedded bitmap font) 設定的bug。
>
> http://code.google.com/p/chromium/issues/detail?id=12179
> http://hyperrate.com/thread.php?tid=16031
>
> 這些個bug不修的話,是不可能讓我把主要瀏覽器換到chrome系列的!

感謝你提供的連結,特別是[2]裡提到了 3 個和點陣字形相關的 chromium 的
bug,可是它們的狀態都是 fixed,應該可以換到 chrome 系列了 xd。

[2] http://hyperrate.com/thread.php?tid=18678#18678

>> 這感覺起來是很低層次的操作,而我跟 Hax 研究到目前為止 CSS3 Fonts 沒有這
>> 樣的東西,連直接操作 OpenType feature 的低層次屬性
>> 'font-feature-settings'[5] 裡面似乎沒有這個 feature[6]。這當然可以用
>> webfont 解決(給沒有EBXX部份的字形),不過似乎不是很好的解法,也不能解決
>> 內建字形的問題,所以標準看來是有缺陷的。這裡可能有幾種解法:
> 這裡應該是由font rendering engine來處理,其實用不著和底層API打交道,
> 需要的只是提供相關的對應設定。

看不太懂這一段。

>> 1. 當 transform 的時候自動取消點陣字形
>> 2. 新屬性
>> 3. 新的 OpenType feature
>> 4. transform: rotate(0) 的時候不使用點陣字形
> 個人的淺見有兩個:要不就在UA裡面提供選項,讓使用者自行決定。
> 要不就提供在CSS的相關設定flag,讓developer決定?

一定是使用者的決定(FontConfig之類的)壓過網頁開發者的決定。本來想像中網
頁開發者需要這個 CSS 相關的屬性是因為只有網頁開發者知道網頁的哪個區塊會
之後會旋轉變形而可以事先把點陣字形拿掉,不過就像我講的,我根本沒法證明變
形現象跟點陣字形相關, 所以到目前為止都是空談。

當初討論這個問題的人如果有什麼參考圖麻煩詳細解釋一下。

>> 我跟 Hax 討論的時後,我是懷疑這個功能會不會因為太底層所以有實作困難(畢
>> 竟涉及到 EBXX 表的操作),不過他是說 FreeType 有這個 API,但是 Windows
>> 的情況是怎麼樣呢?(好像原本就只有 Windows 有問題,是 MacOSX 本來就沒去
> 主要還是UA的font rendering engine怎麼處理了?

我覺得現在最大的問題是「問題到底在哪裡?」


此致
Kenny

Received on Tuesday, 5 July 2011 05:15:45 UTC