使用
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)換為源形文件的程序,并且對得到的源形文件進(jìn)行修改,編譯得到了令人滿意的二進(jìn)制仿宋體形文件。下面就是具體的實(shí)現(xiàn)步驟。
g5?Fo%W [IYs4Y5 一、二進(jìn)制大字體形文件的結(jié)構(gòu)
o 1b#q/ `?>OY&( ----二進(jìn)制大字體形文件由3部分組成:文件頭、索引部分和形定義部分。
1n,JynJ II2oV}7? ----1.文件頭
6?`py}: V2bod=&Lc ----文件頭包括大字體版本、索引項(xiàng)數(shù)、換碼范圍個(gè)數(shù)、始碼1、終碼1、始碼2、終碼2等等,例:
6D+9f{~r @GEvI2Vf.0 ----“AutoCAD-86bigfont1.0”0D0A1A0800
W}e5 4-lu </}[x2w?] ------------------大字體版本
57#:GN$EL \ pq]q ----CD2B----0300----A100----A300----A600----A600
leiza?[ Di L@NU!$q ---索引項(xiàng)數(shù)---換碼數(shù)-----始碼1----終碼1------始碼2----終碼2
t9=rr>8) +uH1rF_&@ ----2.索引部分
2{qoWys8[ Sz._XY^ ----每個(gè)索引項(xiàng)8個(gè)字節(jié),包括編碼、形定義字節(jié)數(shù)及形定義在形文件中的偏移位置,例:
3sL#_@+yz )h/fr| ----0000----0E00----935E0100
vu1:8j *s/F4?* ----編碼-------長度---------偏移
5H5<ft, %>s y`c ----3.形定義部分
r9QNE>UG D4S>Pkv ----編碼為0的形定義格式比較特殊,為字體名、0、字高、向下、方式、0,例:
.$r(":A#) xOt|j4 ----“HZ1/6/92”----00----7F----00----02----00
m/{rmtA4 |5W u0T -------字體名---------------字高----向下----方式
c~Ha68 >Qi2;t~G ----其他編碼的形定義以1個(gè)字節(jié)00或2個(gè)字節(jié)3000開頭,其后為有效形定義字節(jié)。
'Kq%tM26! 08twcY;&k 二、大字體源形文件的格式
LsmC/+7r$1 YlYTH_L>E ----*BIGFONT字符數(shù)目,換碼范圍個(gè)數(shù),始碼1,終碼1,……
phNv^R+ v3[
2!UXq ----*0,4,字體名
*v&g>Ni :JOF!Q ----字高,向下,方式,0
t#d~gBe?V [3\}Ca1