一 编码标准

      GBK全称《汉字内码扩展规范》,GB即"国标",K是"扩展"的汉语拼音第一个字母。GBK向下与GB2312编码兼容,向上支持ISO 10646.1国际标准。
      ISO 10646是国际标准化组织ISO公布的一个编码标准,简称UCS,与Unicode住址的Unicode编码完全兼容。GB13000.1等同于ISO 10646.1。
 

二 码位分配及顺序

      GBK采用双字节表示,总体编码范围为0x8140-0xFEFE,首字节在81-FE之间,尾字节在40-FE之间,剔除xx7F一条线。总计23940个码位,共收入21886个汉字和图形符号,其中汉字(包括部首和构件)21003个,图形符号883个。全部编码分为三大部分:
      1  汉字区,包括:
          a. GB2312汉字区。即GBK/2:B0A1-F7FE.收录GB 2312汉字6763个,按原顺序排列。
          b. GB13000.1扩充汉字区。包括:
              (1) GBK/3:8140-A0FE。收录GB 13000.1中的CJK汉字6080个。
              (2) GBK/4:AA40-FEA0。收录CJK汉字和增补汉字8160个。CJK汉字在前,按UCS代码大小排列;增补的汉字(包括部首和构件)在后,按《康熙字典》的页码/字位排列。
      2  图形符号区。包括:
          a. GB2312非汉字符号区。即GBK/1:A1A1-A9FE。其中除GB2312的符号外,还有10个小写罗马数字和GB 12345 增补的符号。计符号717个。
          b. GB 13000.1扩充非汉字区。即GB/5:A840-A9A0。BIG-5非汉字符号、结构符和“〇”排列在此区。计符号166个。
      3  用户自定义区(使用者加字区):分为(1)(2)(3)三个小区。
          (1)  AAA1-AFFE,码位564个。
          (2)  F8A1-FEFE,码位658个。
          (3)  A140-A7A0 ,码位672个。
          第(3) 区尽管对用户开放,但限制使用,因为不排除未来在此区域增补新字符的可能性。
 

三 提取字库图片

      使用工具“字模提取V2.2”。1) 新建16*16的图像,并将参数设置为纵向取模;2) 将要提取的字模用CTRL+V粘贴进入文字输入区中;3) 点“C51格式”按钮生成图片数据。

四  字库数据生成

     将用“字模提取V2.2”提取到的点阵数组,按顺序写入到BIN文件中,就是可使用的字库文件了。
      1) 工具FontToBin(C51)中实现了将点阵数据按要求写入到BIN数据中.
     2) 程序显示字符的时候,只要找到Bin文件所在位置,根据GBK码值,算出在BIN中的偏移,显示16*16的图片即可。例如 0XB0A1段的汉字,地址计算如下: 
        adder = (xs_ma/256 - 0XB0) * (0XFF - 0XA1) + (xs_ma%256 - 0XA1);/*xs_ma为GBK码值*/
        adder = ADDER_GBK_B0A1_F7FE + adder * 32;                       /*ADDER_GBK_B0A1_F7FE为B0A1段字库在BIN中的偏移*/
      

五  相关工具 

      相关工具下载http://download.csdn.net/detail/qqbitqqbit/5130563
Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐