Re: 專為中文(漢字)網頁加入的CSS屬性——底線跳脫

(11/03/05 12:53), Hung Ashung wrote:
> 這個應該是設置字型間距來解決的,通常字型間距為零,如果下劃線縮短,會造成視覺上的不對齊。

我一開始也是覺得「letter-spacing」是 CSS3 Text 草案中已存在的解法,不過
後來發現瀏覽器不支援(這是瀏覽器的錯,不是標準的錯),請參考[1]的測資
3~5,總之就是底線一定會畫 到<u>A</u><u>B</u>的中間,跟「letter-spacing」
無關,這跟現 在的 CSS3 Text 的草案不一樣。有興趣的人也可以看看 Gecko 的
相關Bug[2](所以真的是實作的問題 :p)。

不過這個法會有以下的兩個問題:
1. 感覺為了底線不相連擴大*所有*字的間距真的蠻奇怪的,我不覺得傳統排版真
的是這樣做的。我自己看起來是覺得底線比字短了一點,但是這是不是錯覺我不知
道。因為也很有可能是像 Ethan 說的是用「細小空白」處理。請大家一起來檢視
這張照片吧[3]。
2. 當我們用的字體有合字(literature)的時候(比如說行書),不知道隨便在
字根字之間加「letter-spacing」會不會破壞合字。不過我 們恐怕可以暫時忽略
這個出現可能很低的狀況、、

[1] http://www.w3.org/People/kennyluck/Test/underline-cont
[2] https://bugzilla.mozilla.org/show_bug.cgi?id=299943
[3] http://www.go8.com.tw/files/4168%200004.jpg

> 而且這些書字型之間都是有一定間距的。

這句話如果有個證明的話就似乎說明「letter-spacing」是正確的做法。

> 現在即使定義letter-spacing,下滑先還是會連在一起。定義letter-spacing會導致英文字母間有間隔,這不符合傳統排版。所以建議加入一個CSS可以只設置CJK字型的間距,而不改變英文的間距,例如
> cjk-letter-spacing.

這個建議好像很有趣。有其他狀況是需要這個新屬性的嗎?


(11/03/05 8:04), Ethan Chen wrote:
> [恕刪]
>
> 為了「解決」(不是「處理」)這個問題,Kenny希望在CSS 3中加入的「text-
> decoration-skip」屬性引入一個值「decoration-boundary」。可讓底線稍微向
> 左縮短 (0.01em?直排則向上),底線便不再相連。
>
> Kenny的解決方案可行性是較高的,因為「text-decoration-skip」是CSS 3的新
> 屬性,不需要更動什麼現行的東西。
>
> 可我個人是覺得,預設的底線「本來」就該比現行的短一些,u + u(不留空
> 白)是含有「語義」的,視覺上也需要能區別。所以W3C的文件中應該定義底線
> 的長短(而不加decoration-boundary),並規定 底線元素相鄰時的顯示狀況
> (當然這工程比較浩大)。

Ethan,其實我看不太懂你這段的意思,你幫我看看我最後的總結是不是你的意思。



我想補充一下,現在的草案已經因為這個議題,在文字修飾[4]那個部份加入了以
下敘述(編輯們選擇的解法):

[[The UA should place the start and end of the line inwards from the
content edge of the decorating element so that, e.g. two underlined
elements side-by-side do not appear to have a single underline. (This is
important in Chinese, where underlining is a form of punctuation.) ]]

(CSS引擎應該將文字修飾的線畫在被裝飾元素內容邊的裡面,舉例還說相連的底
線不會被當成是單一底線(中文把底線當成一種標點符號,所以這在中 文很重要))

也就是說跟老貓的意見相同。不過別忘記網頁上的超連結的底線也是用 CSS 引擎
畫的,所以儘管是比如說 0.01 em 好了,我還是有點難想像世界上的*所有*超連
結的底線都因為這個新建議縮短了 xdd 。另外因為瀏覽器已經把底線元素的內容
邊畫滿很久了,說不定也有某網頁是假設相連的底線是被當成單一底線的、、、

[4] http://www.w3.org/TR/2011/WD-css3-text-20110215/#decoration

>
> 也就是說,我認為現行的底線長短是錯的,畢竟這種情型可能不是沒有:
>
>> Circle out each of letter P:
>> 1) Purple => <u>P</u>ur<u>p</u>le;
>> 2) Apple => A<u>p</u><u>p</u>le.
>

可是也有可能有這種例子:

<u class="red">R</u><u class="organge">A</u><u class="yellow">I</u><u
class="green">N</u><u class="blue">B</u><u class="indigo">O</u><u
class="purple">W</u>

然後網頁作者是預期全部連起來的(這是假例子,假如真的有的話請提供!)


== 解法一覽 ==
1. 假如一般的排版都是像 Ethan 說的用插入空白法,那似乎用 Ethan 的 u+u
{margin-left: 0.01em} 就好了,不需要新標準。

2. 假如一般的排版是 Ashung 說的那樣,那可能需要 cjk-letter-spacing ,不
過要定義這個屬性跟其他 spacing 屬性的關係會是大工程。

3. 現在這樣全部的底線都縮短一點。似乎是老貓的意見。

4. 照 Ethan 說的只有相鄰的的時候縮短。個人是認為這個做法的實作有難度。

5. 我的 text-decoration-skip: decoration-boundary


有錯誤請直接指證!我還蠻不太清楚 Ethan 是傾向於 3 還是 4 的、、、不過我
同意 pingooo 講的,了解現在紙上排板是怎麼做的會對了解這個議題很有幫助。


此致
Kenny, 中文興趣小組W3C連絡人
推特: http://twitter.com/kanghaolu
噗浪: http://www.plurk.com/kennyluck
新浪微博: http://t.sina.com.cn/1950042164 (還不是很有東西)

Received on Saturday, 5 March 2011 19:39:09 UTC