如『睦鄰友好的 ConTeXt Standalone』文中最後一節所述,對於不怎麼講究的中文排版,ConTeXt 目前對中文的支持勉強夠用。目前,ConTeXt MkIV 僅支持:php
載入中文字體,將其嵌入 PDF 文件;html
對中文字體中的西文字符,可以指定替換字體,即 Fallback 機制。node
若是僅具備上述單薄的功能,那麼在中文排版方面 ConTeXt MkIV 甚至不如 MS Word。舉幾個例子來講明這一點。git
看下圖, ConTeXt MkIV 尚沒法對相鄰的標點符號的間隔距離進行微調。雖然這個問題是中文字體設計上的缺陷——標點的寬度與字寬相同而致使的,可是文字排版軟件本應給出方便的特定字距調整機制。github
下圖是對標點間距進行壓縮後的效果,可與上圖對比一下。數據庫
看下圖,左引號在左側未能與其下面文本行的左側邊界對齊,致使段首出現「缺損」。編程
做爲對比,下圖是通過微調使得左引號向左偏移半個字款後的排版結果。segmentfault
一樣,落在右側邊界的標點也應該向右伸。下圖截取自《Word 排版藝術》一書,是 Word 沒法進行右側邊界標點伸出處理的排版結果。右側邊界豎向看起來,像是被咬去一塊。ConTeXt MkIV 對西文標點的邊界伸出進行了很好的處理,而中文標點像是後孃養的……右側邊界上的標點排版結果與 MS Word 差很少。bash
做爲對比,下圖給出右側標點伸出的排版示例。ide
既然 ConTeXt MkIV 如今對中文排版並不友好,而咱們若是容忍這一點,那就真的對不起 Knuth 所說的「我歷來也不期盼 TeX 會成爲一個萬能的排版工具,讓你們使用它能夠來作一些「快速而髒」的東西;我只是將其視爲一種只要你足夠用心就能獲得最好結果的東西」。
所以,必須對 ConTeXT MkIV 的字體機制進行 hack。
我 hack 的結果就是 zhfonts 模塊。zhfonts 項目位於:https://github.com/liyanrui/zhfonts
雖然 http://garfileo.is-programmer.com/posts/23740 已經給出了詳細的使用說明,可是我以爲有一份簡單點的使用說明會更接地氣。
假設你的 ConTeXt Standalone 安裝在 ~/context
目錄。若是不知道怎麼安裝 ConTeXt Standalone,那隻能證實你沒有閱讀「睦鄰友好的 ConTeXt Standalone 」。
安裝 zhfonts 的步驟以下:
$ mkdir -p ~/context/tex/texmf-local/tex/context/third $ cd ~/context/tex/texmf-local/tex/context/third $ git clone https://github.com/liyanrui/zhfonts.git
裝完後,須要使用 context --generate
刷新一下 ConTeXt MkIV 的「文件數據庫」,以使得 context
命令在編譯 .tex 文件時可以找到 zhfonts 模塊文件所在位置。
$ source ~/context/tex/setuptex # 開啓 ConTeXt 運行環境 $ context --generate
這樣,zhfonts 便安裝完畢,可是它還不能用。由於沒有中文字體。
我已將 zhfonts 所用的全部中文字體打包爲 fonts.tar.gz 並傳至百度網盤,下載地址:http://pan.baidu.com/s/1hrQcI ,提取密碼:2wpm
下載 fonts.tar.gz 後,安裝字體過程以下:
$ tar zxvf fonts.tar.gz $ cp -r fonts ~/context/tex/texmf-local/
而後刷新 ConTeXt MkIV 的環境(請肯定已開啓 ConTeXt MkIV 運行環境),即更新 ConTeXt 的文件數據庫以及字體庫:
$ context --generate $ mtxrun --script fonts --reload
下面,我給出一份測試 zhfonts 的最小示例:
\usemodule[zhfonts] \starttext 測試 English 與中文。 \stoptext
再給出一份比較全面又漂亮的 ConTeXt 入門示例,可是你須要去百度網盤下載,地址爲:http://pan.baidu.com/s/1c0FJGvI
Just for fun!
我不能擔保 zhfonts 的長期有效性。雖然這三年多以來,它雖有小恙,但迄今還算有效。因爲 ConTeXt MkIV 的開發還在進行中,所以 zhfonts 也就不可能會穩定下來。我一邊擔心 zhfonts 的掛掉,一邊但願有更強大的 ConTeXt 中文 hacker 來拯救世界……
zhfonts 模塊的一些內幕,請參考:
[0]
ConTeXt MkIV 中文標點壓縮與邊界對齊的處理方案 [1]
ConTeXt MkIV 中文標點間距壓縮問題的解決方案[2]
CJK 字符結點的斷定[3]
尋找標點符號及其包圍盒[4]
走彎路了[5]
如何建立 LuaTeX 結點[6]
ConTeXt 模塊參數的獲取[7]
MkIV:從新作了一份 zhfonts.tex 兼談 LuaTeX 「編程」[8]
zhfonts 有一些更新