awtk/tools/font_gen
2024-03-04 08:54:03 +08:00
..
.gitignore init 2018-02-21 19:36:38 +08:00
expand_text.c add expand_text 2021-12-21 10:16:05 +08:00
font_dump.c add expand_text 2021-12-21 10:16:05 +08:00
font_gen.c format code 2024-03-04 08:54:03 +08:00
font_gen.h improve res tools 2023-11-13 18:25:24 +08:00
gen_ascii.c add nanovg lcd 2018-04-13 10:25:58 +08:00
main.c format code 2024-03-04 08:54:03 +08:00
preprocess_text.h format code 2021-12-27 17:47:31 +08:00
preprocess_text.inc improve res tools 2023-11-13 18:25:24 +08:00
README.md add expand_text 2021-12-21 10:16:05 +08:00
SConscript add expand_text 2021-12-21 10:16:05 +08:00

字体工具

点阵字体生成工具

1. 功能


fontgen 从指定的 tff 文件,提取指定字符集(从文件中读取)的 glyph生成点阵字体文件二进制或者 C 语言常量数组)。

2. 用法

Usage: ./bin/fontgen ttf_filename str_filename out_filename font_size [mono|4bits]
  • ttf_filename tff 文件名。
  • str_filename 字符集合 需要哪些字符就把那些字符放在本文件中UTF-8 编码,参考 demos/assets/default/raw/fonts/text.txt)。
  • output_filename 输出文件名。如果文件扩展名为“.bin“生成二进制格式否则生成 C 语言常量数据。
  • font_size 字体大小(像素)。
  • mono 是否生成单色字体,目前只有启用 freetype 时才有效。可选。
  • 4bits 每个点用4位表示(可选默认8位)。

示例:

./bin/fontgen design/default/fonts/default_full.ttf test.txt test.bin 18

3. 文本文件格式


为了使用方便,在文本文件中,除了可以直接列出需要的字符外,也可以指定一个范围,或者混合两种用法。

  • 范围用 括起来,中间用-分隔。
[[0-9]]
  • 指定 ASCII 字符范围。下面的文本表示所有数字,小写字母和大写字母。
[[0-9]][[a-z]][[A-Z]]
  • 用十进制指定 uncode 的范围。下面的文本表示"中丮丯"三个字符。
[[20013-20015]]
  • 用十六进制指定 uncode 的范围。下面的文本表示"中丮丯"三个字符。
[[0x4e2d-0x4e2f]]

[[0X4e2d-0X4e2f]]

[[0X4E2D-0X4E2F]]

文本展开工具

为了方便 fonttools 工具也支持指定范围提供了一个小工具expand_text。它将输入文件中的范围展开后写入输出文件。

Usage:./bin/expand_text input_file output_file

从 TTF 字体文件中提取部分字体

可以使用 fonttools 中的 pyftsubset 工具提取:

安装:

pip install fonttools

示例:

pyftsubset ../../../fonts/msyh.ttf --text-file=../../demos/assets/raw/fonts/text.txt  --output-file=../../demos/assets/raw/fonts/default.mini.ttf