游戏引擎一般用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 中文编码字符集
知乎:字体的字重是什么