最近因为工作需要,学习了一下GBK相关的知识,关于gbk的介绍请参照http://blog.sina.com.cn/s/blog_49677f890102w51b.html。

本文从三个小方面来讲述一下gbk的学习-gbk字库的制作;从gbk字库中读取某一个汉字的字模数据;利用字模数据打印出汉字

1、gbk字库的制作(感谢战舰)

相关软件下载:http://download.csdn.net/detail/scalerzhangjie/9545477

软件配置如下所示,点击创建后提示输入文件名称,之后就会生产gbk字库文件(大小是766080字节)。


如果嫌麻烦,可以直接到如下网址下载:

http://download.csdn.net/detail/scalerzhangjie/9545480

(字库名称为:GBK.DZK,下文会用到)



2、从gbk字库中读取某一个汉字(苹)的字模数据

代码如下:

#include <sys/stat.h>
#include <stdio.h>#define FILE_NAME "GBK.DZK"
#define STR_HZ "苹"int get_gbk_offset(char * hz_code)
{unsigned char high = hz_code[0];unsigned char low = hz_code[1];printf("high:%x, low:%x\n", high, low);if (low < 0x80){return ((high-0x81)*190 + (low-0x40))*32;}else{return ((high-0x81)*190 + (low-0x41))*32;}
}unsigned char gbk_hz_buf[100000000];long file_size(const char *file)
{int i = 0;int offset = 0;long length = -1;FILE *fp = fopen(file, "rb+");if (fp == NULL) {return length;}fseek(fp, 0, SEEK_END);length = ftell(fp);   rewind(fp);fread(gbk_hz_buf, 1, length, fp);offset = get_gbk_offset(STR_HZ);for (i = 0; i < 32; i++){printf("0x%x, ", gbk_hz_buf[offset+i]);if ((i+1)%4 == 0){printf("\n");}}printf("\n");fclose(fp);return length;
}void main(void)
{long size = 0;size = file_size(FILE_NAME);return ;
}


运行结果如下:


可知“苹”对应的字模数据是:

0x8, 0x20, 0x8, 0x20,0xff, 0xfe, 0x8, 0x20,0x0, 0x0, 0x7f, 0xfc,0x1, 0x0, 0x11, 0x10,
0x9, 0x10, 0x9, 0x20,0x1, 0x0, 0xff, 0xfe,0x1, 0x0, 0x1, 0x0,0x1, 0x0, 0x1, 0x0。


3、利用字模数据打印出汉字

程序如下:

#include <sys/stat.h>
#include <stdio.h>unsigned char Hz_code[] = {
0x8, 0x20, 0x8, 0x20,
0xff, 0xfe, 0x8, 0x20,
0x0, 0x0, 0x7f, 0xfc,
0x1, 0x0, 0x11, 0x10,
0x9, 0x10, 0x9, 0x20,
0x1, 0x0, 0xff, 0xfe,
0x1, 0x0, 0x1, 0x0,
0x1, 0x0, 0x1, 0x0
};#define RIGHT_SHIFT_VAL(x, n) (((x)>>(n)) & 0x01)void prt_one_Hz(void)
{int tbl_size = sizeof(Hz_code)/sizeof(char);short int temp_code = 0;int i = 0, j = 0;for (i = 0; i < tbl_size; i+=2){temp_code = Hz_code[i]<<8 | Hz_code[i+1];for (j = 16; j > 0; j--){if (RIGHT_SHIFT_VAL(temp_code, j-1)){printf("●");}else{printf("○");}}printf("\n");}
}void main(void)
{prt_one_Hz();return ;
}

运行结果如下:

示例较简单,仅作入门参考。

目前遇到的一个问题,生成的字库在linux下面用不了,fopen打不开,原因待查。

GBK字库制作、字模数据读取、使用相关推荐

  1. 二 unicode字库制作(智源GM813X多国语言OSD开发)

    字库的制作关键是需要软件,文章最后会提供一种字库制作软件,此文将详细介绍怎么提取字库方法. 一 制作字库格式. (该图就是字库软件主页面,ENCODE 编码选择UNICODE ,size 可以选择小一 ...

  2. 字王x2ttf字库制作软件发布:“全民造字时代来临,会涂鸦,就会truetype”

    "全民造字时代来临,会涂鸦,就会truetype" x2ttf,涂鸦造字,又名bmp2ttf,是一款功能强大.操作简单的"傻瓜式".批量化truetype字库制 ...

  3. TensorFlow数据读取机制:文件队列 tf.train.slice_input_producer和 tf.data.Dataset机制

    TensorFlow数据读取机制:文件队列 tf.train.slice_input_producer和tf.data.Dataset机制 之前写了一篇博客,关于<Tensorflow生成自己的 ...

  4. pandas 数据读取与保存

    pandas 数据读取与保存 一:读取表格数据 例:在一个text.xlsx文件中,有text1,text2,text3三张表格 sheetname 切换sheet表格 可以传入整形,表示从0开始的索 ...

  5. SpringBoot:yaml配置及语法、yml数据读取、多环境开发控制

    yaml 配置 YAML(YAML Ain't Markup Language),一种数据序列化格式 优点: 容易阅读 容易与脚本语言交互 以数据为核心,重数据轻格式 YAML文件扩展名 .yml(主 ...

  6. matlab画气象要素,基于MATLAB实现3种气象数据读取和绘图.pdf

    第29卷第4期 广 东 气 象 v01.29No.4 2007年11月 GuangdongMeteorology Novenlber2007 基于MATLAB实现3种气象数据的读取和绘图 刘峰.刘娟. ...

  7. HMI-67-【数据】汽车CAN总线数据读取

    HMI-67-[数据]汽车CAN总线数据读取 文章目录 HMI-67-[数据]汽车CAN总线数据读取 摘要 关于南京来可电子 本次使用设备 实物展示 到车上去搞数据 方便的OBD设计 使用电脑连接设备 ...

  8. 期货数据读取python从新浪财经

    用途:读取股票A股,期货,股指期货历史数据 版本3: 更新时间:2022-11-20 说明:类封装Sina其他: 本人是小白,没有钱购买数据,推荐几个免费的数据读取. 掘金的期货数据相对来说比较多,支 ...

  9. 深度学习之“制作自定义数据”--torch.utils.data.DataLoader重写构造方法。

    深度学习之"制作自定义数据"–torch.utils.data.DataLoader重写构造方法. 前言: ​ 本文讲述重写torch.utils.data.DataLoader类 ...

  10. pandas数据读取处理详解

    文章目录 数据读取 read_table:读取txt文本文件 逐块读取 read_excel:读取excel文件 读取一个工作簿下多个sheet:ExcelFile类 read_fwf:读取固定宽度文 ...

最新文章

  1. 基于轮廓调整的SOTA实例分割方法,速度达32.3fps | CVPR 2020
  2. 基于深度学习的医学图像配准综述
  3. Beta 冲刺(5/7)
  4. css create 多边形 polygon
  5. 1.内存优化(一)内存泄漏
  6. Jquery 添听checkbox 是否选中
  7. MySQL探秘(二):SQL语句执行过程详解
  8. 石家庄计算机职业学院张秋玉,九龙坡有什么大学
  9. 中小企业如何提高售前,售中,售后客服质量?
  10. CVPR 2021 |针对强时序依赖,即插即用、混合注意力机制的 ACTION 模块
  11. 三星android6.0推送,三星推送Android6.0 满屏小清新的风味!
  12. 小赛毛游C记——初识C语言(1)
  13. jvm调优转载自http://www.cnblogs.com/xingzc/p/5756119.html
  14. 从零双排java之打印流
  15. ubuntu开启键盘背光灯
  16. 更换任意Linux内核 Ubuntu18.04 内核降级升级
  17. 奔驰809android auto,奔驰E Android Auto+AA Mirro技术作业
  18. 超实用的自动化测试平台推荐
  19. php中跨页面id的获取,excel跨表格提取数据?phpexcel 读取excel里的数据并在页面显示出来...
  20. 完全去中心化的调度系统Tiger

热门文章

  1. java 明华读卡器_Java调用明华RF读写器DLL文件过程解析
  2. IE11降级到IE8
  3. 曲线积分与曲面积分的计算机应用,曲线积分与曲面积分(解题方法归纳).doc
  4. 计算机二级试题java_计算机二级java精选试题及答案
  5. 张宇高等数学强化阶段笔记并标记重点
  6. Html学习手册(W3CSchool.chm)
  7. 华硕电脑(博主电脑型号为天选FA506IH)Fn组合键屏幕不显示对应操作的解决办法!!
  8. TIS-prescan
  9. Prescan:关于Prescan与Matlab联合仿真问题小总(不定时补充)
  10. 【MATLAB深度学习工具箱】学习笔记--字符识别Character Recognition