关于字体管理器
基础要求
| 先尝试回答下面的问题:什么是文本域、文本光标?什么是窗口字符、底层字符?窗口字符分为哪些类型?窗口字符、底层字符有哪些固定格式? |
如果你对上述问题有疑问,那么说明你还不了解 窗口字符。
需要去看看:”23.窗口字符 > 关于窗口字符.docx”。
相关插件
核心插件:
◆Drill_CoreOfWindowCharacter 窗口字符 - 窗口字符核心
插件本体:
◆Drill_DialogFontFace 窗口字符 - 字体管理器
该插件专门对游戏中的字体进行管理设置。
字体
1)字体文件夹
所有字体文件都需要放入到fonts文件夹中,
并且字体格式必须是 ttf格式。
2)字体配置
使用记事本打开gamefont.css文件,
可以看到字体配置中:
“@font-face”下有“GameFont”和“杨任东竹石体-Regular.ttf”。
此格式的意思为:
在游戏中定义一个叫“GameFont”名字的字体,
并且这个字体名链接“杨任东竹石体-Regular.ttf”文件。

| 注意,字体名称,是双击打开字体文件后,显示的字体名称。不是 字体的文件名 。有时候下载来的文件名和字体名可能不一样,需要改成一样,大小写也要一样。 |

3)添加新字体
接下来,我们添加一个新的字体文件到文件夹中。

打开gamefont.css文件,
复制“@font-face”一模一样的格式。(GameFont的设置不能删)
另外注意,格式中的标点符号都需要一致,不能出现中文冒号或中文括号。

起名为“HappyFont”,并对应“站酷快乐体.ttf”文件。
这里的名字“HappyFont”可以随便定义,可长可短,但是必须要是英文字母。

4)插件配置
添加新字体之后,需要配置插件 字体管理器,
还要在插件配置的“预加载的字体名”中添加新字体的名称。


这样才算字体配置成功了。
5)窗口字符使用
字体相关的窗口字符如下。
| 窗口字符 | 描述 |
| \ff[xxx] | 之后的文本使用对应的xxx字体。 |
| \fn[xxx] | 之后的文本使用对应的xxx字体。 |
| \fr | 全重置字符,重置之后文本所有设置,包括恢复默认字体。 |
在对话框中,使用窗口字符“\fn[HappyFont]”即可。

这样就能在游戏中看见字体变化了。

默认字体
1)默认字体原理
第一默认字体: 黑体(SimHei)。
(操作系统自带的通用字体)
第二默认字体: GameFont 。
第三默认字体: 字体管理器插件的 ”所有文本-默认字体类型” 。
该配置默认为GameFont,可以改成其它字体名,所有文本会变。

之所以有三种默认字体,是因为系统架构如下。

游戏打开后,会优先执行 html5系统底层 和 rpg_core.js游戏底层,
这时候 第一默认字体和第二默认字体 会先加载并初始化。
因此即使 第三默认字体 是实际作用于游戏所有文本的字体,
也必须要有前面两个默认字体,不能缺。
| 如果你添加的字体没有预加载成功,那么系统会使用 第一默认字体,对应问题:部分字体未及时变化 。如果你删掉gamefont.css文件的GameFont定义,那么系统会一直加载第二默认字体,对应问题:配置字体后,一直卡在loading界面 。 |
2)全局默认值
插件中提供了 所有文本、对话框 的默认字体设置。
比如 所有文本 的设置,能对游戏里面任何 绘制文本 的地方都有效,全局有效。
默认值为 ”GameFont”,你可以修改为其它 预加载的字体名。

此配置还能通过插件进行临时修改。

详细可以去示例中 窗口字符管理层 去看看 全局默认值 的介绍。
从零开始设计(DIY)
设计一个艺术渐变字体(指向)
主要用到了下列插件:
◆Drill_CoreOfWindowCharacter 窗口字符 - 窗口字符核心
◆Drill_CoreOfColor 窗口字符 - 颜色核心
◆Drill_DialogFontFace 窗口字符 - 字体管理器
窗口字符的 高级渐变色+字体 设计。
你可以去看看文档 ”23.窗口字符 > 关于颜色核心.docx” 。


设计一个外发光文字(指向)
主要用到了下列插件:
◆Drill_CoreOfWindowCharacter 窗口字符 - 窗口字符核心
◆Drill_DialogFontFace 窗口字符 - 字体管理器
◆Drill_DialogCharOuterGlow 窗口字符 - 外发光效果
◆Drill_DialogCharOuterBorder 窗口字符 - 描边效果
窗口字符的多个效果组合设计。
你可以去看看文档 ”23.窗口字符 > 关于字符描边与外发光.docx” 。


常见问题(FAQ)
部分字体未及时变化
| 问题名称 | 部分字体未及时变化 |
| 问题图示 | ![]() ![]() |
| 问题描述 | 在配置后,第一次打开游戏,会发现字体使用的并不是指定的字体。再次进入对话后,会发现又能恢复原来的字体。 |
| 原理解析 | 有两种情况:1.字体没来得及加载成功。2.字体本身缺字少字。出现任何字体失败情况,系统都会使用 第一默认字体 来补救。根据描述,该问题是第一种情况。 |
| 解决方案 | 配置gamefont.css文件后,你还需要在插件里添加预加载字体名。这样就不会出现字体切换延迟的情况了。 另外,如果你使用的字体本身缺字少字,那就没法解决了,你只能换其他的字体了。 |
配置字体后,一直卡在loading界面
| 问题名称 | 配置字体后,一直卡在loading界面 |
| 问题图示 | ![]() |
| 问题描述 | 按照前面章节:2)字体配置 修改了gamefont.css文件,打开游戏后,一直卡在loading界面,没有任何游戏画面。 |
| 原理解析 | 很可能是卡在字体加载这一步了。作者我测试的一种情况,就是因为 “GameFont” 的名称定义被删,系统会一直等待 第二默认字体 加载。其它字体如果没加载成功,不会卡loading界面,而是出现问题: 部分字体未及时变化 。 |
| 解决方案 | 检查并恢复 “GameFont” 的定义。 |
某些字体加载后,出现贴顶、砍头现象
| 问题名称 | 配置字体后,一直卡在loading界面 |
| 问题图示 | ![]() |
| 问题描述 | 部分文本出现头部一点点被切割的痕迹。 |
| 出现时机 | > 换了其他字体后就出现,示例里面不会出现。> 没有修改行高,没加行高控制器插件。 |
| 原理解析 | 与字体相关,有些字体本身就很高,体积很大。系统无法直接知道字体多高,所以使用计算公式:字体高度 = 字体大小 * 比率。(比率通常为1.10)某些字体是可能出现高度不够,字体没被包裹的问题。 |
| 解决方案 | 【系统 - 字符绘制核心】 插件中,可以调整此比率,一般最大设置1.20就足够了。 由于此设置会影响所有文本和字体,需要慎重修改。 |



由于此设置会影响所有文本和字体,需要慎重修改。