預計閱讀 1 分鐘原文來源
前言
在程式碼、終端機或純文字檔中,等寬字體(monospace)是唯一的排版選擇。然而,將等寬文字做兩端對齊(full justification)卻常被視為不可能的挑戰。本文將說明背後的技術原因、現有的解決思路,以及未來可能的發展方向。
為何等寬字體難以兩端對齊
等寬字體的每個字元佔用相同的水平空間,這讓左對齊與右對齊相對容易,只要在行尾補上適當的空格即可。
- 置中(center)已經很吃力,因為沒有「半個空格」可以讓文字恰好居中。
- 全行對齊則更為棘手:若直接在行內插入普通空格,空格的寬度會遠大於字元本身,導致版面產生不自然的「斷裂感」。
在等寬環境中,常見的斷字(hyphenation)技巧亦不適用。加入連字號(-)不僅會把注意力拉向連字號本身,還會在複製貼上時破壞原始文字的完整性。正因如此,純文字檔案很少會看到真正的兩端對齊。
手工對齊的極限案例
1990 年代末,開發者 rs1n 為《Super Metroid》寫了一本長達 17,000 字的攻略指南,全部採用等寬字體。其做法不是使用程式自動排版,而是手動挑選單字,確保每一行的字元總數恰好等於行長度,從而避免任何雙空格或不均勻的間距。
「我使用什麼程式來對齊文字?」
「無。我只是仔細挑選單詞,使每行右邊緣都正好落在字母上。全部在 ASCII 編輯器中完成。」
這種做法在現代看來幾乎是「不可能任務」,但它證明了純文字環境下的完美兩端對齊在理論上是可行的,只是成本極高。實務上,許多 UI 設計師在製作按鈕文字或工具提示時,也會花費大量時間「按摩」字串,使其在固定寬度內剛好貼合,這與 rs1n 的手工排版思路不謀而合。
未來展望與實務建議
- 字形微調技術:隨著可變寬度字體(variable‑width fonts)與字距微調(kerning)技術的成熟,未來或可在等寬字體中引入細微的字元寬度變化,以自動實現兩端對齊,而不破壞等寬的程式碼可讀性。
- 智慧編輯器:開發支援「等寬全對齊」的文字編輯器,內建單詞長度統計與自動替換空格的演算法,讓開發者不必手動計算。
- 實務取捨:對於需要高度可讀性的程式碼或日誌檔,仍建議保留左對齊;若是面向終端使用者的說明文件或遊戲攻略,可考慮採用手工或半自動的對齊方式,以提升排版美感。
總結來說,等寬字體的兩端對齊雖然在技術層面充滿挑戰,但透過手工選詞或未來的字形微調與智慧編輯工具,仍有突破的空間。對於需要精緻排版的開發者與內容創作者而言,了解這些限制與可能的解決方案,將有助於在不同媒介間取得最佳的閱讀體驗。
分享
