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.
Checking the stable version of the documentation...
ResourceImporterDynamicFont
继承: ResourceImporter < RefCounted < Object
导入 TTF、TTC、OTF、OTC、WOFF、WOFF2 字体文件,用于能够适配任何大小的字体渲染。
描述
与位图字体不同,动态字体可以被调整为任意大小,并且看起来仍然清晰。动态字体还可以选择支持 MSDF 字体渲染,从而允许运行时缩放更改,且没有重新光栅化成本。
虽然 WOFF(尤其是 WOFF2)往往会产生较小的文件大小,但不存在普遍“更好”的字体格式。在大多数情况下,建议使用字体开发人员网站上提供的字体格式。
教程
属性
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
属性说明
bool allow_system_fallback = true 🔗
为 true 时,如果在该动态字体中找不到字形,则自动使用系统字体作为后备。这使得支持 CJK 字符或表情符号更加简单,因为你不需要在项目中包含 CJK/表情符号字体。另见 fallbacks。
注意:系统字体的外观因平台而异。仅 Windows、macOS、Linux、Android 和 iOS 支持加载系统字体。
要使用的字体抗锯齿方法。
禁用:最适合像素艺术字体,如果字体文件创建良好并且字体以其预期大小的整数倍使用,则你不必更改默认的灰度抗锯齿。如果像素艺术字体在其预期大小下外观不佳,请尝试将 subpixel_positioning 设置为 Disabled。
灰度:使用灰度抗锯齿。这是 macOS、Android 和 iOS 上的操作系统使用的方法。
LCD 子像素:使用子像素模式的抗锯齿,使 LCD 显示器上的字体更加清晰。这是 Windows 和大多数 Linux 发行版上的操作系统使用的方法。缺点是这可能会在边缘产生“边缘”,尤其是在不使用标准 RGB 子像素的显示技术上(例如 OLED 显示器)。LCD 子像素布局由 ProjectSettings.gui/theme/lcd_subpixel_layout 全局控制,这也允许回退到灰度抗锯齿。
如果为 true,则会对得到的字体使用无损压缩。
bool disable_embedded_bitmaps = true 🔗
如果为 true,则会禁用内嵌字体位图的加载(仅包含位图的字体以及彩色字体会禁用该属性)。
如果在该动态字体中找不到字形,则要使用的字体后备列表。首先尝试位于数组开头的字体,最后尝试不支持字形语言和脚本的后备字体(请参阅 language_support 和 script_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 会增加字体生成时间和内存使用量。请只在你确实需要时才启用此设置。
要使用的提示模式。这决定了在光栅化字体时,字形边缘应该以多大的力度去“吸附”对齐到像素点上。根据个人偏好,你可能会更喜欢某一种提示模式。除了 无(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,则绘制彩色字形时会应用颜色调制,否则只会对灰度字形应用。
最小和最大可表示的有符号距离之间的形状周围的范围宽度。如果使用字体轮廓,msdf_pixel_range 必须至少设置为最大字体轮廓大小的两倍。msdf_pixel_range 的默认值为 8,允许大小最大到 4 的轮廓看起来正确。
用于生成 MSDF 纹理的源字体大小。较高的值允许更高的精度,但渲染速度较慢并且需要更多内存。只有当注意到字形渲染中明显缺乏精度时,才增加该属性的值。仅在 multichannel_signed_distance_field 为 true 时有效。
bool multichannel_signed_distance_field = false 🔗
如果设置为 true,字体将使用多通道带符号距离场(MSDF),任何尺寸都能够进行清晰的渲染。由于这种方法不需要在每次字体大小更改时都对字体进行光栅化,因此可以实时调整字体大小,不会造成任何性能损失。对于按比例缩小的 Control(或从远距离查看的 Label3D),文本也不会看起来有颗粒感。
MSDF 字体渲染可以与 generate_mipmaps 结合使用,从而进一步提高缩小时的字体渲染质量。
Dictionary opentype_features = {} 🔗
要为这个字体启用、禁用或设值的 OpenType 特性。可以用来启用字体所提供的可选特性,例如合字和备选字形。不同字体所支持的 OpenType 特性列表各有不同。
如果设为正数,则会覆盖使用该字体的视口的过采样系数。见 Viewport.oversampling。该值不会覆盖 draw_* 方法的 oversampling 参数。
要预渲染的字形范围。这可以避免在游戏过程中需要渲染新角色时出现卡顿,特别是在启用 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)): 对于像素风格的字体(每个字形的轮廓仅包含水平和垂直的直线),使用 禁用;对于其他字体,则使用 自动。