在計算機圖形學中,字符可以用不同的方式表達和生成。常用的方法有點陣式、矢量式和編碼式。
1.點陣式字符
在點陣式字符庫中,每個字符都定義成一個稱為掩膜的矩陣。矩陣中的元素都是一位二進制數,當該位為1時,表示字符的筆劃經過此位,對應于此位的象素應置為字符顏色;當該位為0時,表示字符的筆劃不經過此位,對應于此位的象素應置為背景色或不改變。
點陣式字符
4.輪廓字型技術
輪廓字型法采用直線、或者二/
三次Bezier曲線的集合來描述一個字符的輪廓線。輪廓線構成一個或若干個封閉的平面區域。輪廓線定義加上一些指示橫寬、豎寬、基點、基線等的控制信
息,就構成了字符的壓縮數據。這種控制信息用于保證字符變倍時引起的字符筆劃原來的橫寬/豎寬變大變小時,其寬度在任何點陣情況下永遠一致。采用適當的區
域填充算法,可以從字符的輪廓線定義產生的字符位圖點陣,區域填充算法可以用硬件實現,也可以用軟件實現。
當對輸出字符的要求較高時(如排版印
刷),需要使用高質量的點陣字符。對于GB2312-80所規定的6763個基本漢字,假設每個漢字是72X72點陣,那么一個字庫就需要
72X72X6763/8=4.4兆字節存儲空間;不但如此,在實際使用時,還需要多種字體(如基本體、宋體、仿宋體、黑體、楷體等),每種字體又需要多
種字號。可見,直接使用點陣字符方法將耗費巨大的存儲空間。因此把每種字體、字號的字符都存儲一個對應的點陣,在一般情況是不可行的。
解
決這個問題一般采用壓縮技術。對字型數據壓縮后再存儲,使用時,將壓縮的數據還原為字符位圖點陣。壓縮方法有多種,最簡單的有黑白段壓縮法,這種方法簡
單,還原快,不失真,但壓縮較差,使用起來也不方便,一般用于低級的文字處理系統中。另一種方法是部件壓縮法。這種方法壓縮比大,缺點是字型質量不能保
證。三是輪廓字型法,這種方法壓縮比大,且能保證字符質量,是當今國際上最流行的一種方法,基本上也被認為是符合工業標準化的方法。
輪
廓字型法采用直線、或者二/三次Bezier曲線的集合來描述一個字符的輪廓線。輪廓線構成一個或若干個封閉的平面區域。輪廓線定義加上一些指示橫寬、豎
寬、基點、基線等的控制信息,就構成了字符的壓縮數據。這種控制信息用于保證字符變倍時引起的字符筆劃原來的橫寬/豎寬變大變小時,其寬度在任何點陣情況
下永遠一致。采用適當的區域填充算法,可以從字符的輪廓線定義產生的字符位圖點陣,區域填充算法可以用硬件實現,也可以用軟件實現。
由美國
Apple和Microsoft公司聯合開發的TrueType字型技術就是一種輪廓字型技術,已被用于為Windows中文版生成漢字字庫。當前占領主
要的電子印刷市場的我國北大方正和華光電子印刷系統,用的字型技術是漢字字型輪廓矢量法。這種方法能夠準確地把字符的信息描述下來,保證了還原的字符質
量,又對字型數據進行了大量的壓縮。調用字符時,可以任意地放大、縮小或進行花樣變化,基本上能滿足電子印刷中字型質量的要求。輪廓字型技術有著廣泛的應
用。到目前為止在印刷行業中使用最多,隨著Ms-Windows的大量使用,在CAD、圖形學等領域也將變得越來越重要。
點陣式字符將字符表示為一個矩形點陣,由點陣中點的不同值表達字符的形狀。常用的點陣大小有5x7、7x9、8x8、16x16等等。圖2.4.1(a)所示的字母“P”的點陣式表示例子。在這種8? 8網格中的字形比較粗糙,但當點陣變大時,字型可以做得非常漂亮。
使用點陣式字符時,需將字庫中的矩形點陣拷貝到buffer中指定的單元中去。在拷貝過程中,可以施加變換,以獲得簡單的變化。圖2.4.1(b)~(d)列出了P字母原型的一些變化例子。相應的變換算法是:
(a)
(b)
(c) (d)

圖2.4.1 點陣式字符及其變化
圖(b)變成粗體字。算法是:當字符原型中每個象素被寫入幀緩存寄存器的指定位置xi, yi時,同時被寫入xi+1, yi。
圖(c)旋轉90? 。算法是:把字符原型中每個象素的x, y坐標彼此交換,并使y值改變符號后,再寫入幀緩存寄存器的指定位置。
圖(d)斜體字。算法是:從底到頂逐行拷貝字符,每隔n行,左移一單元。
此外,還可以對點陣式字符作比例縮放等其他一些簡單的變換。但是對點陣式字符作任意角度的旋轉等變換,是比較困難的操作。
由于光柵掃描顯示器的普遍使用,點陣式字符表示已經成為一種字符表示的主要形式。從字庫中讀出原字型,經過變換拷貝到buffer中去的操作,經常制成專門的硬件來完成。這就大大加快了字符生成的速度。
2.矢量式字符
在筆式繪圖儀上采用矢量型字符比較合適,矢量型字符采用矢量代碼序列表示字符的各個筆劃。輸出一個字符時,系統中字符處理器解釋該字符的每個矢量代碼,輸出對應的矢量,達到產生字符的目的。
矢量式字符
矢量式字符將字符表達為一個點坐標的序列,相鄰兩點表示一條矢量,字符的形狀便由矢量序列刻劃。圖2.4.2示出用矢量式表示的字符“B”。“B”是由頂點序列{a, b, c, d, e, f, e, g, h, I, j, k ,a, l}的坐標表達。
調用矢量式字符的過程相當于輸出一個polyline。由于矢量式字符具有和圖形相一致的數據結構,因而可以接受任何對于圖形的操作,如放大、旋轉,甚至透視。而且,矢量式字符不僅可用于顯示,也可用于繪圖機輸出。

圖2.4.2 矢量式表示字符“B”
3.方向編碼式字符
方向編碼式字符用有限的若干種方向編碼來表達一個字符,常用的如8方向編碼。方向編碼既可用于字符的顯示,也可用于字符的繪圖機輸出。
方向編碼式字符用有限的若干種方向編碼來表達一個字符,常用的如8方向編碼。圖2.4.3示出8個方向的編碼為0~7,其中編碼為偶數和0的固定長度為1,編碼為奇數的固定長度為
。
一個字符就可以表示為一連串方向碼。圖2.4.4(a)示出字母“B”的方向矢量構成。這樣,“B”就表示為8方向編碼:
{000012344400012344440666666}。方向編碼式字符很容易被填入幀緩存寄存器中予以顯示(圖2.4.4(b)),方向編碼所占
的空間比較小,它也能接受一些特定的變換操作,如按比例在x和y兩個方向放大或縮小以及以45? 角為單位的旋轉,但難以進行任意角度的旋轉。

方向編碼既可用于字符的顯示,也可用于字符的繪圖機輸出。