游戏中的字体文件处理

5 篇文章 0 订阅
3 篇文章 0 订阅

游戏引擎一般用FreeType库读取字体文件。
引擎通常要求游戏自带的字体文件。

字体选择

黑体的屏幕显示效果比较好,可以使用思源黑体
思源宋体也不错。
它们都采用SIL Open Font License,可以免费使用:

The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works.

黑体的字重(Weight,权)用Normal或Regular即可。
宋体的话用Normal或SemiBold比较好看。

字体子集化

如果游戏没有聊天功能,用到的字比较少,可以考虑精简字体。
可以用Python工具包FontTools中的子集化(pyftsubset) 功能来实现。

安装FontTools工具包

假设已安装了Python,在命令提示符窗口执行:

py -m pip install --upgrade pip fonttools[all]

准备文本编码文件

收集游戏中要显示的文本字符编码,集中到文件charlist.txt中:

cd /d D:\prj\GameDir\
type locale\*.po > %TEMP%\charlist.txt
type *.gd >> %TEMP%\charlist.txt

po文件包含了翻译前后的原文和外文文本;gd文件是程序文件,包含了其它无需翻译直接显示的文本。
文件charlist.txt采用UTF-8编码(po文件和gd文件都采用UTF-8编码),包含了所有可能会显示的字符。

子集化(pyftsubset)

假设Python安装在目录D:\Python3,在命令提示符窗口执行:

set PATH=D:\Python3;D:\Python3\Scripts;%PATH%
pyftsubset SourceHanSansSC-Normal.otf --text-file=%TEMP%\charlist.txt --flavor=woff2 --output-file=zh_CN.otf --drop-tables+=vmtx,vhea,VORG

其中选用了思源黑体(简体中文)字体文件SourceHanSansSC-Normal.otf ,字重为Normal。
生成的zh_CN.otf文件相比原字体文件,文件大小和包含字数都极大地减少了。

参考

FontTools
FontForge
GB/T 16964.1-1997 字型信息交换 第1部分 体系结构
GB 18030 中文编码字符集
知乎:字体的字重是什么

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值