主要功能代码来自于 FontMaker 项目
以命令行方式生成适合 MicroPython New FontLib 项目使用的字库
使用
v1.0.0
之后版本生成的字库与之前版本的字库不兼容
本项目生成的字库与其它字库的区别如下:
字体大小
为 16 像素,那么字符点阵的宽和高都为 16 像素MSB
和LSB
(但垂直扫描方式不支持MSB
)GB2312
索引表,暂不支持外部索引表文件可以自行编译代码,或者从 binary 分支下载
要查看版本号可使用如下命令:
$ FontMaker_Cli.exe --version
最简单的方法是只指定字体名称
,其它参数使用默认值
$ FontMaker_Cli.exe -f "幼圆"
这样得到的字库文件属性如下:
combined.bin
幼圆
16 像素
普通
0 像素
0 像素
16 像素
16 像素
固定宽度
低字节在前
垂直扫描
GB2312 索引表
如果要生成微软雅黑
、大小 24
、垂直扫描
、字节高位在前
、文件名 yahei_24_hmsb.bin
的字库文件,则使用如下命令:
$ FontMaker_Cli.exe -f "微软雅黑" -s 24 -sh -m -o yahei_24_hmsb.bin
如果要生成自定义字库,则使用如下命令:
$ FontMaker_Cli.exe -f "微软雅黑" --input filename.txt -o customized.bin
还可以使用 FontMaker Client GUI 这个简易窗口程序生成字库
具体使用方法参考 fontlib.py 相关代码
带
-
的为短命令,带--
的为长命令,二选一使用参数出现冲突时,如同时选择
-l
和-m
,则以后出现者为准
必选参数
可选参数:字形相关
普通
,默认选择
加粗
斜体
可选参数:字符点阵相关
可选参数:文件相关
不可选参数
GB2312
索引表,默认选择
字库结构分为 4 个部分:
GB2312
索引表ASCII
字符数据GB2312
字符数据typedef struct tagFontLibHeader {
BYTE magic[4];
DWORD file_size;
BYTE font_width;
BYTE font_height;
WORD char_count;
BYTE has_index_table;
BYTE scan_mode;
BYTE byte_order;
DWORD ascii_start;
DWORD gb2312_start;
char reserved[2];
} FL_Header, * PFL_Header;
[4] magic
:文件识别代码,默认为FMUX
,自定义字库为FMUY
[4] file_size
:字库文件大小[1] font_width
:字体宽度[1] font_height
:字体高度[2] char_count
:包含字符总数[1] has_index_table
:是否包含GB2312
索引表[1] scan_mode
:扫描方式[1] byte_order
:字节顺序[4] ascii_start
:ASCII
字符数据起始地址[4] gb2312_start
:GB2312
或自定义
字符起始地址[2] reserved
:保留内容GB2312
索引表因为MicroPython
仅支持Unicode
编码,且Unicode
与GB2312
无直接转换关系,所以必须使用一个索引表进行转换查询
ASCII
、GB2312
字符数据根据索引表顺序排列的字符点阵数据,每个字符都为固定尺寸,字符数据大小计算公式为:
((font_width - 1) // 8 + 1) * font_height
/fonts/emoticons21.fon
文件来自于 u8g2 项目
/fonts/open-iconic.ttf
文件来自于 Open Iconic 项目
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )