【转载】FontMaker点阵字库生成工具:MFC读取Excel

原贴链接:FontMaker点阵字库生成工具:MFC读取Excel-CSDN博客

非常好用的一款软件,做游戏mod需要字体的话可以用到,帮了很大的忙,转载以分享给更多mod制作者。

原作者资源路径:https://blog.csdn.net/qq446252221/article/details/53188278

二次开发后:https://download.csdn.net/download/jiqiren_dasheng/12668021 (V1.2.1)

                             https://download.csdn.net/download/jiqiren_dasheng/13458543 (V1.2.2)

目录

1.界面差异

2.新增EXCEL自定义码表功能使用介绍

模式一:按照Excel固定格式编码(未选中“自定义行列”)

模式二:自定义起始、终止行列(选中“自定义行列”)

3.异常提示弹窗

4.代码优化

5.代码架构

6.关于VisualStudio2017某些版本以后在类向导中没有“TypeLib中的MFC类”

7.更新记录

8.结语

笔者二次开发后的版本,支持从Excel中连续读取若干字符(串)进行编码,今后维护字库对应的翻译表格即可,具体介绍如下:

1.界面差异
新版本在一级对话框添加了Excel控件,并设计了Excel对应的二级对话框。
将部分默认选项修改为常用项(主要是便于笔者使用)。
界面风格基本保持原生态。


图1
2.新增EXCEL自定义码表功能使用介绍
模式一:按照Excel固定格式编码(未选中“自定义行列”)

图2
 
图3 Excel格式
 
图4 生成文本文件格式
特点:
①固定从Excel第2行第6列开始编码(前面5列格式中标题加红的编码过程需要使用)。
②可以根据识别到的图片、文本类型自动分类编码(图片类型编码后固定用三个十六进制,具体见下④)。
③文本类型可自定义语言第一列(即Excel第6列)是否按宋体编码,其它列采用一级对话框设定的字体。
④生成的字库文件格式如上图4:第一列是表格第一列的索引值。然后就是各语言对应字符(串)编码后的十六进制格式,各语言用分号间隔,使用字库时可以此作为解析判别依据。相较原作者版本的差异,一是将同一字符串的多个字符编码后连接在一起,二是编码后在每种语言开始位置增加了若干个十六进制字段,便于后期使用字库时分析,解释如下:
    第一个十六进制:0x00 → 文本,0x01 → 图片。
    若是图片类型:接下来只有两个十六进制,分别存放图片名称(限四位的纯数字,一万张图想必够用了)。转换规则:图片名为0025.bmp,则转换为“0x00,0x25”。图片名为6981.bmp,则转换为“0x69,0x81”。(目前图片只支持bmp和jpg,其它类型需要自行修改代码)
    若是文本类型:接下来有四个十六进制,分别是编码源字符(串)高度值高字节、字符(串)高度值低字节、字符(串)宽度值高字节、字符(串)宽度值低字节。(在一级对话框设定的点阵高度、宽度是针对单个字符)
注意:
①Excel前五列的格式不能修改。   
②结束判断:换行后第一个单元格识别为空单元格。 
③暂不支持保存文件为BIN文件。

模式二:自定义起始、终止行列(选中“自定义行列”)

图5
 
图6
 
图7
特点:
①从自定义的起始行列开始编码。
②每行以连续检测到10个空单元格为换行标志。
③生成文件格式如上图7。第一列是每行对应于Excel中哪行。然后就是各语言对应字符(串)编码后的十六进制格式,各语言用分号间隔。添加的字段同模式一特点④。
注意:
①字体格式统一采用一级对话框设定的格式。
②不能识别图片、文本类型,统一按文本编码。   
③结束行列不一定是设定的终止行列,可能提前终止。 (因为换行后检测到空单元格即结束) 
④暂不支持保存文件为BIN文件。

3.异常提示弹窗
编码过程如果遇到异常提示弹窗,大多数都附带有Excel行列,核对一下是否是下图所圈记的情况(两种模式合在一起,注意区分)。

上图圈记说明如下:

Excel第2行:类型设定为文本,但语言第一列是否使用宋体未设置,不会终止编码,但会有弹框提示将按照工具一级对话框设定的字体进行编码。(如果类型设定为图片,第5列值无效)
Excel第3行:类型未设定,先弹窗提示位置,然后终止编码。
Excel第4行:会提示读取内容异常,尤其提示检查是否有空格。(代码中是以内容、长度两个维度判断)
Excel第5、11、13行:会提示设定的语言数量与实际检测到不一致。第11行情形在Excel自定义编码模式会准确提示在Excel哪个单元格前存在空单元格。
Excel第6行:图片名称(含后缀)读取异常,具体根据提示即可明了。若是第6行第9列缺少情形,不会终止编码,但有弹框提示。(在Excel自定义模式,肯定不会出现这样的提示滴~~~)
Excel第9行。这种情况会终止编码,但不会有异常提示。正常的提示结束于哪一行哪一列,所以每次编码完成注意核对Excel的结束行列。

4.代码优化
代码中笔者加了很多注释,原作者没加类成员的注释笔者基本都补上了,本身代码结构又不复杂,很容易入手,欢迎继续优化。

①点击下图右上角的 “×”,不能达到点击右下角 “取消” 的效果。主要是笔者暂不知如何重写点击右上角的 “×” 的响应行为。

②原作者版本,保存字库选择文本文件时所对应的格式(按字符分开显示,每行十六个),由于笔者暂未想到合适的兼容手段,本版本注释了相关接口,在此向作者说声:抱歉!

③编码Excel,工具预览窗口会变,这个后期可以优化一下。

④工具本身可以做一个更新和功能说明的菜单项。

5.代码架构


6.关于VisualStudio2017某些版本以后在类向导中没有“TypeLib中的MFC类”
这个......笔者用的更新的VS2019,把基本与MFC相关的组件都装上后,发现还是没有。实际上有这样的描述:

所以笔者最终是安装了一个VS2013版本,才将与Excel相关的类添加进去。

如果博友们有已解决方法,欢迎评论区分享分享。

7.更新记录
20200728  首次分享

20201101  上一版本缺陷修复&功能新增

(1)修复上一版本翻译表格指定语言第一列使用宋体功能无效。

(2)Excel第二列的类型增加到四种。一是减小字库文件的大小;二是方便设备端解析时识别,以缩短解析时间。

8.结语
翻译表格第一次做好后,后面只剩下维护工作。如果只需要修改Excel中某几个字符,而这个工具每次都是全部重新生成字库,担心会影响以前已生成的字库。此时则可以把诸如beyond compare、Ultra Compare之类的比较工具用起来。

机器出错的概率,以及人操作出错的概率,笔者更信任机器。

工具具体怎么用,得看客官~~~
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/jiqiren_dasheng/article/details/107635665

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
v1.06 (20120410) FontMaker(点阵字库) 1. 增加系统字体支持,操作更简单,快捷。 v1.05 (20120324) FontMaker(点阵字库) 1. 修正了字符对齐问题。 2. 增加了单个字符或多个字符输出成位图文件设定。 3. 完善了阿拉伯文字库(unicode 字库有效)。 4. 增加自定义字符功能(unicode 字库有效)。 Multi-language(多国语言) 1. 增加输出编码格式 (mbcs, utf16-lb, utf8)设置 2. 增加数组格式输出。 Image Manager(图像管理) 1. 该页为新增功能,支持图片图像的数据转换。主要应用在做产品logo图片方面。 V1.04 (20110716) 1. 增加了一个字符串mbcs2unicode(内码转统一码)的功能。 (支持转:U16-LE, U16-BE, UTF8) V1.03 (20110705) 1. 修改了 Example 中点阵字库解析源码,更加便于移植。(基本做到只需修改font_file.c 即可) 2. 修改了内码(MBCS)字库点阵信息读取的一个错误。 3. 增加了多语言支持(简中,英文),还有待完善。。。 V1.02 (20110701) 1. FontMaker V2.03 a. 增加字符宽高比调节(HorR & VerR) b. 增加对*.ttc 字库的支持。 c. 增加bdf(*.bdf)文件格式转Simple Unicode编码格式的bin文件。 V1.01 (20110629) 1. FontMaker V2.02 a. 增加了 Simple Unicode功能。(适合小字库) b. 增加了 “扫描方向及反显”设置。 2. Multi-Language V1.01 a. 修改了除 office 2000 外,其它不能支持的问题。 V1.00: (20110627) 1. 继承 FontMaker V2.01 的所有功能。 2. 增加了一个 Multi-Languge V1.00 的打包转换功能。 FontMaker 基本功能: 1.支持所有 windows 字符集:CP932(日文Shift-JIS)CP936(简体中文GBK)CP949(韩文)CP950(繁体中文 Big5),CP874(泰文),CP1250(中欧)CP1251(西里尔文),CP1252(西欧--"拉丁文I"),CP1253(希腊文), CP1254(土耳其文),CP1255(希伯来文),CP1256(阿拉伯文),CP1257(波罗的海文),CP1258(越南) 2.支持非等宽字库。 3.支持BIN,TXT,BMP,BDF 文件输出。 4.支持unicode字库输出,即可以做到在一个窗口中同时显示多国语言(文字) 5.支持单个字符编辑,预览(所见即所得)。 6.支持字库文件和输出路径记忆功能 7. 支持从bdf格式转换自定义字库(bin文件)格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值