換行 <gt>以及 CSS ruby-align 屬性

Mariko Kosaka

HTML <ruby> 元素是強化文字呈現方式的強大工具,特別適用於東亞語言。這個元素可讓你在基本文字上方或旁邊顯示音標註解或其他補充資訊。從 Chrome 128 開始,Ruby 註解將可換行,您可以使用 ruby-align CSS 屬性設定 Ruby 文字樣式。

<ruby> 元素包含兩個主要部分:ruby base 是主要文字,而ruby text 是註解文字,並以 <rt> 元素標記。如以下範例所示,Ruby 文字可顯示在 Ruby 底層上方或下方。

<ruby>
  絵文字
  <rt>emoji</rt>
</ruby>
以英文發音做為日文原文的註解。
以英文發音做為日文基礎文字的註解。

<ruby style="ruby-position: under;">
  강남대로
  <rt>江南大路</rt>
</ruby>
在韓文下方新增中文註解
在韓文諺文下方新增中文註解。

為什麼稱為 Ruby?

當書籍使用可移動的字型排版時,這些可移動字型的大小會以點大小名稱定義,例如 Perl 和 Diamond。在英國系統中,Ruby 是指 5.5 點大小。日本的印刷業者使用與 Ruby 相近的大小 (5.5 點) 做為註解文字,因此開始在印刷品中將註解文字稱為 Ruby (或以音譯為 Rubi)。當註解文字包含在 HTML 中時,元素會定義為 <ruby>。Pica (pc) 是另一個在 CSS 中用來做為字型大小單位的歷史點大小名稱。

可換行的紅寶石

先前如果 ruby-base 或 ruby-text 比整行長,系統會個別包裝,導致版面配置出現問題。為解決這個問題,網頁開發人員通常會使用多個 Ruby 標記標示文字。有了可換行日文假名,您就不必建立這類標記。

在以下範例中,我們在古典中文詩上加入了注音 (中文羅馬拼音) 做為一組 Ruby 註解。目前的轉譯結果會在 Ruby 註解文字區域內換行。

在 Chrome 128 之前,使用長的 Ruby 註解文字時的轉譯結果。
在 Chrome 128 之前,使用長的 Ruby 註解文字進行轉譯的結果。

使用 Chrome 128 以可分行 Ruby 進行轉譯時,會將包裝的 Ruby 註解文字放在包裝的基礎文字上,以便達到理想的文字轉譯效果。

使用長的 Ruby 註解文字,在 Chrome 128 中產生的轉譯結果。
Chrome 128 渲染結果,其中包含長的 Ruby 註解文字。

在另一個日文文學例子中,換行會發生在長式羅馬拼音元素之前,因此會在第一行產生空白空間。

使用長的 Ruby 文字,顯示 Chrome 128 之前的轉譯結果。
在 Chrome 128 之前,使用長的 Ruby 文字時的轉譯結果。

使用可換行的假名,可在長假名元素中間放置換行符號,以達到理想的版面配置。

使用長的 Ruby 文字,顯示 Chrome 128 的轉譯結果。
Chrome 128 渲染結果,其中包含長的 Ruby 文字。

這項功能不會分割長度不超過四個基本字元和八個註解字元的短 Ruby 文字。

<ruby> 元素嵌套在另一個 <ruby> 元素中時,內部 <ruby> 元素不會換行。

由於這會變更使用長式羅馬拼音文字的網頁行為,因此如果您需要停用此換行行為,套用 white-space:nowrap 會如常停用目標元素內的換行。

ruby-align CSS 屬性

瀏覽器支援

  • Chrome:128。
  • 邊緣:128。
  • Firefox:38。
  • Safari 技術預覽:支援。

資料來源

新的 CSS 屬性 ruby-align 也已在 Chrome 128 版推出。這個屬性可接受關鍵字值 space-aroundspace-betweenstartcenter 中的其中一個,並控制 Ruby 基礎文字和 Ruby 註解文字的對齊方式。

圖片:顯示 ruby-align 屬性的用途。
圖片顯示 ruby-align 屬性的用途。