字体转换工具

备注

本章节介绍的是 独立的字体转换工具 (exe 程序),需要单独下载和运行。

字体转换工具功能:从标准内部码表(代码页文件)、自定义 Unicode 码表(或补充码表 .txt 文件,自定义 .cst 文件)中获取所有待转换字符对应的 Unicode 码。根据 Unicode 编码从字体文件(如 .ttf)中找到相应字符的矢量字体数据。将其转换为位图格式的点阵字体或者预处理后的矢量字体,并输出为 .bin 文件。

https://foruda.gitee.com/images/1725358504194067891/e9f8aa2f_13674272.png

字体转换工具流程图

生成字体文件

如何生成对应的文件,请参考以下步骤:

  1. 将字体库文件复制到该目录 \FontConvertTool\font

https://foruda.gitee.com/images/1718779202121064741/2e5506f6_13408154.png

复制字体库文件

  1. 可以参考 \FontConvertTool\doc 目录下的文档,了解每个参数的具体含义,通过编辑 FontConfig.json 配置字体参数。

https://foruda.gitee.com/images/1766455021444779075/8f187976_9325830.png

编辑 FontConfig.json 文件

  1. 打开 setting.ini,修改可选配置项。

https://foruda.gitee.com/images/1724035284336578868/8affdd56_9325830.png

编辑 setting.ini 文件

  1. 双击或通过命令行执行 fontDirctionary.exe 生成 font.bin。

https://foruda.gitee.com/images/1718779549743952722/46c77609_13408154.png

生成 font.bin 文件

FontConfig.json 参数说明

FontConfig.json 参数说明

字段名称

字段含义

输出路径 (OutputFolder)

工具输出路径。如果路径不存在会直接创建路径。

代码页 (codePages)

按特定顺序排列的语言文本字符集列表。可以设置多组。

cst路径 (cstPaths)

二进制 Unicode 代码表 cst 文件路径。可以设置多个。常使用标准范围集合表示。

自定义值 (customerVals)

用户定义的连续 Unicode 字符。可以设置多组。

起始值 (firstVal)

自定义的连续 Unicode 字符的起始值。

范围 (range)

自定义的连续 Unicode 字符数量。

符号路径 (symbolPaths)

字符集文件路径。支持直接字符读取和 16 进制 Unicode 编码两种格式。可以设置多组。

字体设置 (fontSet)

用于指定要转换的字体相关设置。

加粗 (bold)

指定转换后的字符是否加粗。

斜体 (italic)

指定转换后的字符是否倾斜。

字号 (fontSize)

指定转换后的字符大小。

字体 (font)

指定用于转换的字体文件。支持填写相对路径以及文件名自动检索。

渲染模式 (renderMode)

指定在转换后的字符位图中表示一个像素使用的位数。支持 1/2/4/8。

索引方法 (indexMethod)

指定输出 bin 文件的索引模式。0 为地址索引,1 为偏移索引。

裁剪 (crop)

压缩字体文件大小。建议始终开启。目前仅支持 IndexMethod=0 时的裁剪。

输出格式 (outputFormat)

字体输出格式。0 表示点阵字体, 1 表示矢量字体。

Setting.ini 参数说明

Setting.ini 参数说明

gamma

1

gamma 值是用于描述输入像素值和输出亮度之间非线性关系的参数。该值越大,文本亮度越高。

rotate

0

字体旋转角度。0:不旋转。1:顺时针旋转 90°。2:逆时针旋转 90°。

字体大小评估

不同的字体配置会产生不同的文件大小,影响 Flash 存储空间的占用。以下是常用配置的大小参考:

常用场景推荐

常用场景字体配置推荐(默认:24号字体,2bpp位深度)

使用场景

字符集类型

字号

位深度

字符数

大小 (KB)

简单英文界面

ASCII

24

2bpp

95

14.15

西欧语言界面

ISO8859-1

24

2bpp

193

28.69

中文基础界面

GB2312

24

2bpp

7,478

749.03

中文完整界面

CP936(GBK)

24

2bpp

21,886

1717.88

日文基础界面

CP932

24

2bpp

7,483

746.16

韩文基础界面

KSX1001

24

2bpp

8,187

793.48

字符集类型对比

不同字符集类型包含的字符数量差异很大,直接影响文件大小。根据应用需求选择合适的字符集可以有效平衡功能和存储空间。

字符集说明

Latin(拉丁语系)

  • Lite (ASCII):95个字符,包含基本英文字母、数字和常用符号,适合纯英文界面

  • Mid (ISO8859-1):193个字符,包含西欧语言字符(法语、德语、西班牙语等),适合多语言欧洲市场

  • Full (UNICODE):3,006个字符,包含完整拉丁扩展字符集,适合全球化应用

Chinese(中文)

  • Lite (GB2312):7,478个字符,包含简体中文常用汉字(一级字库3,755字 + 二级字库3,008字)及符号,适合基础中文界面

  • Mid (CP936/GBK):21,886个字符,包含GB2312全部字符及繁体中文、生僻字,适合完整中文支持

  • Full (UNICODE):30,445个字符,包含中日韩统一表意文字,适合多语言混合显示

Japanese(日文)

  • Lite (CP932):7,483个字符,包含日文假名、常用汉字(JIS第一水准、第二水准)及符号,适合基础日文界面

  • Mid (CP932):7,483个字符,与Lite相同,CP932已包含常用日文字符

  • Full (UNICODE):16,077个字符,包含完整日文字符集及扩展汉字,适合专业日文应用

Korean(韩文)

  • Lite (KSX1001):8,187个字符,包含韩文音节、常用汉字及符号,适合基础韩文界面

  • Mid (CP949):17,106个字符,包含完整韩文音节(11,172个)及扩展汉字,适合标准韩文应用

  • Full (UNICODE):22,862个字符,包含完整韩文字符集,适合专业韩文应用

字符集大小对比(24号字体,2bpp)

语言

Lite 字符数

大小(KB)

Mid 字符数

大小(KB)

Full 字符数

大小(KB)

Latin

95

14.15

193

28.69

3,006

289.48

Chinese

7,478

749.03

21,886

1,717.88

30,445

2,390.48

Japanese

7,483

746.16

7,483

746.16

16,077

1,527.48

Korean

8,187

793.48

17,106

1,156.32

22,862

1,729.48

位深度影响

位深度决定了字体的显示效果和文件大小:

  • 1bpp:黑白显示,文件最小,适合简单界面

  • 2bpp:4级灰度,文件较小,显示效果较好,推荐用于一般应用(性价比最优)

  • 4bpp:16级灰度,文件中等,显示效果优秀,适合高品质界面

  • 8bpp:256级灰度,文件最大,显示效果最佳,适合高端产品

位深度大小对比(中文 GB2312,24号字体,7478字符)

位深度

1bpp

2bpp

4bpp

8bpp

大小(KB)

501.98

749.03

1,192.22

2,070.20

倍数

0.67x

1x

1.59x

2.76x

字号影响

字号越大,字体文件越大。理论上字号与文件大小呈平方关系增长(字号翻倍,文件大小约为4倍),但由于使用了压缩技术,因此字号翻倍的影响有所削弱。

字号大小对比(Lite 字符集,2bpp位深度)

语言

字号

字符集

字符数

大小(KB)

倍数

Latin

16

ASCII

95

6.73

0.48x

Latin

24

ASCII

95

14.15

1x

Latin

32

ASCII

95

24.54

1.73x

Chinese

16

GB2312

7,478

532.40

0.71x

Chinese

24

GB2312

7,478

749.03

1x

Chinese

32

GB2312

7,478

1,181.83

1.58x

矢量字体

矢量字体的主要优点是可以任意缩放,实现多字号复用,无需为每个字号单独生成字体文件。但文件大小通常比位图字体大。

矢量字体大小参考

语言

字符集类型

字符数

大小 (KB)

Latin

Lite

95

10.56

Latin

Mid

193

25.62

Chinese

Lite

7,478

2,587.86

Japanese

Lite

7,483

2,782.93

Korean

Lite

8,187

2,558.50

选择建议

根据应用需求选择合适的字体配置:

  1. 存储空间有限:选择 Lite 字符集 + 1bpp 位深度

  2. 显示效果优先:选择 4bpp 或 8bpp 位深度

  3. 多语言支持:选择多个字体文件组合(如 Latin + Chinese)

  4. 多字号需求:选择多个字体文件或矢量字体

  5. 平衡方案:Mid 字符集 + 2bpp 位深度