CAD字體文件

  33.2.1 簡介

在AutoCAD的早期版本中,僅能通過定義形文件的方式來使用字體。現在AutoCAD可調用Windows系統字庫,支持TrueType字體以及 PostScript字體,但AutoCAD仍提供了許多使用形定義的字體文件供用戶使用,這些字體文件保存在AutoCAD主文件夾的「FONT」子文 件夾中。如果用戶仍不滿足於這些字體,而希望使用具有獨特風格的字體,那麼我們可以用與創建形文件類似的方法來創建新的字體文件。

33.2.2 字體文件的定義

1. 文字字體說明

如果一個形定義文件被用作字體文件,則文件中的第一個條目必須用於描述字體本身,即文字字體的說明。文字字體說明由頭部說明和形狀說明兩部分組成,用以提供字體本身的信息。具體格式如下:

*0,Defbytes,font name

Above,Below,Modes,0

其中:

(1) Defbytes:形狀說明的數據字節數,包括終止符0。

(2) font name:字體名稱。

(3) Above:高位距離,定義大寫字母在基線上方的矢量長度。

(4) Below:低位距離,定義小寫字母在基線下方的距離。

(5) Nodes:定義字體方向,取0表示文字為水平方向,取2表示文字為(水平或垂直)兩個方向。

(6) 0:終止標識符。

2. 字符形狀定義

字符形狀定義與形的定義幾乎完全相同,具體差別在於:

(1) 字符形狀編號為該字母的ASCII碼而不能是任意的編號,因為AutoCAD是按字符的ASCII在繪制字符的,而不是它的名稱。

(2) 雖然AutoCAD並不根據字符形狀的名稱來繪制字符,但仍可在編輯字體文件時應用字符形狀的名稱。一般用小寫字母來指定形狀名稱,小寫的形狀名稱是不會保存在記憶體中的。

(3) ASCII碼中1~31為控制字符,其中只有10用於AutoCAD字體中,用來定義換行(lf)。即將繪圖位置下移一行,而不繪制圖形。例如:

*10,5,lf

2,8,(0,-10),0

33.2.3 字體文件的創建與使用

同形定義文件一樣,我們可以使用文本編輯器來創建字體定義文件。

實例3 創建「USERFONT」字體

(1) 使用Windows附件中的「記事本」程序創建一個新的文本文件。

(2) 在該文件中添加如下內容,如圖33-6所示。

; userfont.shp – user defined fonts

*0,4,userfont

21,7,2,0

*69,14,lte

2,010,1,044,020,2,02A,1,010,2,02b,1,020,0

*72,13,lth

2,010,1,044,2,02C,1,020,2,024,1,04C,0

*76,9,ltl

2,010,1,044,2,04C,1,020,0

*79,8,lto

2,010,1,020,044,028,04C,0

CAD字體文件

將該文件保存在AutoCAD主文件夾的「FONTS」子文件夾中,並命名為「userfont.shp」。

(3) 在AutoCAD中對該文件進行編譯,並載入到當前的字體樣式中。

(4) 在AutoCAD中使用「Text」或「MText」命令繪制文字「HELLO」,結果如圖33-7所示。

CAD字體文件

33.2.4 大字體說明

某些語言(如漢語)的字體包括上千種非ASCII字符。為繪制包含這些文字的圖形,AutoCAD支持稱為大字體文件的特殊格式的形定義文件。由於大字體 文件包含成百上千種字符的字體,因此其處理方式較為複雜。除了使用更加複雜的文件搜尋技術之外,AutoCAD需要某種方法來用雙字節代碼表示字符和單字 節代碼。

大字體形定義文件的第一行必須為:

*BIGFONT nchars,nranges,b1,e1,b2,e2,…

其中各項含義如下:

(1) nchars:指出此集合中近似的字符定義數量。如果此數值過大,且誤差超過百分之十,則速度或文件大小就會受到影響。

(2) nranges:指出有多少個連續區間中的數字用作換碼代碼;換碼代碼是雙字節代碼開始區域的特殊字符代碼。

(3) b1,e1,b2,e2,…:定義了每個區間的開始和結束代碼。

在*BIGFONT行後是字體定義,大字體定義與普通 AutoCAD文字字體相似,區別在於其字符代碼(形編號)最大可以為65535之外。

在一些繪圖規範中,許多特殊符號可以出現在文字字符串中。AutoCAD標準文字字體可擴展包含特殊字符。然而,擴展後的標準文字字體有許多限制,如:

(1) 每個字體文件的形數目為255。

(2) 標準字符集使用約一半可用的形編號。只有代碼1到9,11到31,130到255可用。

(3) 多文字字體需要在每種字體中包含符號定義的副本。

(4) 特殊符號需要用戶輸入%%nnn,此處的nnn是符號的形編號。

而使用大字體機制可以避免這些問題。用戶可以選擇一個或多個不常使用的字符作為換碼代碼,例如使用「|R」來調用希臘字母「Γ」。

當需要在AutoCAD系統中使用大字體時,則要在「Text Style(文字樣式)」對話框中請選擇「Use Big Font(使用大字體)」選項,並在「Big Font(大字體)」下拉列表中選擇所需的大字體文件,如圖33-8所示。

CAD字體文件

33.2.5 Unicode字體說明

標準的AutoCAD字體與主機操作系統使用的字符映射一致。這是因為字符直接按它們從鍵盤獲取的格式保存在數據庫中。用於生成字體的是相同的字符代碼。 當使用存在多種字符編碼標準的重音字符(八位字符)時,這就成為一個嚴重問題。由於字符映射的限制,AutoCAD為其使用的多種代碼頁提供了一組 Unicode字體。這些字體本質上一樣,根據定義的代碼頁的不同,而擁有位於不同位置的字符。如果所使用的字體編碼與圖形中的文字不匹配,可能繪制出錯 誤的字符。

使用Unicode字體時,文字字符串在被繪制前都轉換為Unicode,因此不必再為其他語言或平台提供附加字體。由於Unicode 提供了大字符集,所以一種Unicode字體就能支持所有語言和平台。此功能對用戶是透明的,因為如果必要(由代碼頁的不同決定),圖形在加載時被轉換為 AutoCAD的系統代碼頁。圖形總是以AutoCAD系統代碼頁的形式保存。

但是需要說明的是,Unicode不能為所有亞洲語言提供完整的支持,因此大字體仍然在某些或全部亞洲版本中使用。

Unicode形定義文件在格式和語法上與普通AutoCAD形定義文件一樣,主要的區別為:1. 在字體開始的語法中不同,如下所示。

*UNIFONT,6,font-name

above,below,modes,encoding,type,0

其中font-name、above、below和modes參數與常規字體中的參數一樣。餘下的兩個參數定義如下:

(1) encoding:字體編碼。使用下列整數值:

0

Unicode

1

緊縮的多字節

2

形文件

(2) type:字體內嵌信息。指定字體是否經過授權。授權字體不能修改和交換。(按位編碼的值可以相加。)

可以內嵌的字體

1

不能內嵌的字體

2

內嵌時為只讀

2. 對代碼7子型引用的處理不同。如果形描述包含一個代碼7子形引用,代碼7後的數據將被解釋為雙字節值。這將影響形描述標題中的數據字節 (defbytes) 總數。例如,下列形描述是在romans.shp 文件中包含的:

*00080,4,keuroRef

7,020AC,0

標題中的第二個字段表示形描述中的字節總數。如果用戶不將其和Unicode字體描述一起使用,可以使用3字節而不使用4字節,但這將導致在編譯SHP文 件時發生錯誤。盡管用戶引用的形編號不在雙字節範圍內(小於255),但編譯器仍對該值使用雙字節,因此用戶必須在標題中計算。

3. 形的編號不同。AutoCAD提供的Unifont形定義使用十六進制形編號,而不使用十進制編號。盡管這並不是必須的,但它使得用/U+控制字符值交叉引用形編號更加方便。

小 結

本章主要介紹形的概念和定義,並通過實例來講述了形的創建和使用。

利用形技術,用戶還可以定義文字字體,本章通過一個簡單的實例說明了如何定義和使用文字字體。此外,還簡要介紹了大字體和Unicode字體。