Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

ResourceImporterDynamicFont

继承: ResourceImporter < RefCounted < Object

导入 TTF、TTC、OTF、OTC、WOFF、WOFF2 字体文件,用于能够适配任何大小的字体渲染。

描述

与位图字体不同,动态字体可以被调整为任意大小,并且看起来仍然清晰。动态字体还可以选择支持 MSDF 字体渲染,从而允许运行时缩放更改,且没有重新光栅化成本。

虽然 WOFF(尤其是 WOFF2)往往会产生较小的文件大小,但不存在普遍“更好”的字体格式。在大多数情况下,建议使用字体开发人员网站上提供的字体格式。

另请参见 ResourceImporterBMFontResourceImporterImageFont

教程

属性

bool

allow_system_fallback

true

int

antialiasing

1

bool

compress

true

bool

disable_embedded_bitmaps

true

Array

fallbacks

[]

bool

force_autohinter

false

bool

generate_mipmaps

false

int

hinting

3

bool

keep_rounding_remainders

true

Dictionary

language_support

{}

bool

modulate_color_glyphs

false

int

msdf_pixel_range

8

int

msdf_size

48

bool

multichannel_signed_distance_field

false

Dictionary

opentype_features

{}

float

oversampling

0.0

Array

preload

[]

Dictionary

script_support

{}

int

subpixel_positioning

4


属性说明

bool allow_system_fallback = true 🔗

true 时,如果在该动态字体中找不到字形,则自动使用系统字体作为后备。这使得支持 CJK 字符或表情符号更加简单,因为你不需要在项目中包含 CJK/表情符号字体。另见 fallbacks

注意:系统字体的外观因平台而异。仅 Windows、macOS、Linux、Android 和 iOS 支持加载系统字体。


int antialiasing = 1 🔗

要使用的字体抗锯齿方法。

禁用:最适合像素艺术字体,如果字体文件创建良好并且字体以其预期大小的整数倍使用,则你不更改默认的灰度抗锯齿。如果像素艺术字体在其预期大小下外观不佳,请尝试将 subpixel_positioning 设置为 Disabled

灰度:使用灰度抗锯齿。这是 macOS、Android 和 iOS 上的操作系统使用的方法。

LCD 子像素:使用子像素模式的抗锯齿,使 LCD 显示器上的字体更加清晰。这是 Windows 和大多数 Linux 发行版上的操作系统使用的方法。缺点是这可能会在边缘产生“边缘”,尤其是在不使用标准 RGB 子像素的显示技术上(例如 OLED 显示器)。LCD 子像素布局由 ProjectSettings.gui/theme/lcd_subpixel_layout 全局控制,这也允许回退到灰度抗锯齿。


bool compress = true 🔗

如果为 true,则会对得到的字体使用无损压缩。


bool disable_embedded_bitmaps = true 🔗

如果为 true,则会禁用内嵌字体位图的加载(仅包含位图的字体以及彩色字体会禁用该属性)。


Array fallbacks = [] 🔗

如果在该动态字体中找不到字形,则要使用的字体后备列表。首先尝试位于数组开头的字体,最后尝试不支持字形语言和脚本的后备字体(请参阅 language_supportscript_support)。另见 allow_system_fallback


bool force_autohinter = false 🔗

如果为 true,则使用 FreeType 的自动提示器强制生成字体的提示数据。这将使 hinting 对不包含提示数据的字体有效。


bool generate_mipmaps = false 🔗

如果为 true,则该字体将生成 mipmap。这样可以防止文本在 Control 被按比例缩小或从远距离查看 Label3D 时看起来有颗粒感(如果 Label3D.texture_filter 被设置为显示 mipmap 的模式)。

启用 generate_mipmaps 会增加字体生成时间和内存使用量。请只在你确实需要时才启用此设置。


int hinting = 3 🔗

要使用的提示模式。这决定了在光栅化字体时,字形边缘应该以多大的力度去“吸附”对齐到像素点上。根据个人偏好,你可能会更喜欢某一种提示模式。除了 无(None) 以外的提示模式,只有在字体本身包含提示数据时才有效(参见 force_autohinter)。

无(None): 外观最平滑,但可能会导致字体在小字号下看起来有些模糊。

轻微(Light): 仅在 Y 轴(垂直方向)上将字形边缘吸附到像素点,呈现锐利的效果。

正常(Normal): 在 X 轴和 Y 轴(水平和垂直方向)上都将字形边缘吸附到像素点,呈现最锐利的效果。

轻微(像素字体除外): 对于像素风格的字体(每个字形的轮廓仅包含水平和垂直的直线),此选项为 禁用;对于其他字体,则使用 轻微 模式。

正常(像素字体除外): 对于像素风格的字体(每个字形的轮廓仅包含水平和垂直的直线),此选项为 禁用;对于其他字体,则使用 正常 模式。


bool keep_rounding_remainders = true 🔗

如果设置为 true,则将字形与像素边界对齐时会累积舍入余数,确保字形的分布更加均匀。如果启用了次像素定位则该设置无效。


Dictionary language_support = {} 🔗

覆盖该字体支持的语言列表。如果留空,则由字体元数据提供。通常无需更改该设置。另见 script_support


bool modulate_color_glyphs = false 🔗

如果设为 true,则绘制彩色字形时会应用颜色调制,否则只会对灰度字形应用。


int msdf_pixel_range = 8 🔗

最小和最大可表示的有符号距离之间的形状周围的范围宽度。如果使用字体轮廓,msdf_pixel_range 必须至少设置为最大字体轮廓大小的两倍msdf_pixel_range 的默认值为 8,允许大小最大到 4 的轮廓看起来正确。


int msdf_size = 48 🔗

用于生成 MSDF 纹理的源字体大小。较高的值允许更高的精度,但渲染速度较慢并且需要更多内存。只有当注意到字形渲染中明显缺乏精度时,才增加该属性的值。仅在 multichannel_signed_distance_fieldtrue 时有效。


bool multichannel_signed_distance_field = false 🔗

如果设置为 true,字体将使用多通道带符号距离场(MSDF),任何尺寸都能够进行清晰的渲染。由于这种方法不需要在每次字体大小更改时都对字体进行光栅化,因此可以实时调整字体大小,不会造成任何性能损失。对于按比例缩小的 Control(或从远距离查看的 Label3D),文本也不会看起来有颗粒感。

MSDF 字体渲染可以与 generate_mipmaps 结合使用,从而进一步提高缩小时的字体渲染质量。


Dictionary opentype_features = {} 🔗

要为这个字体启用、禁用或设值的 OpenType 特性。可以用来启用字体所提供的可选特性,例如合字和备选字形。不同字体所支持的 OpenType 特性列表各有不同。


float oversampling = 0.0 🔗

如果设为正数,则会覆盖使用该字体的视口的过采样系数。见 Viewport.oversampling。该值不会覆盖 draw_* 方法的 oversampling 参数。


Array preload = [] 🔗

要预渲染的字形范围。这可以避免在游戏过程中需要渲染新角色时出现卡顿,特别是在启用 subpixel_positioning 的情况下。使用预加载的缺点是初始项目加载时间会增加,内存使用量也会增加。


Dictionary script_support = {} 🔗

覆盖该字体支持的语言脚本列表。如果留空,则由字体元数据提供。通常无需更改该设置。另见 language_support


int subpixel_positioning = 4 🔗

亚像素定位可以改善字体的渲染外观,尤其是在字号较小的时候。缺点是它会增加字体初次渲染所需的时间,这可能会在游戏中导致卡顿,特别是当它被用于大字号字体时。对于具有像素画风格的字体,此选项应设置为 禁用(Disabled)

禁用(Disabled): 不使用亚像素定位。质量最低,但渲染速度最快。

自动(Auto): 仅在小字号时使用亚像素定位(具体采用的质量会根据字号大小而变化)。大字号字体将不会使用亚像素定位。这是在性能和画质之间一个很好的折中方案。

二分之一像素(One Half of a Pixel): 无论字号大小,始终执行中等精度的亚像素定位。质量较高,渲染较慢。

四分之一像素(One Quarter of a Pixel): 无论字号大小,始终执行高精度的亚像素定位。质量最高,渲染最慢。

自动(像素字体除外)(Auto (Except Pixel Fonts)): 对于像素风格的字体(每个字形的轮廓仅包含水平和垂直的直线),使用 禁用;对于其他字体,则使用 自动