Re: 'text-spacing' 有關中英間隔部份的問題探討(原: 中英文字中的間隔)

(12/04/28 2:34), 梁海 wrote:
> 一、為什麼至今沒有人用 'text-autospace'?  
> 
> [恕刪]
>
> 7)「對 IE 的實作不滿意」这一条,因为我暂时还没用过这个属性,不知效果如
>    何,也就不知其他人的想法了。
> 8) 甚至我现在得知了这条属性也想不出什么时候能用上它(IE-only……)。

反正舊規範這邊唯一能想辦法改善的恐怕也只有也只有 7),IE 的話應該可以把使
用者樣式加上這個當作「為什麼你們就是不能加個空格呢?」的替代品。我平常沒
用 IE(也沒用 Windows),不知道能不能找一些朋友(octw?)幫忙做一點測試,
不知道 IE 要加使用者樣式是不是很蠻煩、、、

> 二、屬性本身的命名
> 
> 我觉得还不错,算是很精到的概括了。
> 相比之下,Adobe InDesign 的相关功能是归入「标点挤压」的,很怪异(中西
> 文间空格、段首空格也都由「标点挤压」管理)。
> Text 意义也很适合中文和日文,因为我们没有明确的 letter 和 word。
> 不过 text 给人的感觉确实是成串的文本,但这个属性还处理标点挤压——
> text 和标点的关系确实有点别扭。

好像之前的版本 'text-autospace' 和 'punctuation-trim' 是兩個屬性,所以弄
成 'text-spacing' 和 'punctuation-trim' 兩個屬性也是一個選擇。

> 但总体还是相当不错,我暂时想不到什么更好的。

+1

> 三、屬性取值的命名
> 
> 难不难拼这个事情我倾向于不考虑……(「覺得 'integer' 都很難拼了」…… >
Kenny 你又在卖萌了……)

原來這樣叫做賣萌啊。我一般的確是覺得 CSS 取值用的單字應該在國中英文的等
級。另外這也不只是難度的問題,'ideograph' 比 'cjk' 或是 'han' 長很多啊。

> 之所以用「ideograph」,应该主要是为了和 Unicode 术语一致吧。Unicode 当
> 初选这个词可能就已经着重考虑了「政治正确」的问题——「ideograph」这词
> 从学术上讲也是不太恰当的。
> 
> 我理解「alpha」指的是广义的「alphabet」(拼音文字),这是从 script(文
> 字)角度做的分类,和「ideograph」(表意字)相对。这个措词相当严谨。
> 「latin」不行,因为「latin」只是 Latin/Roman alphabet,不包括该
> character class 同样包含的 Greek、Cyrillic 等狭义 alphabet,也不包含
> Arabic、Devanagari 等广义 alphabet。

反正這種東西怎麼稱呼都會有一部分的字符不嚴謹,所以我個人是覺得好記就好
了,'alpha' 是 'alphabet' 的縮寫這事我一直沒有注意到(絕對不是賣萌,我相
信有很多人沒注意到 'w' = 'double u' 的),我一直只意識到 'alpha' 是
'alphanumeric' 的前面,所以感覺不是很好記。

所以、、、我們說「中英混雜」嘛,'western' 怎麼樣?

> 「numeric」确实比较奇怪,不知是不是 Unicode 术语。平常确实都说
>「numeral」。不过「number」肯定不行,它指的是「10」这样的数字,不是
>「1」、「0」这样的数字符号/字符。

'numeric' 應該是 'alphanumeric' 的後半部吧,不過拆成這樣我看也沒有比較好
記、、、

'numeral' 的確比較好,那 'digit' 如何?

> 我基本支持现在的取值命名,仅仅觉得「numeric」似乎该改成「numeral」
> 。「ideograph」这个,为了和 Unicode 协调(这个属性和 Unicode 的关系非
> 常密切,如果术语不统一,会更麻烦),现在这样就挺好了。

如果可以的話不知道有沒有辦法做個統計。我的意見不怎麼重要,反正我也不是做
Web 開發的。

> 四、'cjk-mode'?
> 

> 「我覺得 'ideograph-alpha' 跟 'ideograph-numeric' 同時使用的可能性比單
> 獨使用一個高」——这个假设不一定对,参见 [1](链接在上文里)。在数字两
> 侧留空格的必要性比较弱,不少人不在数字两侧留空格(最典型的例子就是:
> 「2012年1月1日」vs「2012 年 1 月 1 日」)。

但是你在你的回答裡:

[[
  InDesign 的默认设置是 1/4 的全角空格宽度,也就是约等于一个半角空格。
]]

你也是加了一個空格。這個假設成立與否有沒有專業人士可以幫忙提供一下意見?

一個類似的問題:MS Word 和 InDesign 的預設處理是怎麼樣的情形?「為什麼你
們就是不能加個空格呢?」呢?

> 我认为为此提供这样的等价取值不太必要。取值选项平实一些比较好。

我只是覺得假如一般情形兩個都要加,那麼 'text-spacing: ideograph-alpha
ideograph-numeric' 實在是太長了,我覺得 'text-spacing: cjk-mode' 很不錯
啊,需要微調的人很多嗎?

> 四之一、'cjk-puntuation'?
> 
> Kenny 习惯在属性名两侧用的这个「引号」是 U+0027 APOSTROPHE('),相关
> 的还有一个 U+0022 QUOTATION MARK("),这两个(又称「直引号」、
>「straight quote」等)是纯粹的西文标点,中文是不用它们的。中文用弯引号
>(“ ‘ ’ ”)或直角引号(「『』」)。所以我把「'alpha'」这样的写法理
> 解为在文字/语言边界上随内侧习惯使用引号,目前的规范草案中确实也是把
> U+0027 APOSTROPHE 和 U+0022 QUOTATION MARK 这两个 [M*] 归入
> non-ideographic letters class 的。

等等,這個地方我們對這裡的狀況好像有不同的認識,Python3.2 是這樣告訴我的:

[[
  >>> unicodedata.category("'")
  'Po'
  >>> unicodedata.category("\"")
  'Po'
  >>> unicodedata.unidata_version
  '6.0.0'
]]

所以是一個 [Po]。

> 这样,中文文本中混杂的「' " ( ) .」
> 等标点都能和西文字母有一样的行为,似乎就满足需求了?
> 但有个问题:中文标点里,弯引号(“ ‘ ’ ”)、省略号(……)、间隔号
>(·)、破折号(——)等标点所用的 Unicode code point 和西文是共享的。弯
> 引号(“ ‘ ’ ”)和间隔号(·)都已经特地加入各 fullwidth *
> punctuation class 了;但省略号(……)和破折号(——)似乎没有得到处
> 理,于是它们就被分到 non-ideographic letters class 了,似乎需要修正。

同樣,這些部份好像都是 [P*] 的東西。

> [恕刪有關 Ubuntu 翻譯誇號]
> 
> 五、原來就有空格的網頁如何處理?
> 
> 不赞成自动校正,自动校正波及面太广,使用户难以过渡到使用这个 CSS 属性。「force」可以考虑。

不反對,不過這個部份應該多做一點實驗。

> 六、1/4em 是不是好的預設間隔?
> 
> 中西文间空格样式有两种思路:
> 
> 1) 空格宽度为 1/4 em。
> 2) 空格宽度与当前字体的空格宽度一致——也就是中西文间空格的样式与与当
> 前字体的空格的样式一致。目前大家习惯的手动空格就是这样的效果。我也更偏
> 好这一种。
> 
> 如果「覺得 1/4em 有點窄」,那说明当前字体(可能是 font-family 列表里靠
> 前的西文字体,也可能没有西文字体、就是中文字体)的空格比 1/4 em 宽(比
> 如宽到 1/3 em 左右)。但大多数西文字体(比如 Arial、Helvetica)的空格
> 确实都很接近 1/4 em。
> 如果遇到空格很宽的西文字体,比如 monospace 字体,1/4 em 的中西文间空格
> 会很难看。这也是我为什么第换第 2 种思路(空格宽度与当前字体的空格宽度
> 一致)。
> 所以我在想,应当根据当前字体来决定 ideograph-alpha 等取值增添的额外间
> 距量。

具體一點,你的意思是說規範這裡:

  # ‘ideograph-alpha’
  #
  # 在 ideographs 和 non-ideographic letters 的 run 之间增添 1/4em 的额
  # 外间距。

應該改成

  | ‘ideograph-alpha’
  |
  | 在 ideographs 和 non-ideographic letters 的 run 之间增添當前字型一個
  | 的空白(U+0020)的间距。

?

支持,不過這個和日文排版標準不合,有得吵的。

> 七、適用的元素
> 
> 「若额外间距应用至某一个字形,则间距由包含该字形的最内侧元素决
> 定。」(原文为「If the extra spacing is applied to a particular
> glyph, then the spacing is determined by the innermost element
> containing that glyph.」)——其实我不太明白这句话指的是什么情况……似
> 乎就是说任何一个 glyph 的间距调整都由最内侧的元素决定?前面「在元素边
> 界……」那句话说的就是元素边界上的间距由边界外侧的元素决定?

CSS3 'letter-spacing'[1]這裡有一個很好的例子:

  # EXAMPLE 15
  #
  # For example, given the markup
  #
  #   <P>a<LS>b<Z>cd</Z><Y>ef</Y></LS>g</P>
  #
  # and the style sheet
  #
  #   LS { letter-spacing: 1em; }
  #   Z { letter-spacing: 0.3em; }
  #   Y { letter-spacing: 0.4em; }
  #
  #   the spacing would be
  #
  #   a[0]b[1em]c[0.3em]d[1em]e[0.4em]f[0]g

(等你來翻譯!)

'text-spacing' 同理。

> 「這其實是矛盾的」指的是什么呢?

就像在 CSS2 中,'letter-spacing' 也是只適用於快容器,但是在 CSS3 就改成
行內也可以用,並加上了「则间距由包含该字形的最内侧元素决定」的這些話。

所以加這些話但是不把「適用於:」改掉是矛盾的。

> 我确实也觉得应该允许在 inline 上应用这个属性,不知目前限定在 block container 是为什么。

'letter-spacing' 這個就有瀏覽器開發者在說不好實作了,所以就是實作難度問
題。順道問一下 InDesign 可以做這種行內一部分的「标点挤压」嗎?

[1] http://dev.w3.org/csswg/css3-text/#letter-spacing

> 八、字符類別

抱歉,我有事情要出去,這個部份之後回覆。

> 天哪终于写完回复了……
> 从 GitHub 把翻译移过来没有问题,我每次翻译完一部分就告诉你一声。

感謝!不過也歡迎用 wiki 做一些意見統計之類的,取值命名這種東西老實說多討
論也不一定有什麼結論,直接投票可能比較簡單、、、

> 好的,我有空再看看两年前那个讨论串。

如果你沒把之前的郵件刪掉就請你直接回覆那些信了!


Kenny

Received on Friday, 27 April 2012 23:32:58 UTC