跨平台排版解決方案雜記

M$ Word 跨平台、跨版本的支援度及一致性太低,一堆功能還要透過線上服務才能用,完全沒有隱私或安全可言,實在是無法接受。

開源軟體及開放字型發展至今,已足以構建出合用的解決方案。

列細節前先講結論:建議 LibreOffice + KaTeX Fonts + Noto CJK + 全字庫。

一開始的候選

因為希望能跨平台到 Linux 而不是只有 Windows 和 macOS,又不要線上服務,幾乎只剩下開源的選項。

需求及評量點

  • 軟體開發維護的活躍程度
  • 匯出 PDF 功能(目錄、書籤、超連結等)的支援
  • OpenType 字型的支援度
  • 文件格式的標準化及一致性程度
  • 安裝及管理運作環境的簡潔度
  • 協作門檻

目前狀況

TeX 系列的解決方案有 TeX Live 之後算是比較好裝了,且在有 XeTeXLuaTeX 之後,對 OpenType 的支援有變強。但是底層的工具感覺有點太分散,似乎容易在發展過程中產生相容性問題。且 TeX Live 的 macOS 版本──MacTeX──光安裝檔就超過 3 GB,實在是太臃腫。因為語法及安裝管理套件相對複雜,協作門檻亦高。

除了 TeX,就是 OpenDocument 系列的方案了。

Apache OpenOffice 看來不知道什麼時候會收掉……

LibreOffice 算是比較好的解決方案,在各平台上安裝都很容易,各大 Linux distro 甚至在 Live 版本裡就有預載。

環境架設

亞洲語言支援

到 Language Settings > Languages 裡把 Asian 勾起來,選 Chinese (traditional),或是裝正體中文語言包。這樣設定樣式的時候才有分開的 Western Text Font 跟 Asian Text Font 可以選。(裝了語言包之後仍可使用原文介面。)

這在中英夾雜的使用情境下非常有用,可以把讓單一樣式下的文字,中文與英文分別採用不同字型。

字型

KaTeX Fonts 是拿來打方程式用,取代預設的 Liberation Serif,比較美觀。

中文字型則建議加入 Noto CJK(基本上就是思源黑體思源宋體)還有國發會的全字庫(內有楷體及宋體)。

Linux 使用者若要手動安裝字型,可以把檔案放到 ~/.local/share/fonts

KaTeX Fonts

原本是想用 MathJax 出的字型檔,但是發現它的格式是 PostScript Type 1,跟 LibreOffice 有相容性問題,故改用有出 TrueType 格式的 KaTeX 字型,挑出 TTF 檔安裝。

裝完後在 LibreOffice Math 的 Format > Fonts 裡把 Formula Fonts 都調成 KaTeX_Main,然後設成 Default,之後打方程式就會好看許多。

Noto CJK

最新版的 Windows 和 macOS 應該都是支援 Super OTC 的,載 NotoSansCJK.ttcNotoSerifCJK.ttc 回來裝。

在 Linux 上的話,可以用 package manager 來裝,Ubuntu 有 fonts-noto-cjk;Fedora 有 google-noto-cjk-fonts;Debian 也有 fonts-noto-cjk,不過在 Stretch 上只有黑體Buster 才加入宋體

2.000 版的字型檔加入了香港地區,寫文章的當下只在 GitHub 上可以翻到。

全字庫

政府開放資料平台整包載回來,挑出 TTF 檔安裝。

在 Linux 上的話,一樣可以用 package manager 來裝。

Ubuntu: fonts-cns11643-kai, fonts-cns11643-sung
Debian: fonts-cns11643-kai, fonts-cns11643-sung

排版技巧書籍

LibreOffice 有人為它寫了一本《Designing with LibreOffice》免費下載的電子版跟實體書都有台灣這邊有人把它翻成中文,叫《LibreOffice 排版設計》,同樣是免費下載的電子版實體書都有。(不過這書本身的排版實在是 😭)

其實排版的概念大同小異,大師侯捷所著,在 2004 年出版,如今業已絕版的《Word 排版藝術》中,仍有許多段落值得參考。光是讀前兩章便足以讓新手功力暴漲!

後記

用了 LibreOffice 之後意外發現它的 kerningligature 預設做得比 M$ Word 好,不需要特地去開。

參考資料

Leave a Reply

Your email address will not be published. Required fields are marked *

Captcha loading...