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
將該文件保存在AutoCAD主文件夾的“FONTS”子文件夾中,並命名為“userfont.shp”。
(3) 在AutoCAD中對該文件進行編譯,並載入到當前的字體樣式中。
(4) 在AutoCAD中使用“Text”或“MText”命令繪制文字“HELLO”,結果如圖33-7所示。
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所示。
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文 件時發生錯誤。盡管用戶引用的形編號不在雙