使用
AutoCAD的用戶都有這樣的感受:所使用的仿宋體漢字與小字體的數(shù)字字母寫在一起時(shí)大小不協(xié)調(diào),數(shù)字字母顯得比漢字大,漢字中的一些符號(hào)位置偏低,影響美觀,因而希望通過修改漢字形文件來改變這種狀況。但修改漢字形文件,需要ASCII碼的源形文件(.shp),通常我們只有編譯后的二進(jìn)制漢字形文件(.shx),沒有漢字的源形文件。漢字形文件是大字體形文件,筆者經(jīng)過探索,弄清了編譯后的大字體形文件的結(jié)構(gòu)以及幾個(gè)在參考資料上不見公布的形定義特殊碼含義,據(jù)此編制了將二進(jìn)制大字體形文件轉(zhuǎn)換為源形文件的程序,并且對(duì)得到的源形文件進(jìn)行修改,編譯得到了令人滿意的二進(jìn)制仿宋體形文件。下面就是具體的實(shí)現(xiàn)步驟。
=JDa[_lpN B,NHy
C1i 一、二進(jìn)制大字體形文件的結(jié)構(gòu)
Hphfqdh0` )K>2 ----二進(jìn)制大字體形文件由3部分組成:文件頭、索引部分和形定義部分。
r$/.x6g// S!{Kn ;@ ----1.文件頭
fs3jPHZJ# ];7/DM#Np ----文件頭包括大字體版本、索引項(xiàng)數(shù)、換碼范圍個(gè)數(shù)、始碼1、終碼1、始碼2、終碼2等等,例:
48W-Tf6v| ;sZHE&+ ----“AutoCAD-86bigfont1.0”0D0A1A0800
\+I+Lrj% ?5Ub&{ ------------------大字體版本
>&DNxw 67b[T~92o ----CD2B----0300----A100----A300----A600----A600
ZNjqH[ f%ynod8 ---索引項(xiàng)數(shù)---換碼數(shù)-----始碼1----終碼1------始碼2----終碼2
se^(1R k #h~v(Z} ----2.索引部分
\-scGemH jb
{5
----每個(gè)索引項(xiàng)8個(gè)字節(jié),包括編碼、形定義字節(jié)數(shù)及形定義在形文件中的偏移位置,例:
{z0PB] U (Gp|K6 ----0000----0E00----935E0100
KGq4tlM6 *s}j:fJ ----編碼-------長度---------偏移
7nOn^f D )WR*8659e ----3.形定義部分
TkjPa};R [R9!Tz ----編碼為0的形定義格式比較特殊,為字體名、0、字高、向下、方式、0,例:
1u\kxlZ .!`v2_ ----“HZ1/6/92”----00----7F----00----02----00
eK_Yt~dj .0H!B#9 -------字體名---------------字高----向下----方式
`ek On@T0 ;x~[om21; ----其他編碼的形定義以1個(gè)字節(jié)00或2個(gè)字節(jié)3000開頭,其后為有效形定義字節(jié)。
$KGpcl AQe~F 二、大字體源形文件的格式
H,5##@X EHC^ [5 ----*BIGFONT字符數(shù)目,換碼范圍個(gè)數(shù),始碼1,終碼1,……
q1O}dSPwX r1!]<=