直書文字產生器工具會將一串字元排列成固定高度、由上到下且有邊界的欄位,然後將結果輸出為可攜帶的純文字,而不是圖片或樣式表。Lizely 的直書文字產生器最多接受 5,000 個 Unicode 字符叢集(grapheme cluster),依序將它們切割成你可以從 1 到 100 中選擇高度的欄位,並用兩個普通空格將欄位連接起來形成列。字符叢集是讀者實際看到的最基本單位:一個字母、一個基本字母加上它的組合附加符號、一個像 🇯🇵 的國旗組合,或是一個像 3️⃣ 的鍵帽表情符號,各自都是一個叢集。以叢集而非原始編碼單位來處理,才能讓組合的表情符號序列保持完整,並避免 é 與它的附加符號分離。你來源中的既有換行會被轉換成一個全形空白儲存格,這樣段落分隔在垂直格線中依然可見。整個操作在瀏覽器本地執行;不會上傳任何內容,下載的是一個使用 LF 列分隔符的 UTF-8 TXT 檔案。

how to create vertical text
how to create vertical text

在純文字中「直書文字」的意義

大多數關於如何建立直書文字的指南都會提到 CSS writing-mode、Word 文字方塊,或設計程式中的旋轉文字。這些方法各自在其領域中都是正確答案,但它們沒有一個能產生可以貼進純文字欄位的字串。直書文字產生器的任務更窄、更字面:接收一個字串,決定第一欄要放幾個字元,再往右對下一欄重複同樣的步驟,直到所有叢集都放置完成。結果看起來像是一個由空格分隔的小字元方格——可複製、可搜尋,且能帶到任何接受文字的應用程式中。拿一段簡短的說明文字執行直書文字產生器,你就能得到可以直接貼到 Discord 頻道、程式碼註解、Notion 頁面或 Instagram 個人簡介的內容。

字符叢集感知欄位排版的運作方式

瀏覽器的 Intl.Segmenter 搭配本站測試過的後備機制,會逐一走訪輸入內容並將代碼點分組成字符叢集。分段(segmentation)就是讓組合附加符號緊貼基字、將膚色修飾符與其修飾的字元視為一個單位,並且不把國旗或鍵帽拆成兩半的規則手冊。這些規則在 Unicode UAX #29 — Text Segmentation 中公開發布,並在 MDN 的 Intl.Segmenter 參考文件 中為網頁開發者說明。一旦叢集列表準備就緒,工具就會由上往下填滿欄位 1,直到達到所選的高度,然後移到欄位 2,接著欄位 3,依此類推。內部缺失的儲存格——當最後一欄比設定高度短時——會以一個全形空白填補,讓後續欄位在視覺上保持對齊。視覺最右側邊緣的缺失儲存格則會被捨棄,所以最後一列不會多出不必要的尾端留白。各列以 LF 換行符連接,下載的檔案也使用相同的換行符。只要瀏覽器的分段行為、來源、高度與方向相同,產生的儲存格順序就是確定性的,所以用相同的輸入重新執行會得到完全相同的字串。

將字串排列成直書欄位的步驟

  1. 把你的來源文字貼到輸入欄位中,並從 1 到 100 之間選擇一個欄位高度(必須是整數)。
  2. 選擇第一個來源欄位要出現在視覺左側(左到右)或視覺右側(右到左)。
  3. 點擊「Generate」(產生)。查看回報的來源字符叢集數與輸出欄位數,確認排版符合你的預期——例如,30 個來源字符叢集搭配高度 6,會填滿 5 個各 6 個叢集的欄位。
  4. 檢視等寬字型預覽。如果欄位看起來不平均,原因幾乎都是目的地字型不是等寬字型,而不是儲存格順序的問題;請先切換到等寬字型再下判斷。
  5. 點擊「Download」(下載)將排版儲存為使用 LF 換行符的 UTF-8 TXT 檔案。下載的字串與預覽字串完全一致。

既有換行與表情符號會如何處理

你來源中的任何 CRLF、單獨 CR 或 LF 邊界,在直書序列中都會變成一個全形空白儲存格。它們並不會開啟一個新的獨立垂直區塊。這樣做的原因是為了保留段落分隔所產生的可見間距,同時讓排版維持單一、可預期的矩形。連續的換行會產生連續的空白儲存格,所以來源中的雙重換行會在輸出中產生兩個空白儲存格。處理段落分隔的同一套字符叢集分段機制,也會處理讀者實際視為一個單位的字元。一個像 🇯🇵 的國旗、一個像 7️⃣ 的鍵帽、一個帶有組合尖音符的基字如 é,以及一個帶有膚色修飾的表情符號如 👍🏽,各自都是一個叢集。工具不會將它們切開、不會反轉它們,也不會捨棄變體選擇符或修飾符——即使這代表兩個視覺上窄的字元會佔據一個儲存格,或表情符號在你閱讀排版時算成一個「字元」。可見字符仍可能在不同字型與系統之間呈現不同結果,所以發布前務必在目的地字型中預覽。

由左到右或由右到左的欄位順序

兩位讀者看同一個垂直區塊時,未必會對它從哪裡開始有一致看法。工具把這個選項作為單一控制項直接呈現,而不是讓你預先安排輸入。在由左到右模式下,最前面的來源字符叢集會出現在最左側的欄位,符合英文的閱讀順序。在由右到左模式下,第一個來源欄位會被移到視覺右側,符合常見的傳統直書閱讀方向。每個欄位內部的儲存格順序維持不變——只有欄位的顯示順序被反轉。英文說明文字、裝飾標籤、課堂範例以及大多數雙語貼文,使用由左到右;傳統直書文字或任何必須符合文化預期閱讀方向的模擬稿,則使用由右到左。更改文字、高度或方向會清除先前的結果,避免舊的排版與當前設定混淆。

輸入限制、輸出限制與錯誤行為

這個工具有三個邊界限制:最多 5,000 個來源字符叢集、最多 50 個輸出欄位,以及介於 1 到 100 之間(含端點)的欄位高度。具體的限制與超過時的行為整理如下。

限制數值超過時的行為
來源字符叢集5,000明確錯誤,不產生部分結果
欄位高度1 到 100,僅限整數輸入為小數或超出範圍時出現明確錯誤
輸出欄位50工具會要求更高的欄位,而不是產生超寬的預覽
格式錯誤的 UTF-16 代理對序列在分段前即拒絕明確錯誤,不產生部分結果

空白的輸入同樣會產生明確錯誤。工具絕不會靜默截斷來源文字,所以你貼上的內容就是實際被排列的內容。這些限制約束了分段時間、預覽的水平捲動寬度,以及下載檔案的大小。

什麼時候純文字直書欄位是正確的選擇

純文字直書欄位適合用於裝飾性說明文字、詩歌實驗、直書標籤、短雙語展示、課堂範例、社群貼文與純文字模擬稿——任何需要結果可貼上、可搜尋,且能跨應用程式攜帶的地方。它不適合用於真正的網站;在網站中,CSS writing-mode 加上適當的語言排版會提供更易於存取的直書排版,因為文字保持響應式與可選取,不需要塞入空白字元。它也不適合用於印刷或圖形;設計應用程式對字符旋轉、字型度量與版面幾何的控制,遠比一串以空格分隔的字元更可靠。請將這個工具用於可攜帶的純文字排版,並在發布前於目的地字型中預覽結果,因為即使底層儲存格順序正確,可見字符仍可能在不同字型與系統之間呈現不同的外觀。對齊效果取決於目的地字型能否一致地處理所選字元與全形空白;比例字型、後備的表情符號字型、定位字元以及寬度不一的文字混合,都可能讓欄位看起來不均,即使純文字的儲存格順序其實是正確的。

延伸閱讀:欄位轉逗號分隔清單:引號安全的瀏覽器工具

延伸閱讀:如何在不上傳的情況下將 PowerPoint 轉為純文字