ResourceImporterDynamicFont

继承: ResourceImporter < RefCounted < Object

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

描述

与位图字体不同,动态字体可以调整为任何大小,并且看起来仍然清晰。动态字体还可以选择支持MSDF字体渲染,这允许在运行时更改比例,而无需重新光栅化成本。

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

另见ResourceImporterBMFontResourceImporterImageFont

属性


属性说明

bool allow_system_fallback = true 🔗

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

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


int antialiasing = 1 🔗

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

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

灰度:使用灰度抗锯齿。这是操作系统在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缩小或从远距离查看TextRender时文本看起来颗粒状(如果TextRender.texture_filter设置为显示mipmap的模式)。

启用generate_mipmaps会增加字体生成时间和内存使用量。仅在实际需要时启用此设置。


int hinting = 1 🔗

要使用的提示模式。这控制了光栅化字体时字形边缘应如何积极地捕捉到像素。根据个人喜好,您可能更喜欢使用一种提示模式而不是另一种。以外的提示模式仅在字体包含提示数据时有效(参见force_autohinter)。

无:最平滑的外观,可以使字体在小尺寸时看起来模糊。

Light:通过仅将字形边缘捕捉到Y轴上的像素来获得清晰的结果。

完整:通过将字形边缘捕捉到X轴和Y轴上的像素来锐利。


bool keep_rounding_remainders = true 🔗

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


Dictionary language_support = {} 🔗

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


int msdf_pixel_range = 8 🔗

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


int msdf_size = 48 🔗

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


bool multichannel_signed_distance_field = false 🔗

如果设置为true,字体将使用多通道符号距离字段(MSDF)在任何大小下进行清晰渲染。由于这种方法不依赖于每次字体大小变化时都光栅化字体,因此可以实时调整字体大小而不会影响性能。对于缩小的Controls(或从远距离查看的TextRenders),文本也不会看起来粗糙。

MSDF字体渲染可以与generate_mipmaps相结合,以在缩放时进一步提高字体渲染质量。


Dictionary opentype_features = {} 🔗

用于启用、禁用或设置此字体值的OpenType功能。这可用于启用字体提供的可选功能,例如连字或替代字形。支持的OpenType功能列表因字体而异。


float oversampling = 0.0 🔗

如果设置为大于0.0的值,则覆盖字体的过采样因子。这可用于以比预期更高或更低的分辨率呈现字体,而不会影响其物理大小。在大多数情况下,这应该保留在0.0


Array preload = [] 🔗

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


Dictionary script_support = {} 🔗

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


int subpixel_positioning = 4 🔗

亚像素定位改善了字体渲染外观,尤其是在较小的字体大小。缺点是最初渲染字体需要更多时间,这可能会在应用过程中导致卡顿,尤其是在使用大字体时。对于具有像素艺术外观的字体,这应该设置为禁用

禁用:没有亚像素定位。最低质量,最快渲染。

自动:在小字体大小时使用亚像素定位(所选质量因字体大小而异)。大字体不会使用亚像素定位。这是性能和质量之间的良好权衡。

像素的一半:无论字体大小如何,始终执行中间子像素定位。高质量,渲染慢。

四分之一像素:无论字体大小如何,始终执行精确的子像素定位。最高质量,最慢渲染。

自动(像素字体除外):禁用用于像素样式字体(每个字形轮廓仅包含直线水平线和垂直线),自动用于其他字体。