2013年12月24日 星期二

利用Pango來區分不同書寫系統的文字

各位超級久不見。忙著學語言...(鞠躬)。不過也正是因為忙著學語言,才有今天這個主題。

基本上來說,我的語言筆記會呈現一定的樣式。例如說單字筆記就一定會是單字、翻譯、解釋以及例句。課文筆記一定有課文,還有(可能)每個字的解釋,相關文法等。如果說可以用一個統一的格式來表示,然後利用文件產生器來生產pdf檔的話應該很棒對吧~就說我超懶的!

要產生這樣的pdf文件,就必須要進行排版;要排版則需要有文字的語言資訊,才可以恰當的做斷行。同時,也必須確保繪製系統可以選擇系統內相對應的字型,也要有恰當的文字排列引擎等等。要收集這些資訊很曠日費時,很麻煩,要懂unicode,要懂fontconfig...所幸我們現在有pango來替我們把這些資訊整理好列出以供我們使用。

程式碼請見:https://github.com/inorindesu/pango-itemizer/blob/master/main.c

程式流程大略是

  1. 把一些原料搬進廠房
  2. 把原料切成恰當的等分
    (utf8界線切割)
  3. 把切割好的原料傳給 pango_itemize 做處理
  4. 把pango_itemize 處理好的 PangoItem 放到出貨區
  5. 收拾
將上面的步驟持續下去直到沒有原料(?),或是原料裡面有蟲(??)才停止