TrueType和OpenType字庫簡介

    過去我們經常接觸的字庫類型有兩種,它們分別是TrueType字庫和PostScript字庫。

 

    TrueType是由Apple和Microsoft在1991年共同推出的,供前端排版時顯示和打印輸出。它用數學函數描述字體輪廓外形,含有字形構造、顏色填充、數字描述函數、流程條件控制、柵格處理控制、附加提示控制等指令。TrueType採用幾何學中二次B樣條曲線及直線來描述字體的外形輪廓,其特點是:TrueType既可以作打印字體,又可以用作屏幕顯示;由於它是由指令對字形進行描述,因此它與分辨率無關,輸出時總是按照打印機的分辨率輸出。無論放大或縮小,字符總是光滑的,不會有鋸齒出現。但相對PostScript字體來說,其質量要差一些。特別是在文字太小時,就表現得不是很清楚。雖然打印質量沒有PostScript字庫好,但是完全可以滿足一般用字的需求。

 

  PostScript是Adobe於1985年發表的文件描述技術,按該 PostScript頁面描述語言語法定義的字庫就是PostScipt字庫,其主要特點是可以精確地描述繪製字型,因而按印刷工業中的質量標準,PostScript字庫在平滑性、細節和忠實性方面比TrueType字庫要好。PostScript字庫一般裝於後端輸出設備如激光打印或RIP軟件中,而它在前端的使用需要依靠特殊的軟件比如Adobe 的ATM,由於PostScript字庫在操作系統軟件中的兼容性不是很理想,目前主要還是用於後端輸出。

 

    OpenType也叫Type 2字體,是由Microsoft和Adobe公司開發的另外一種字體格式。它也是一種輪廓字體,比TrueType更爲強大,最明顯的一個好處就是可以在把PostScript字體嵌入到TrueType的軟件中。並且還支持多個平臺,支持很大的字符集,還有版權保護。可以說它是Type 1和TrueType的超集。OpenType標準還定義了OpenType文件名稱的後綴名。包含TureType字體的OpenType文件後綴名爲.ttf,包含PostScript字體的文件後綴名爲.OTF。如果是包含一系列TrueType字體的字體包文件,那麼後綴名爲.TTC。

 

    OpenType的主要優點有: 1)增強的跨平臺功能 2)更好的支持Unicode標準定義的國際字符集 3)支持高級印刷控制能力 4)生成的文件尺寸更小 5)支持在字符集中加入數字簽名,保證文件的集成功能。

 

  Adobe和Microsoft從1995年就開始着手聯合開發OpenType項目,該項目除了開發一種新型的跨平臺字體文件格式外還旨在爲用戶提供具有更豐富排版特性的字體格式,目前該字體格式已經成爲一種業內標準,越來越多的軟件支持OpenType字體格式,越來越多的字體廠商將自己的字庫升級到OpenType字體格式。

 

  Microsoft從Windows 2000系統開始兼容OpenType字庫,其系統自帶的西文字庫都已升級到了OpenType字體格式,蘋果公司也從MAC OS X開始完全兼容OpenType字庫。而Adobe 公司不僅將自己Adobe 字體全部升級到OpenType格式,還推出Adobe Creative Suite 2 軟件包,其中的InDesign,Illustrator 和Photoshop對OpenType 的排版特性都有非常好的支持。

 

  同一個OpenType字體文件可以用於Mac OS,Windows 和 Linux系統,這種跨平臺的字庫非常方便於用戶的使用,用戶再也不必爲不同的系統配製字庫而煩惱了。我們從以下幾個方面更詳盡地瞭解一下OpenType字庫:

 

  A、 文件結構

  從OpenType文件結構來說,確切地講它是TrueType 格式的擴展延伸,它在繼承了TrueType格式的基礎上增加了對PostScript字型數據的支持,所以OpenType的字型數據即可以採用TrueType的字型描述方式也可以採用PostScript的字型描述方式,這完全由字體廠商來選擇決定。從文件結構的角度來講OpenType或許並不是一種真正新的字體格式,但是該字體格式所增加的排版特性卻從功能上爲用戶開闢了新的用字方式,爲用戶提供了更高效率的排版模式。

 

  B、 字型描述方式

  OpenType字體帶有“O”圖標。如果在雙擊Arial字體文件,可以看到如下畫面:
     http://p.blog.csdn.net/images/p_blog_csdn_net/brucehuang1982/EntryImages/20091025/font.PNG
  
  "OpenType Font,Digitally Signed,TrueType Outlines"說明這款OpenType字庫採用的就是TrueType描述方式,這種字庫在原有的TrueType字庫的基礎上增加入了OpenType的排版特性使其升級到了OpenType字庫格式,這些排版特性的加入可以更好地控制字型的替換和排版位置。

 

     過去前端可使用的PostScript字庫很少,一般是Type1字庫,它僅能容納256個字符,顯然這種字型格式不適合我們的中文字庫,並且不是所有軟件都支持這種格式。而OpenType字體格式不僅可以包含上萬的字型,而且兼容性非常好,對於圖形或排版的專業人員來說前端使用CFF OpenType字庫是很好的選擇。目前Adobe在大陸發行的Adobe CS 2 專業版、標準版、InDesign CS2軟件均提供一張漢儀開元字寶光盤,該產品就是30款 CFF OpenType 字庫。

 

  C、 編碼方式

  OpenType字體格式採用Unicode編碼,Unicode是國際編碼標準,它爲不同語言的字型分配了唯一的編碼,幾乎包含了世界上的所有字符,每個字符都有一個單一的Unicode值,所以在同一款OpenType字庫中可以同時包含很多種語言的字型,比如西文、中文、韓文、日文、俄文等,從這方面講OpenType是一種兼容各種語言的字體格式。

 

  目前OpenType 可以包含65,000 多個字型,對於中文字庫而言最基本的字彙應該包含GB2312-80標準的6763個常用字型,這些字應該能滿足一般用戶的使用,對於戶籍管理、銀行系統和出版社等用戶而言需要2萬多字甚至7萬多字的支持。

 

   D、 排版特性

  這是OpenType字體格式最突出的特點,它可以協助排版用戶更快地設計出色版面,比如提供了分數字、上下標、連筆字的替換功能。下面舉一些例子:

 

  自由連筆功能: 有些用戶可能在排以下符號時會覺得字母之間距離過大,會通過調字間距的功能來縮小間距,如今字體廠商可以在字庫中爲用戶做一些常用的連筆字型,然後利用OpenType的自由連筆特性將這個字型與需要連筆的字符進行關聯,在Indesign中打開OpenType的自由連筆字功能,用戶在敲“m”“m”兩個字符時就自動被一個“mm”圖形所替代。

 

  分數字,上下標功能:當文章中需要敲一些分數字或上下標時用戶往往會爲數字的位置高低而煩惱,同樣利用OpenType的分數字、上標、下標、分子字、分母字的功能可以幫用戶很快實現用戶想達到的效果。

 

  花飾字功能:在排英文版面時,如果段落的第一個大寫字母是一個漂亮的花體字是不是很漂亮呢,現在OpenType提供的花飾字功能就可以達到錦上添花的效果。  

 

    最後,介紹一點利用GDI+繪製文字Outline的方法。基本思路就是將一串文字傳入GraphicsPath::AddString方法,獲取這串文字的Outline,然後利用Graphics::DrawPath繪製出來。例如,

 

    #include <Gdiplus.h>

    void CScratchPadDlg::OnPaint()
    {
        //CDialog::OnPaint();
        CPaintDC dc(this);
        using namespace Gdiplus;
        Graphics graphics(dc.GetSafeHdc());
        graphics.SetSmoothingMode(SmoothingModeAntiAlias);
        graphics.SetInterpolationMode(InterpolationModeHighQualityBicubic);

        FontFamily fontFamily(L"Arial");
        StringFormat strformat;
        wchar_t pszbuf[] = L"Text Designer";

        GraphicsPath path;
        path.AddString(pszbuf, wcslen(pszbuf), &fontFamily,  FontStyleRegular, 48, Gdiplus::Point(10,10), &strformat );
        Pen pen(Color(234,137,6), 6);
        graphics.DrawPath(&pen, &path);
        SolidBrush brush(Color(128,0,255));
        graphics.FillPath(&brush, &path);
    }


    當然,這只是最基本的一點思路,繪製出來的效果不一定如你所願。如果想達到Photoshop或者像WPF中的那些特效,還得下許多功夫。下面有一些可供參考地方,

 

Reference:

http://www.codeproject.com/KB/GDI-plus/OutlineText.aspx

http://outlinetext.codeplex.com:80/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章