字体

GameMaker 具有多个函数,可从使用字体编辑器添加的字体资源获取信息,以及可用于在运行时更改、添加或删除游戏字体的函数。

函数 font_add 可用于从一个 *.ttf*.otf 文件添加非标准字体,如亚洲字形字体。

注意 在绘制事件中呈现时,Unicode 字符 9647(▯) 用于替换指定字体中可能缺少的任何 字形 。例如,如果你的字体没有°符号,那么写 90° 实际上会产生 90▯。

字体和文本呈现

GameMaker 中的文本是使用 draw_set_font 设置的字体绘制的。使用字体绘制的文本将以不同的方式绘制,具体取决于是否启用了 SDF。

常规

这是在GameMaker中绘制文本的正常方式。所选字体大小(font_get_size)的字体字形放置在纹理页面(font_get_texture)上,每个字符都以纹理页面中的原样呈现。

这样做的缺点是使用常规字体放大文本会使它们看起来像素化。为了解决此问题,GameMaker 为运行时添加的字体提供了 SDF 渲染选项。

SDF 渲染

默认情况下,对于新添加的字体禁用此选项,并通过字体编辑器或调用font_enable_sdf按字体启用此选项:

new_font = font_add("STENCIL.TTF", 32, false, false, 32, 128);
font_enable_sdf(new_font, true);

启用 SDF 渲染时,给定字体范围内的所有字符在纹理页面上以不同方式存储。存储的不是字体设置大小的不同字符的实际呈现,而是 SDF (带符号距离域)

在这种情况下,每个纹理元素都存储到字符上最近点的带符号距离。此纹理上的所有纹理元素组合在一起构成了带符号距离的字段

为字体启用此功能后,可以放大文本,而不会使字符变得像素化。

You can also apply effects to SDF-enabled fonts:

直观比较

下表显示了使用常规字体绘制的文本和使用启用了SDF的字体绘制的文本之间的直观比较:

比例文本呈现(常规)文本呈现(启用 SDF)
1x
4x

功能参考

资源信息

纹理

添加/删除字体

配置

SDF

绘制