GBK字库制作、字模数据读取、使用
最近因为工作需要,学习了一下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字库制作、字模数据读取、使用相关推荐
- 二 unicode字库制作(智源GM813X多国语言OSD开发)
字库的制作关键是需要软件,文章最后会提供一种字库制作软件,此文将详细介绍怎么提取字库方法. 一 制作字库格式. (该图就是字库软件主页面,ENCODE 编码选择UNICODE ,size 可以选择小一 ...
- 字王x2ttf字库制作软件发布:“全民造字时代来临,会涂鸦,就会truetype”
"全民造字时代来临,会涂鸦,就会truetype" x2ttf,涂鸦造字,又名bmp2ttf,是一款功能强大.操作简单的"傻瓜式".批量化truetype字库制 ...
- TensorFlow数据读取机制:文件队列 tf.train.slice_input_producer和 tf.data.Dataset机制
TensorFlow数据读取机制:文件队列 tf.train.slice_input_producer和tf.data.Dataset机制 之前写了一篇博客,关于<Tensorflow生成自己的 ...
- pandas 数据读取与保存
pandas 数据读取与保存 一:读取表格数据 例:在一个text.xlsx文件中,有text1,text2,text3三张表格 sheetname 切换sheet表格 可以传入整形,表示从0开始的索 ...
- SpringBoot:yaml配置及语法、yml数据读取、多环境开发控制
yaml 配置 YAML(YAML Ain't Markup Language),一种数据序列化格式 优点: 容易阅读 容易与脚本语言交互 以数据为核心,重数据轻格式 YAML文件扩展名 .yml(主 ...
- matlab画气象要素,基于MATLAB实现3种气象数据读取和绘图.pdf
第29卷第4期 广 东 气 象 v01.29No.4 2007年11月 GuangdongMeteorology Novenlber2007 基于MATLAB实现3种气象数据的读取和绘图 刘峰.刘娟. ...
- HMI-67-【数据】汽车CAN总线数据读取
HMI-67-[数据]汽车CAN总线数据读取 文章目录 HMI-67-[数据]汽车CAN总线数据读取 摘要 关于南京来可电子 本次使用设备 实物展示 到车上去搞数据 方便的OBD设计 使用电脑连接设备 ...
- 期货数据读取python从新浪财经
用途:读取股票A股,期货,股指期货历史数据 版本3: 更新时间:2022-11-20 说明:类封装Sina其他: 本人是小白,没有钱购买数据,推荐几个免费的数据读取. 掘金的期货数据相对来说比较多,支 ...
- 深度学习之“制作自定义数据”--torch.utils.data.DataLoader重写构造方法。
深度学习之"制作自定义数据"–torch.utils.data.DataLoader重写构造方法. 前言: 本文讲述重写torch.utils.data.DataLoader类 ...
- pandas数据读取处理详解
文章目录 数据读取 read_table:读取txt文本文件 逐块读取 read_excel:读取excel文件 读取一个工作簿下多个sheet:ExcelFile类 read_fwf:读取固定宽度文 ...
最新文章
- 基于轮廓调整的SOTA实例分割方法,速度达32.3fps | CVPR 2020
- 基于深度学习的医学图像配准综述
- Beta 冲刺(5/7)
- css create 多边形 polygon
- 1.内存优化(一)内存泄漏
- Jquery 添听checkbox 是否选中
- MySQL探秘(二):SQL语句执行过程详解
- 石家庄计算机职业学院张秋玉,九龙坡有什么大学
- 中小企业如何提高售前,售中,售后客服质量?
- CVPR 2021 |针对强时序依赖,即插即用、混合注意力机制的 ACTION 模块
- 三星android6.0推送,三星推送Android6.0 满屏小清新的风味!
- 小赛毛游C记——初识C语言(1)
- jvm调优转载自http://www.cnblogs.com/xingzc/p/5756119.html
- 从零双排java之打印流
- ubuntu开启键盘背光灯
- 更换任意Linux内核 Ubuntu18.04 内核降级升级
- 奔驰809android auto,奔驰E Android Auto+AA Mirro技术作业
- 超实用的自动化测试平台推荐
- php中跨页面id的获取,excel跨表格提取数据?phpexcel 读取excel里的数据并在页面显示出来...
- 完全去中心化的调度系统Tiger
热门文章
- java 明华读卡器_Java调用明华RF读写器DLL文件过程解析
- IE11降级到IE8
- 曲线积分与曲面积分的计算机应用,曲线积分与曲面积分(解题方法归纳).doc
- 计算机二级试题java_计算机二级java精选试题及答案
- 张宇高等数学强化阶段笔记并标记重点
- Html学习手册(W3CSchool.chm)
- 华硕电脑(博主电脑型号为天选FA506IH)Fn组合键屏幕不显示对应操作的解决办法!!
- TIS-prescan
- Prescan:关于Prescan与Matlab联合仿真问题小总(不定时补充)
- 【MATLAB深度学习工具箱】学习笔记--字符识别Character Recognition