文章目录
概述及理由
嵌入式中我们经常用到点屏的操作,这就设计到点阵的问题,可以使用ANSI编码,进行点屏,现在讲点unicode的点阵
- 全世界的unicode的编码是唯一的。
- 每个unicode编码占用两个字节
- 每一个unicode码的点阵,都占用一样的大小
如果需要支持全世界语言的, 那么我们可以生成一个点阵库。这个的点阵库的体积比较大,因为包括了所有的uincode的编码。但是有一个问题来了,如果嵌入式中没有足够的空间来保存uincode的点阵库,是不是就不能进行项目的操作了? 其实一个项目使用的范围,通常是在一个国家范围内,这样我们就可以通过裁剪点阵字库,实现我们的目的
uincod点阵结构
头结构
typedef struct
{
char fontFormat[3]; // 字库格式
uint8 swVersion; // 软件版本
uint8 fontSize; // 字体大小
uint8 charWidth; // 字符宽度
uint8 charHeight; // 字符高度
int8 offsetX; // X 偏移
int8 offsetY; // Y 偏移
uint8 bitsPerPixel; // 每像素位数
uint16 bitsSizePerChar; // 每字符位图数据大小
uint16 bitsOffs; // 字符位图数据偏移
uint16 numPages; // 编码页数
} Font_FileInfo_t; // 字库文件信息
前16个字对应的头文件信息