網路城邦
上一篇 回創作列表 下一篇   字體:
TeX運作原理、編碼與字碼、排版、輸出
2013/06/20 09:33:33瀏覽1515|回應0|推薦1

我只能把我個人的心得在此記錄,不能保證一定正確。

TeX的功能,就是可以把純文字的文件,從文件中所指示的定義,轉換成字體資料後編排,並把編排結果以dvi格式輸出。dvi檔再經過dvips、dvipdfm(x)等程式把字體加入,然後給印表機打印或是在螢幕上面繪出來。

TeX的原始文件,使用副檔名為.tex。最早在西方語系的系統下,純文字內的字元是ASCII碼,這是因為當時定義字元為一個8位元的位元組,用有號數正整數來定義字元,所以最高的位元不能使用(1為負值),所以只能定義128個字完。請看圖:

這是ASCII的圖表,可以看出,十進位數值32到126這95個字碼是可以才是可以使用的部分,其他的部分,我們一般鍵盤是無法輸入的。這些字元拿來寫程式也許夠用了,但是在出版的應用上面,就不足以使用。西方語系還有許多字元,並不在ASCII的定義之中,所以,有人就把重新定義一個字碼表,把0到127的數值中,都定義了字元義意。

例如cmr10這個字碼,其編碼0到127都有字元上面的義意。除了和ASCII從覆的部分保留編碼相同外,其他在平時電腦是無法直接輸入這些在tex檔中字碼的,但可以用控制命令把它們在編排時叫出來,這中間需要做個編碼轉換的動作。TeX會檢查分析文件,然後按照文件中的指令,找出對應的字型的字碼進行編排,例如文件中有ff等字元的排列,它就會把這部分自動轉換成編碼13的字元來替換。如different 這個字在TeX處理後,在dvi檔案中,用vi打開來看時,會發現其已轉換成 di^Kerent。^K是代表一個字元,是「脫出字元表示法」,代表這個字元無法用ASCII規定的字元做顯示所用的,如果把他用整數表示,它就是十進位的13。

ASCII碼的字元因為不夠用,所以很快的定義EASCII擴充到256個,西方國家是夠用了,但是對人類來說是不夠的。所以現在國際上使用二個位元組的Unicode編碼,可以定義字元是2的16次方個,就是65536個。完全夠人類文字使用了,所以使用Unicode字元編碼是必然的趨勢。

不論是何種文字,不管是用寫的,還是用印的、畫的,最終是以圖形的狀態進入到眼睛。

在電腦上面,文字格式有二種。一種稱為點陣字,是把文字當成圖畫,是由一格格小方塊所組成,其運作方式如同大型運動會的人體排字一樣,一組人站成方陣,每個人都是一個位元,一個字如果要用16X16的方陣來排列的話,那一個字就要佔去4bite的儲存空間;如果解析度更高一些,用20X20的方陣排列的話,那一個字就是5bite位元。如果是48X48,一個字佔12位元。一套300dpi, 12pt的cmr10的字體,大約是50x50,一個字約是12.5bite, 128 個字就是1.6M。如果是Unicode的中文字體,約20000字,那就是要 250M,如果是個十萬字的作品,那麼它的檔案要超過1G。點陣字的問題就是這個,如果解析高的話,什麼儲存空間都不夠放的下,檔案大的嚇死人。而且點陣字一旦放大,其邊綠如同鋸齒,很難看。

另外一種就是向量字,原理就是圖形可以用數學式來表示。這種字的優點就是每個字都是數學式子所組成,所以每個字所佔的儲存空間很小。而且可以放大縮小都不失真,在印刷上面的效果最好。但是它也有缺點,就是每一個字,電腦都要根據每個字上面的數學式算上一遍。現在電腦的運算速度越來越快,所以這個問題就顯得越來越小,到今日,使用向量字來作文件排版的工作是主流。大型網站,如Facebook等可以分享照片的地方,他不會讓你上傳向量圖的,原因也在此,如果一個複雜的向量圖,算一個花0.1秒,同時有1000個人要看的話,那麼瞬間,主機只能在計算這些圖,而無法作其他的事了。

電腦排版

不論點陣字還是向量字,如果排版軟體連字體都要處理的話,都是沒有辦法的,檔案都太大了。傳統的排版,是把每個字樣固定在框內後(製版),然後開始印出。

TeX不處理字型的問題,它所處理的只是每個字的外框,這個外框有二種格式,一種是二進位檔的.tfm (TeX font metric),另一種可讀的為.pl (Property list),二者可以用 tftopl 和 pltotf互相轉換。找一個tfm檔,轉成pl後,就可以用文字程式來看其內容,主要是紀錄字的編碼和寛度、高度、深度等資訊。這是一個例圖,來說字體的內容:

電腦排版也差不多,但原始文件是Unicode的編碼字串,排版軟體只是針對這個字串,找出其對應的字體碼,然後根據字體碼對應字體的資料,進行排版工作。到這裡,排版軟體是不會處理字體的。TeX所做事情就是排每個字的外框,然後完成製版,輪出dvi檔就如同版框。

而版面輸出(印出)則以dvips, dvipdfm(x)這類程式,才是把字體填入框中,然後印出(印表機列印、螢幕繪出圖形)。

( 興趣嗜好電腦3C )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=paraquat&aid=7754502