点阵字介绍
什么是点阵字?
对于一个屏幕来说,就是无数个点组成的平面,通过设置每个点的颜色来显示图形。
因此只要设置好每个点的颜色,那么当然也可以显示文字。
为什么要用它?
对于旧的系统或者类似NDS这种嵌入式系统没有足够的空间去存储其他文字。
所以人们利用图形模式,把文字的点阵信息事先存好然后再通过画图的方式显示他们。
需要准备些什么?
你需要一些点阵字库
比如中文字符库HZK12/16/24/宋体/楷体….
比如英文字符库ASC12/16/24/其他字体…..
另外你的开发平台需要拥有画点的函数。
一些介绍
关于HZK16,这是最常用的一个点阵字符集。
他把一个汉字按照16×16的像素来描绘。
你需要一个长度为32的字符串来存储这些数据。
一个中文被分为左右两部分。先描绘左面的16行8列然后是右面的。
关于HZK12,这是一个12×16的字库。
这种存法只是为了查找方便。其实{zh1}的一个字节是没有东西的。
所以你需要一个长度为24的字符串来存储他。
如何换算一个GB2312在HZK中的位置?
本文以HZK12为例,HZK16/24你可以非常轻易的搜索到。
//汉字string[2]=”
char string[3] = “我”;
//该汉字在HZK12中的偏移地址
long offset = 0;
//转换用字符
char qh,wh;
//点阵信息
char chartemp[24];
//HZK12文件
FILE fr* = fopen(“HZK12″,”rb”);
//开始转换
qh = strings[0] – 161+256;
wh = strings[1] – 161+256;
offset = (94*qh+wh)*24;
//寻找便宜地址
fseek(fr,offset,SEEK_SET);
//读取点阵信息
fread(chartemp, 24, 1, vb.testRead);
//显示他们
for(j=0;j<12;j++)
for(i=0;i<2;i++)
for(k=0;k>k))
//这是NDS用的描点函数x,y为输出的位置的偏移量,RGB为16bit调色板。
video_bufferprint[(j+y)*256 + k+i*8 + x] = RGB15(r,g,b) | BIT(15);
//下一个汉字的输出位置的偏移量
x = x + 12;