白叔写的汉字显示程序(内嵌ASC16)+HZK16 (小更新,添加GBK12、14字库显示)



掌叔
2009-11-24 19:00:59

居然让我发现白叔写的一篇教程,这么好的教程是一定要转过来的!

看见N多人都写了显示中文的程序,我也写一个练练手,

主要代码:
Printf16("<>" ,cgX ,cgY ,10 ,COLOR_YELLOW );

它把所有的工作都包办了,总结一下中文显示需要用到的知识:

1、汉字的内码(1个汉字由2组数字(内码)组成,2组数字记录了汉字在字库文件中的位置)

2、点阵字的概念(中文字是"画"出来的,通过内码从字库读出字模信息后并画出来)

3、二进制运算(字模信息是16进制数,转换成二进制数后变成了汉字的字模),看图说话:

[attach]1925[/attach]

4、显示(二进制位为1时就在屏幕画点,其中奥妙自己琢磨....)

[attach]1926[/attach]

[attach]1927[/attach]

小小的更新一下,添加了内嵌ASC14和GBK12、GBK14的汉字显示,其实算法还是一样的,有些兄弟

用了GBK字库以后就显示不了汉字,其实是位移量没给对,下面给出正确的位移量,以"ABCD"为例:

HZK字库位移量:( 94*(AB-0xa1) + (CD-0xa1) ) * 一个汉字在字库中的大小(字节)

GBK字库位移量:( 0xbf*(AB-0x81) + (CD-0x40) ) * 一个汉字在字库中的大小(字节)

GBK字库里面好像有繁体字,不知道能不能当繁体字库用,位移量该怎么算,知道的兄弟麻烦告知一下

最后放上源码和程序,3.71m33-4通过

[attach]1928[/attach]


strayway
2010-03-03 16:04:29

UTF-8可以支持吗?


kedumz
2010-10-03 14:46:39

编译错误!


kedumz
2010-10-03 14:47:16

[quote]编译错误!
[size=2][color=#999999]kedumz 发表于 2010-10-3 14:46[/color] [url=http://www.yayabo.cn/redirect.php?goto=findpost&pid=134544&ptid=1400][img]http://www.yayabo.cn/images/common/back.gif[/img][/url][/size][/quote]

C: emplittle>make
psp-gcc -I. -Ic:/devkitPro/devkitPSP/psp/sdk/include -O2 -G0 -Wall -D_PSP_FW_VER
SION=150 -L. -Lc:/devkitPro/devkitPSP/psp/sdk/lib main.o -lpspdebug -lpspdis
play -lpspge -lpspctrl -lpspsdk -lc -lpspnet -lpspnet_inet -lpspnet_apctl -lpspn
et_resolver -lpsputility -lpspuser -lpspkernel -o xx.elf
c:/devkitpro/devkitpsp/bin/../lib/gcc/psp/4.3.5/../../../../psp/liblibc.a(lib_a
-isattyr.o): In function `_isatty_r':
: undefined reference to `_isatty'
collect2: ld returned 1 exit status
make: *** [xx.elf] Error 1

怀疑是libc.a库的问题。版本不对?