📄 国标字库.txt
字号:
用【 小 | 中 | 大 】字体浏览
硬件:请教有关国标字库 [流星雨] [48次] 01-10-11 下午 02:23:41
我现在用到字库,需要用字量很大,所以选用国标字库,但是不了解国标字库的组成,也不知那
本书上介绍,有那位帮帮忙,指教一二,thanks.
参考意见 [逍遥派开派掌门人] [48次] 01-10-11 下午 02:48:20
找以前DOS版汉字操作系统的书查查,很老了,要耐心找。
每个汉字是由区码和位码作为索引的;
划分为87区(区码),每区有94个字(即位码)
1--15区是基本的ASCII符号和制表符、特殊符号;
16--87区是国标汉字。
按拼音字母的顺序排列,
16点阵的,32byte/汉字;
24点阵的,72byte/汉字;
国标字库还分为1级字库、2级字库。
其它的详细情况查书吧。
汉字GB码-->地址转换的编程参考: [鹊桥老仙] [47次] 01-10-11 下午 03:35:50
#define LCD_X 8
#define LCD_Y 4 /*LCD大小:LCD_X*16,LCD_Y*16 像素*/
#define Hzk_SIZE 1024*8
#define LCD_Dis_RAM_Head 0x8000 /*显存起始位置*/
data uchar chCursorSiteNow_X=0,chCursorSiteNow_Y=0; /*当前显示位置*/
xdata uchar Lcd_RAM[32][32] _at_ LCD_Dis_RAM_Head; /*LCD映射显存*/
xdata uchar HzkModel[1024][32] _at_ 0x0000; /*汉字起始位置*/
//*****************************************************
//汉字显示子函数
//内部函数调用
//*****************************************************
void putHZ(unsigned char *str)
{
int iHZ_GB2312;
unsigned char j,rom_page;
uint i;
iHZ_GB2312=*str;
iHZ_GB2312=(iHZ_GB2312-0xa1)*94;
str++;
iHZ_GB2312+=(*str-0xa1); /*将汉字GB码转换为汉字相对地址(int)*/
rom_page=iHZ_GB2312/0x400; /*得到页地址*/
rompage=rom_page; /*设置ROM页*/
i=iHZ_GB2312-rom_page*0x400; /*得到字库相对表指针*/
for(j=0;j<32;j++)
{
Lcd_RAM[8*chCursorSiteNow_Y][32*chCursorSiteNow_X+j]=HzkModel[i][j];
}
chCursorSiteNow_X++;
if(chCursorSiteNow_X>=LCD_X)
{
chCursorSiteNow_X=0;
chCursorSiteNow_Y++;
}
}
一点补充修正 [Oldkey] [27次] 01-10-11 下午 04:03:28
GB2312标准,共6763个汉字,其中一级字库3755个,二级字库3008个。
机内码为区位码+80H+20H,对应的汉字区码从B0H、位码从A1H开始,到F7FEH止,每区94个
汉字。
GBK编码为20902个汉字,其中GB部分兼容。
点击这里回复这篇贴子>>
_____________________________________________________________________________
Copyright?,C51BBS论坛 2000-2002
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -