KANONARA

用泰文寫小說

用泰文寫作虛構作品:堆疊在子音上的母音與聲調符號、詞間無空格、靠切分的斷行、行距、字體,以及該測試什麼。

發布於 27 Sept 2026 · 1 分鐘閱讀

泰文虛構作品有深厚的連載傳統,也在閱讀程式與網路平台上活得很健康,但在網路上寫它,意味著與文字本身協商。泰文把母音符號與聲調符號疊在子音上,寫詞不在詞間留空格,並把字體排印的難題交給渲染文字的引擎。理解這三件事的寫作者,能挑到應付得來的工具,避開那些悄悄把頁面攪壞的。

這套文字如何運作

泰文是一種元音附標文字:每個子音自帶隱含母音,母音符號加以修改。那些母音有些是打在子音前後的間距字母,有些是組合附加符號;用 W3C 的摘要說,「只有出現在子音上方或下方的母音符號元件是組合附加符號;其餘是普通的間距字母」。母音往四面八方包圍基礎字符。Omniglot 描述泰文母音附加符號出現在「它們所修飾之子音的前方、上方、下方或後方」,而 W3C 註明複合母音「最多可動用 4 個字形(外加一個聲調符號),而且字形可在多達 3 個側面圍繞基礎子音」。

泰文也有聲調,而且聲調寫出來:聲調符號「放在音節的最後一個起始子音上」(Omniglot),而 W3C 補充,實際調值取決於子音的類別、音節的活與死(live 或 dead),「加上任何聲調符號」。在一個聲調符號底下再放一個上母音,一個子音就扛著一小塔記號,而行距與字體的問題,正是從這裡來的。

詞間沒有空格

Omniglot 講得直白:「詞與詞之間沒有空格,泰文文字裡的空格標示子句或句子的結束。」W3C 的泰文資源同意:「空格分開的是短語,而不是詞」,而其結果是「音節界限因此可能難以用演算法偵測」。Unicode 的斷行規格把泰文與寮文、高棉文及緬甸文並列為「複雜情境相依」:尋找斷行機會「需要形態分析」,通常靠查辭典。

對作者而言:

  • 用字數計長度。 字數計數器按空格切分,對泰文回報廢話,所以一章的天然單位是字。用那個單位衡量你的目標(見連載章節長度)。
  • 把空格當節奏。 因為空格的意義是子句或句子,不是詞,你的空格選擇讀起來就像標點。讀者即使說不出名字,也感覺得到忽寬忽窄的短語間距,所以保持一致。
  • 讓引擎斷行。 絕不要為了修復換行而插入手動斷行或連字號式的取巧;切分是渲染器的工作,而手動斷行到了其他螢幕尺寸上會糟糕地定格。

行距與對齊

因為記號在基礎子音上下堆疊,泰文需要的行間空間比拉丁文多;行距一緊,上母音之上的聲調符號就撞上一行或被裁掉。給泰文寬裕的行距,測試最高的音節,而不是平均的行。至於對齊:瀏覽器的兩端對齊做得比專業排版引擎差,所以靠左對齊、右側參差的文字是泰文在網路上的安全預設,而這也是 Kanonara 對它渲染的每一種文字所做的同一個選擇。

數位字體

  • 用真正為泰文設計的字體,而不是把泰文掛上去的拉丁字體家族。記號定位,也就是整形(shaping),是便宜字體最先失敗的地方。
  • 檢查高疊。 一個帶上母音與聲調符號的子音,該顯示乾淨的間隔與正確的順序。用你自己手稿裡的真句子測試,而不是示範用的樣板句。
  • 檢查有沒有真粗體。 泰文字體上的合成粗體會把圈圈糊掉;如果這個家族沒有真正的粗體字重,謹慎使用強調。
  • 在讀者用的裝置上測試。 一支系統字體薄弱的手機,才是你的故事實際居住的地方。

發表須知

各平台的閱讀介面對泰文切分與字體的處理好壞不一,所以在託付一部連載之前,發一章測試章節,在應用程式裡讀它。如果你跨平台發表,讓手稿住在一個地方,再從那裡聯播:渲染品質不在你手裡,來源品質在。工具問題與任何語言相同,如何挑選小說寫作軟體,現在多一道濾網:這個工具必須在編輯器、預覽與匯出的每一步都正確渲染泰文。至於發去哪裡,從連載平台地景開始,並自行查證每個平台的泰文支援。

來源

  1. W3C: Thai Script Resources Combining marks, glyph stacking, phrase spacing.
  2. Omniglot: Thai script No spaces between words; tone mark placement.
  3. Unicode Standard Annex #14: Line Breaking Property Thai in the SA class; dictionary-based breaking.

本文中的寫作技法論斷均可在下列來源查證;屬於從業者共識而非定論的內容,正文均已註明。

繼續閱讀