码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 游戏的中文字体文件


    游戏引擎一般用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]
    
    • 1

    准备文本编码文件

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

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

    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
    
    • 1
    • 2

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

    参考

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

  • 相关阅读:
    class12:async 和 await
    JavaWeb项目(三)
    支付宝小程序授权/获取用户信息
    技术人应该广度还是深度学习?
    【面试专线】【基础知识】【JAVA】基础(三)(简答版)
    CentOS7安装Oracle完整教程(超级详细,亲测完美)
    解决echarts重叠点位的气泡图问题
    数据挖掘神经网络算法,人工神经网络分析方法
    【计算机视觉40例】案例32:定位人脸
    开源博客项目Blog .NET Core源码学习(4:生成验证码)
  • 原文地址:https://blog.csdn.net/feiyunw/article/details/127409982
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号