把文字放進正確的外框,只完成了排版的一部分。字面大小、數字寬度和圖示重量,仍會改變整列看起來是否安定。
我會先處理換行與會更新的數值,再看字形、混排和圖示。以下數值來自固定試樣,換字型、語言或內容後都需要重看。
本文由原篇重編並擴充。試樣數值代表當時條件,並非所有介面的固定規格;系列脈絡與工具入口見 總論。
換行與數值
讓換行也參與構圖
標題的最後一行只留下很短的詞,下面的留白就容易偏向一邊。平衡換行(balanced wrapping)會在既定寬度裡重新分配文字,讓幾行的分量更接近。這組對照固定 220 px 行寬、文案、字級與字距,只改變換行方式。

短說明則不必把每行排得一樣重,我更在意末行是否只剩孤單的一小段。較佳換行(pretty wrapping)讓瀏覽器有機會重新安排斷點,同時保留自然的長短。下面這組對照也固定文字和行寬。

這些選擇需要連同實際文案一起看。標題有自己的語意停頓,短文也有適合的閱讀寬度;英文單字與繁中標點的斷行條件不同,瀏覽器的結果也可能不同。我會先讓容器有合理的伸縮空間,再檢查窄螢幕和較長譯文,最後決定是否採用平衡或較佳換行。
數字更新時,每一位先站穩
計時器從 11:11 換成 08:08,如果字形寬度不同,整串數字就會改變分量。等寬數字(tabular figures)讓每一位佔相同寬度,適合用在會更新的數值、計數器與需要掃讀的數字欄。
兩邊的主要數字都用 Geist,字級和內容相同,只切換比例數字與等寬數字。圖內的小字標示另用等寬字型,沒有參與這項字寬比較。

位數會增加,空間也要先安排
每一位等寬,還沒解決整串數字會變長的問題。計數器從 9 變成 99、再到 100,仍會多出字元。下圖兩邊都已啟用等寬數字,右側再保留三位數的寬度並靠右排列,後面的說明才能維持起點。

三位寬度是這個計數器的預期範圍。加入千分位、負號或更大的數值時,需要重新留空間;日期、倒數和百分比也各有自己的最長格式。我會讓數字在預留範圍內變化,周圍的文字和操作保持安定。
金額沿著小數點排列
同一欄金額若要快速比較,顯示精度、數字寬度與欄位方向需要一起決定。這張圖加入負數,把格式固定為兩位小數、使用等寬數字,再只改變金額的對齊方向。靠右後,小數點和個位數便能沿著同一條線排列。

單位放在獨立、較輕的欄位,與金額保持固定距離。這裡的小數點能對齊,是因為顯示精度相同;若同欄必須混用不同小數位數,就要再把整數與小數部分分欄安排。負號也要留在數值裡,不能為了對齊而省略。等寬數字只是起點,實際字型的字偶距仍可能影響排列;我會用同一組正負金額檢查,而不只看設定是否已開啟。
字面與圖示
置中後,還要看可見的形狀
光學置中(optical centering)處理的是可見形狀的重量。右指三角形的面積偏向左側,即使外接框置中,仍可能看起來偏左。這裡固定按鈕,只把同一個圖形向右移 1 px;這個取值屬於圖中的三角形,其他圖示需要重新看。

字框置中後,再看字面高低
文字的排版範圍包含字型預留的上下空間,可見的字面只占其中一部分。按鈕用彈性布局置中後,文字仍可能看起來略高或略低。圖中同樣的 Save、同樣的字型與行高,左側保留字框,右側沿大寫字高與基線修整上下邊緣,再放入同樣高的按鈕。

文字框修整(text-box trimming)讓這種空間可以按字型邊緣處理。圖裡的細角標與中線用來看清差異;實際選擇仍要檢查字母的上伸、下伸和旁邊的圖示。繁中、假名與韓文需要按各自字型的字面重新判斷,英文的 cap/baseline 取值不能直接代替所有語言的光學置中。不支援修整的環境仍保留原來的字框布局。
先看字面,再安排混排
同樣標成 24 px,漢字、假名、韓文和英文字母看起來仍可能大小不同。字級量的是字框,可見的字面(character face)只占其中一部分;字面的比例與位置,也會跟著字型、字重和實際字樣改變。文字旁邊若有圖示,我會把它們放在一起看,而不只核對兩個外框的中心。

這也是語言標記與回退字型需要先安排好的原因。繁中、簡中、日文和韓文應選擇合適的地區字形;同一段混排文字,也可能由兩個以上的字型共同繪製。只看到 CSS 裡的 family 名稱,還不足以確認每個字來自哪裡。W3C 的中文排版需求也將地區差異與字面分開說明。
前面的 cap/alphabetic 修整適合用來拆解那組英文標籤。換成 CJK,可以再研究 ideographic 邊緣,但仍要檢查實際字型與瀏覽器;漢字加英文、數字或上下標的標籤,也需要一起看。不支援時保留正常字框,避免把一組英文取值變成所有語言的固定偏移。
間距、標點與斷行一起判斷
文字之間的空白有不同來源。字距調整字元間的距離,混排間距處理相鄰漢字/假名與西文字母、數字的交界,標點留白則來自標點字元本身的空間。它們各自影響閱讀,不能只靠整段縮緊字距處理。

text-autospace 可以在布局時加入混排間距,不必改動文字內容;採用前仍要盤點原本的空格。text-spacing-trim 處理部分 CJK 標點的內部留白,和前面修整上下字框的 text-box 是不同工作。這些能力的支援範圍要分別檢查,韓文的空格慣例也需要按語言判斷。CSS Text 規格說明了它們各自的作用。

我會先用真正的標題、說明和長譯文檢查窄版。繁中例子保住 InterfaceCraft 的單字,日文例子觀察嚴格禁則下的小假名,韓文則比較按音節與按詞斷行;沒有一個設定能代替所有語言的判斷。行距也要按正文、短標籤和多行標題分別看。文字放大時讓容器繼續生長,比守住原本的單列高度更重要。
圖示側的留白,按可見分量微調
文字加上一個箭頭後,箭頭周圍的空白也會參與整組內容的分量。這裡固定文字、圖形、間隔與上下內距,只把圖示側的水平內距從 16 px 改為 14 px,讓組合稍微收緊。

2 px 是這個箭頭與字樣的調整量。換成填滿的圖示、另一套字型,或把圖示移到文字前面,都要回到整組外形看。圖示若在自己的畫布裡已經偏移,先修正圖稿本身,按鈕就能少一層補償。
小圖示重新判斷線寬
筆畫粗細(stroke weight)也不能只跟著整個圖示縮小。這個 14 px 資料夾,左側將 24 px 原稿的 1.5 px 線寬同比縮成 0.875 px,右側校正為 1.25 px。圖形尺寸不變,調的是最終筆畫。
我會在實際尺寸下,把線帽、轉角、內部留白和旁邊的文字一起看。這個圖示需要的分量,未必適用另一個更密的形狀。

小標籤也有自己的字距
全大寫英文標籤常和數字、標題貼得很近。字母擠在一起時,小字可能變成一整塊偏重的形狀;略微拉開字距(tracking),則能讓它保持清楚的節奏。
這組固定 10 px、500 字重、同一句大寫標籤,只比較 0 與 0.05 em 字距。下方內容、標籤與內容的間距都不變。

我會連同字級、字重、文字長度一起判斷。這裡的大寫標籤適合留一點空氣,繁中小標與一般內文則有不同的字面密度;每個角色都需要自己的分量,整篇文字的層級仍要維持簡單。
我會在數值更新、換語言與放大文字後,再看一次整列。字框正確、字面安定和資訊對齊是不同層次的檢查;只有在實際內容裡都成立,微調才有意義。
