1 Star 7 Fork 2

Walkline / FontMaker Client

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

FontMaker Client

项目介绍

主要功能代码来自于 FontMaker 项目

以命令行方式生成适合 MicroPython New FontLib 项目使用的字库

字库说明

使用v1.0.0之后版本生成的字库与之前版本的字库不兼容

本项目生成的字库与其它字库的区别如下:

  • 文件头,包含字库文件相关信息
  • 字符尺寸固定,例如选择字体大小为 16 像素,那么字符点阵的宽和高都为 16 像素
  • 扫描方式为水平扫描(垂直扫描方式获取的数据有问题,所以暂不支持)
  • 字节顺序支持MSBLSB(但垂直扫描方式不支持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,则以后出现者为准

  • 必选参数

    • -f, --face FONTFACE:指定字体名称
  • 可选参数:字形相关

    • -s, --size FONTSIZE:字体大小,默认值:16
    • -n, --normal:字体字重为普通默认选择
    • -b, --bold:字体字重为加粗
    • -i, --italic:字体为斜体
  • 可选参数:字符点阵相关

    • -w, --width CHARWIDTH:字符点阵宽度,默认值:FONT_SIZE
    • -x, --offset-x OFFSETX:水平偏移量,默认值:0
    • -y, --offset-y OFFSETY:垂直偏移量,默认值:0
    • -sv, --scan-vertical:垂直方式扫描,默认选择
    • -sh, --scan-horizontal:水平方式扫描
    • -l, --lsb:字节低位在前,默认选择
    • -m, --msb:字节高位在前
    • -rd, --reverse-display:字符反显
  • 可选参数:文件相关

    • --charset FILENAME:指定字符集文件,生成自定义字库
    • --input FILENAME:使用文本文件生成自定义字库文件
    • -o, --output FILENAME:生成字库文件的文件名,默认值:combined.bin
  • 不可选参数

    • -h, --height CHAR_HEIGHT:字符点阵高度,默认值:FONT_SIZE
    • -d, --fixed-width:字符点阵宽度固定,默认选择
    • -v, --variable-width:字符点阵宽度可变
    • -t, --include-table:包含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_startASCII字符数据起始地址
  • [4] gb2312_startGB2312自定义字符起始地址
  • [2] reserved:保留内容

GB2312索引表

因为MicroPython仅支持Unicode编码,且UnicodeGB2312无直接转换关系,所以必须使用一个索引表进行转换查询

ASCIIGB2312 字符数据

根据索引表顺序排列的字符点阵数据,每个字符都为固定尺寸,字符数据大小计算公式为:

((font_width - 1) // 8 + 1) * font_height

资源版权声明

/fonts/emoticons21.fon 文件来自于 u8g2 项目 /fonts/open-iconic.ttf 文件来自于 Open Iconic 项目

合作及交流

走线物联扇贝物联

MIT License Copyright (c) 2021 Walkline Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

以命令行方式生成适合 MicroPython New FontLib 项目使用的字库 展开 收起
C++ 等 5 种语言
MIT
取消

贡献者

全部

近期动态

加载更多
不能加载更多了
C++
1
https://gitee.com/walkline/fontmaker-client.git
git@gitee.com:walkline/fontmaker-client.git
walkline
fontmaker-client
FontMaker Client
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891