當前位置:
首頁 > 最新 > 計算機系統是如何顯示一個字元的?

計算機系統是如何顯示一個字元的?

我們知道,計算機是美國人發明的,人家的英語體系總從來就只有26個英文字母和一些數字、特殊字元等,為了儲存文字信息,於是使用了最早的ascii碼進行字元編碼。而後來由於計算機的普及,多國語言文字變得重要起來,於是多語言的特性成為了計算機的必備,各國進行各國的國家標準編碼,中國的便是GB2312(1980年),而後1995年又頒布了《漢字編碼擴展規範》(GBK),GBK與GB2312相兼容,但又增加了一些兼容漢字,方便了和Big5碼等進行轉換。這套GBK編碼,逐漸成為了中國計算機的主流編碼。

Unicode字符集和UTF-8編碼

隨著計算機的發展,往往一款軟體不但要兼容一個國家的語言,還要兼容許多國家的語言,尤其是亞洲國家中日韓三國,光中文常用字元就有7000,所以要解決這麼多文字的編碼問題,就需要用更多規模的表示,Unicode是一個巨大的字符集,囊括了世界各地的語言,這樣編碼就更為統一和方便了。但Unicode並沒有規定這些字元具體應該怎麼樣在計算機中存儲,雖然字符集是全的,但計算機中要兼顧效率和方便等問題,UCS-2是其中的一種常用方案,採用兩個位元組來編碼一個字元,這和ascii碼不兼容,而且還有一個大問題,UCS-2並不能表示全部的漢字,漢字的簡繁體加起來總共有六七萬,UCS-2隻有65536個編碼,根本存不下,所以只收入了大部分常用字。也有表示所有漢字的方案UCS-4,不過4個位元組用來存儲漢字,效率就較為低下。

UTF是「UCS Transformation Format」的縮寫,是Unicode字符集的一類高效實現方式。

UTF-8是我個人比較喜歡的一種編碼方式,它是一種針對Unicode的可變長度字元編碼,又稱為萬國碼。它使用1-6個位元組進行編碼,最前面128個編碼內容和ascii碼兼容,所以我們用UTF-8編寫純英文文本是和ascii碼幾乎一樣的。(注意我說的是幾乎)。

如果UNICODE字元由2個位元組表示,則編碼成UTF-8很可能需要3個位元組。而如果UNICODE字元由4個位元組表示,則編碼成UTF-8可能需要6個位元組。用4個或6個位元組去編碼一個UNICODE字元可能太多了,但這樣的UNICODE字元往往是生僻字,極為少見。

這種編碼的思想和哈夫曼編碼是類似的,將高頻字元縮短,低頻字元變長,使得整體的編碼效率更優。

我以前有段時間,就經常將Unicode和UTF-8搞混了,Unicode是字符集,網上不嚴格的情況也指Unicode字符集的常用編碼UCS-2,也就是用兩個位元組編碼的Unicode碼。

MBCS(Multi-Byte Character Set)和內碼錶(codepage)

再介紹兩個字符集中較為深入的概念,MBCS和CodePage。

MBCS(Multi-Byte Chactacter System,即多位元組字元系統),是所有多位元組編碼方案的總稱,MBCS 編程主要用於為國際市場編寫的應用程序。由於往往是針對一國市場只有一種文字,那麼為了節約資源,往往將這些文字用雙位元組或盡量少的位元組的方式進行保存。

因為這些雙位元組文字和ANSI是混合在一起的,為了加以區別,Windows將這些字元的最高位置為1(即這些雙位元組文字的每個位元組都>=127),所以這種表示法可以表示 127x127 約一萬多種非ANSI文字 ,其本上可以表示任何一種語言的常用文字了。於是,Windows為每一個區域版本,都制定了分別獨立的文字編碼,這就是MBCS(多位元組碼)。

而這些分頁後的編碼方式,都被保存成了不同的CodePage(內碼錶,這裡內碼的意思是機器內部編碼,相對於外碼,外部輸入文字用的編碼,例如拼音、五筆、鄭碼等),例如中文就是大家熟知的CP936。要注意,這種編碼方式是早期windows獨有的,由於使用較早,應用也十分廣泛,而CP936和GB2312-80在編碼上則是幾乎一樣的(此處見Wiki百科——漢字內碼擴展規範),後來擴展GBK後,CP936也進行了同樣的擴展。

此技術的使用最早追溯到MS-DOS3.3(1987年4月發行)向IBMPC用戶引進了內碼錶的概念,Windows也使用此概念。

計算機是如何顯示文字的呢?

計算機要對文字進行存儲後就需要顯示出來,而我們的液晶屏都是一個個的像素點組成的,這就必須要對文字進行渲染繪製,發送到顯卡中進行柵格化和顯示等操作。

Dos下最簡單,利用主板BIOS就能對ascii碼進行點陣化輸出。簡單的我們就不再多談,windows下是如何對文字進行繪製顯示的呢?

我們都知道,顯示字體除了要有文字的編碼,還需要有顯示用的字的樣式,這就是 字型檔,windows下的fonts文件夾大家應該都十分熟悉,更改或刪除字型檔就是就是文件的移動而已。而字型檔實際上也有不同的種類的,構建原理也不都相同。

最早的字型檔是點陣字型檔,這種字型檔看起來和黑白圖片貌似沒有什麼大區別,就是記錄像素是黑還是白,我們用windows自帶的字型檔編輯程序,就可以處理這種字型檔。

這種字型檔的缺點也是顯而易見的,首先是縮放不易,在小字體和大字體顯示時都容易失真走樣,而且佔用空間較大。

矢量輪廓字型檔,這種字型檔是用的矢量圖原理進行存儲的,將外部邊界抽象成數學上的矢量線段,可以方便的縮放旋轉等操作。缺點則是連續性不好,放大後就變出行了摺痕,效果不夠理想。

曲線輪廓字型檔,這是通過直線和曲線段共同構造文字的方法,往往使用Bezier曲線對輪廓進行擬合,效果非常好,字體平滑美工,但惟獨就是計算較為費時間。

TrueType字形技術

TrueType採用幾何學中二次B樣條曲線及直線來描述字體的外形輪廓。由一些數學演算法進行對應大小字體的生成,無論放大或縮小,字元總是光滑的。

TrueType字體與PostScript字體、OpenType字體是主要的三種計算機矢量字體(又稱輪廓字體、描邊字體),後綴.ttf。

雖然計算較快,但相比於PostScript字體,質量要差一些,特別是文字太小時,不夠清晰。

所以字型檔一般會對小字體和常用列印字型大小製作對應的點陣字型檔,保證其精度,其他情況則使用TrueType字體。

WOFF–WebOpen Font Format (.woff)

WOFF(Web開發字體格式)是一種專門為了Web而設計的字體格式標準,實際上是對於TrueType/OpenType等字體格式的封裝,每個字體文件中含有字體以及針對字體的元數據(Metadata),字體文件被壓縮,以便於網路傳輸。

其實大家就會發現了,網路上很火的圖標字體,實際上就是根據最基礎的字型檔技術生成出來的。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 處女座的小麻煩 的精彩文章:

英特爾冥王峽谷NUC評測:性能超越GTX 1050 Ti

TAG:處女座的小麻煩 |