利用C语言编程实现小型矢量汉字库的创建及调用资料下载.pdf
- 文档编号:5980901
- 上传时间:2023-05-05
- 格式:PDF
- 页数:4
- 大小:142.84KB
利用C语言编程实现小型矢量汉字库的创建及调用资料下载.pdf
《利用C语言编程实现小型矢量汉字库的创建及调用资料下载.pdf》由会员分享,可在线阅读,更多相关《利用C语言编程实现小型矢量汉字库的创建及调用资料下载.pdf(4页珍藏版)》请在冰点文库上搜索。
由于每个汉字的索引信息为8个字节,小型矢量字库的索引信息区长度为256字节,矢量数据区将从字库第257字节处开始存放第一个汉字的矢量数据。
若要增加存放汉字的数量,只需修改符号常量MAx的数值最后用c语言编写程序,编程的思路是这样的:
首先根据运行程序所带的参数打开相应的矢量字库,如果没带参数,则程序终止并提示操作方法;
如果要打开的矢量字库不存在,同样显示提示信息并退出。
接着打开文本文件HZTxT和小矢量字库文件XSLHZK,从文本文件HZTxT读取第一个汉字的内码,换算出它的区位码,写入小矢量字库的索引信息结构中。
再根据其内码计算出它在原矢量字库索引信息中的首址,从中读出6个字节的索引信息,然后根据索引信息中的地址及长度,在原矢量字库中读出相应的矢量数据,将其写入小型矢量字库中的矢量数据区。
而小字库索引信息中的地址应等于MAx*8,索引信息中的长度等于原矢量字库索引信息中的字形数据长度,将这两项数据写入小字库的索引信甚中。
接着读取第二个汉字的内码,其操作同前,但第二个汉字索引信息的地址应等于第一个汉字的地址加上第一个汉字的字形数据的长度,如此循环直到文本文件结束为止根据以上思路编写出程序xs】ZKC,在TurboC20集成环境下进行编译,生成XSLZKEXE文件,运行XSLZKEXE就可建立小矢量汉字库XSLHZK。
运行XSLZKExE程序必须在C盘uCDOS子目录下有”HzKSLSTJ、HzKSLFSJ、HZKSI,KTJ”、”HZKSLHTJ”矢量字库。
该程序运行格式如下:
XSLZK回车其中:
S表示生成宋体小型矢量汉字库;
F表示生成仿宋体小型矢量汉字库;
K表示生成楷体小型矢量汉字库;
H表示生成黑体小型矢量汉字库。
四者必须选择其中一种。
如果要建立以上四种以外的字体如隶字体,则必须在UCDOS子目录下有其相应的矢量字库文件,并把程序中相应的语句稍作修改即可小型矢量汉字库建立以后,可由XSIHZKYSC编译链接生成演示程序,该程序运行就调用小型汉字库,首先根据要显示的汉字区位码,在打开的小型矢量字库的索引信息中寻找,找到后根据其提供的地址、长度信息在矢量数据区读出相应的矢量数据,然后解码还原,得到其轮廓多边形各顶点的坐标,用fillpoly()函数画出多边形并填充,即可显示矢量汉字xslzkc创建小型矢量汉字库源程序#Inolude”stdlo#defineMAX32typedefstructunsignedlongaddrunsignedin1size;
sip:
typedefslructunsignedin1owrfl:
unsignedlongaddrunsgnedintsize:
sire;
voidquit(void;
main(intargc,char*argv)unsignedcharch,n2slPhi1slmzMAX-:
lntitk,0mtwmiIongrscFILE*fp,*fp1,texlfpif(argcf=2)err:
printf、nUsage:
xslzkn”t叫ntf(”、门s:
STf:
FSkKTh:
HT)6,xlt
(1)islrcpy(n,argvt:
)istrupr【n);
ch=nO;
swltch(ch)caseS:
if(fp=open(c:
ucdoshzkslsti“”rb)=NULL)qui1(】breakcaseF:
if(fp=foben(”clucdoshzkslfsl,”rb)一=NULL)qL1()breakcageK:
if(晒一open(”c:
ucdoshzkslkq,rb)=一NULL)qui()IbreakIcaseH:
if“fpfopen(c:
ucdoshzkslhti,rb)=NULL)quit();
break;
default:
galaerr;
|f(f01一openxslhzkwb”)一=NULL)fprint1(13Can1openwritefile!
):
exi1
(1);
一if(textfp=fopen(”hztxl,rb)一一NULL)、prinlf(毋Can、1openhzfxlfileI_|1exit
(1):
kfilelength(filen0(textfD)2Iforioi一k)电脑缩程技巧与维护1998年第9期29峙_可_维普资讯http:
/P缡程语言R0GRAMLANGUAGEzjqwm=0z门addr0;
z门size=0eIseqrr:
(1ge1c(fextfp)一OxoO)8-Ox7fwm=tfgetc(textf0)一Oxa0)B0xf;
zjdwm=qm*lOOwm;
rec=(qrr一16)94一wm1fseek(fp,(1ong)rec*6SFKSET);
fread(髫nI51fp);
Ijsize=hisizeti=一0)zr0aadr一8MAXel,ejoadrz1addrz1:
slzefvrite(1_8,1,fp1)iprntf(dxxz门qwmz门addr,zll:
size)seek(IexI1000)1Ie(IecI(iexgp)drrt1ge1textfp、一Oxao)60x7tiwp3一(1gelc(1extfp)一tlxao)蛐7f:
rec一(cm16)*g4一wm一1:
1seek“0(ong)rec*6SEEKSET)lredfhfp);
fseeK(fphIodorSEEKSET);
or(i:
;
ihIsIzei+)chfgetc(fp;
0u。
:
cn1p1)pnntf-slhzkPlOdeok!
”IosealI(t;
pnntcCanfopenhzkslJfile。
l_。
Jet1);
XSLHZKYSC1、型矢量慢字库J亚用示倒源程序*,inciudesc0Ioh#iqcude0raDhicshqeiliMAX32ypedefstruct-JnsignedInlqwm;
JnslgnedlongaddruI:
s;
gnedns2e:
nzMAX一:
TIdIrqIgrLJJodoJIslhziqlsxinlsyirllWW,intwhintwdirRco,一Lqsgnedchars:
Icheekhz(unsignedin!
c)Im口lin,lgr30电脑缛程技巧与维护1998年第9期setcolorLIGHrGRAY);
setfiIIstyle11t;
bar3d(0,06394791O);
outslhz(Z254040401013”高等院校)outslhz(8010060,Bo014学生成绩管理系统”)outslhz(2l04003333,5,11”西安通信学院)IgetchIosegraph();
voIdoutslhz(jntsx,Incsy,Intww,In1whintwd,Intcounsignedchar*s)FILEfpiunsignedcharqm-wm:
charchEl024iunsignedIntreln1mx,mytdx-dyk,xyLz56amntnum=q;
【n1x0一yO,x1Y1i一flagcotJxsys;
lntg,lflog0xO=s;
v0一syIfor(k=oiK256;
k+xyk=0ilp=fopentxshzk“,rb;
If(fp一一NULL)closegroDh()IprintlConfopenxslhzk。
);
ext(0j;
fseektlpO,SEEKSET)foF(c一0tMAX卜+)1read(I=f3,】fp);
whiie(*s):
qm一(sOxa0)80x7flwm一(s+1)一0xaO)Ox?
freqm*】00+wm;
achcekhz(re);
fseek(fptzigoddr,0);
faro=0;
IzEqsizeI+jchi=getc(t口):
0k=osetcolor(co);
IOl(I=o【zqsize;
)switch(chi:
)曲xc0)CaSe0xc0:
If(flag一1)setlillslyle(1,co)fiIlpolvpoinlnum,xy);
for(k=o;
k256k+)xyEk一o;
palntnum=0kodx=(ch-i0x31)7)dvchEil&
Oxrf;
xs=dxys=dyx0=sx+Kswwg6;
y0=sv+yswh6;
xylh一x0ik+;
xyk=y0ik4-4-;
-4-:
2:
poJntnum4-十flag=1Ibreak;
case0x8,3:
rrx=mV一1;
swiICh(ch门)x30)cQse0Xa3;
If(chimo8)mx=一hdxch-iOx07;
if(chi4-l&
OxeO)mv一一】;
维普资讯http:
/缟程语言ROGRAMLAGUAGE勰dy=chi+】8,Dx7f;
l+一2:
eak:
case帆10:
if(chjgZ,xOg)my=】;
dy=chi&
oxo7;
ll(chD+1&
OxSO)mx一一1;
dx=chi+18,OxTf;
l+一2tbreak:
cOseOx2O:
ociseOx3O:
lI(chi+1&
ox8o)mx一一1;
dx=chFi-f-1gs0xTf;
li(chFi+2&
Ox8O)my=1;
dy=chFi4-2gs0xTf;
l+=3;
break;
xs+=dx*mx;
ys一一dymy;
x1一sx+xs*ww96;
ylsy+ys*wh96;
xyCk=xlIk+;
xy-k一y1Ik4+;
ooncnum+oreok;
caseOx40:
switch(chi呱so)coseOxO0:
mx=1)my=】)break;
caseOx10:
mx一1)my=l;
break:
c09eOx20lmx一1Imv:
一1breakIcaseOx30:
mx=1mv一一1bceak;
COU=chFi&
OxOf;
foe(J一0;
J4;
dy=chD+J+】&
ox0fIxs+=mxdx;
ys+一mvdy;
xl=s,x4-xs*ww96:
Y1一sy+yswh96xyk=xl;
k+;
xyEk=ylk+;
pointnum4-+i一一COU一1;
breakcaseOxOO:
COUchiJOxSf;
f0r(J一0J4;
dy=(chCi+J十】0x07);
xsxsmxdx;
ysys+mydy;
xlsx+xsww96:
Y1=sy+ys*wh96xv卧一nk+一v1k+poincnum+4-;
+=COU+1breok“polv(poinmumrxy);
for(kO;
k256:
k+jxyk=O;
pointnum一0;
kO;
s+一2;
sxsx+ww+wdfcJose(ip)inldvDETECT,md=o;
reglslerbgldrlver(EGAVGAdriver)initgraDh(8v,d,”);
inlchcekhz(unsignedinl0)unsignedintfe;
for(p=0P一)rezEpcwmff(re=oJreturn(P)(收稿j期:
1998年4目13日)东方远望诚征防病毒伙伴美国网络联盟公司(NAI)凭借其出奇制胜的拳头产品网络二具(NetTools),为名美国财富杂志垒球500强80的企业提供计算机安全保障。
据IDC资料显示,NAI产品在垒球反捅毒市场占有率寿68,居领先地位。
NAI全球用户达三千万,二千童员工遍及六大洲,业务覆盖65A国家。
北京东方远望科技发展公司作为NAI中国总代理及产品授权维护中心,坚持以“适中的价格,上乘的服务赢得市场的经营理念。
NAI指定东方远望公为总代理,旨在借助东方远望公司对NAI反病毒产品四年代理约丰富经验和与经销商台作的良好声誉。
为共同推广NAI垒系巩网络管理产品(防杀病毒、信息加密、网略黑客监理、防火墙、网络匡生和帮助平台),东方远望特
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 语言 编程 实现 小型 矢量 汉字库 创建 调用