font_get_info

此函数用于检索给定字体的信息。您可以提供字体索引,它可以是通过 " 资源浏览器 " 添加的资源,也可以是运行时添加的 字体

该函数返回具有以下变量的结构

字体信息结构
变量名数据类型描述
ascenderReal字体的上升的高度(以像素为单位)
ascenderOffsetReal从基线到字体顶部的最大偏移量(以像素为单位)
sizeReal字体的近似大小(以像素为单位)
spriteIndexSprite Asset字体的精灵索引(如果是从sprite创建的),否则-1
textureReal如果字体是从精灵创建的,则为-1,否则为字体的纹理ID
nameString字体的名称
boldBooleantrue如果字体为粗体,否则false(见下文注意)
italicBooleantrue如果字体为斜体,否则false(见下文注意)
glyphs字体字形结构包含字体中每个字形信息的结构(更多信息见下文)
sdfEnabledBoolean是否为此字体启用或禁用SDF
sdfSpreadReal为此字体设置的SDF跨页值
effectsEnabledBoolean是否为此字体启用效果
effectParamsStruct此字体的效果结构,可使用font_enable_effects进行更改

注意 bold italic 变量仅反映用户对字体的设置,因此对于默认显示为粗体或斜体的字体,这些变量可能不准确。

如果提供的字体不存在,函数将返回undefined

另请注意,更改这些变量中任何变量的值,或字形结构中包含的任何变量的值,不会改变字体的呈现方式,因此,此信息应该考虑只读

字形结构

返回的结构中的字形变量本身将是一个结构,包含字体中包括的每个字形的信息。此结构中的每个变量将是一个字形的字符名称,它将保存一个包含该字形信息的结构。您可以想象这些嵌套结构具有以下格式(从主结构开始):

{
    glyphs:
    {
        A: {},
        B: {},
        C: {},
        // ...other glyphs
    },
    // ...other font info
}

可以使用标志符号的字符名称从结构中检索其信息,如下面的代码所示:

var _font_info = font_get_info(Font1);

var _info_A = _font_info.glyphs[$ "A"]; // $ is a struct accessor

show_debug_message(_info_A);

上面的代码获取"A"字符的字形结构并将其打印到输出日志中。您还可以将字符串(" A")替换为包含字符串的变量,这样您就可以在运行时通过该变量获取任何字形的信息。

为标志符号返回的结构将包含以下变量:

注意 在HTML5上,对于任何加载的文件字体 (例如*. ttf*. otf),字形结构将为空,因为运行时将没有关于这些字形的信息。

字体字形结构
变量名数据类型描述
charReal如果字体是从sprite创建的,则这将是来自该精灵的字形的图像索引,否则它将是其Unicode字符编号

注意:如果字体是从sprite创建的,则以下所有变量都不会出现在结构中
xReal字形在纹理页面上的X位置(以纹理像素为单位)
yReal字形在纹理页面上的Y位置(以纹理像素为单位)
wReal纹理页面上标志符号的宽度(以纹理像素为单位)
hReal纹理页面上标志符号的高度(以纹理像素为单位)
shiftReal前进到下一个字符时右移的像素数(左移时可以为负值)
offsetReal水平偏移此字形渲染的像素数(可以为正或负)
kerningArray包含成对(或2个一组)字距调整信息的整数数组。字符对中的第一个整数是字符的Unicode值,第二个整数是要添加到该字符的移位值(可以是正数或负数)的数量(如果该字符前面有该字形的字符)。

注意 对于在运行时加载的文件字体,如果字形尚未渲染,则字形的 XY 值可能为 -1,因为它在用于缓存的纹理页面上没有位置。

 

语法:

font_get_info(font);

参数类型描述
fontFont Asset应检索其信息的字体。

 

返回:

字体信息结构 (or undefined)

 

例子:

var _info = font_get_info(my_font);

if (_info != undefined && _info.bold)
{
    image_xscale *= 2;
    image_yscale *= 2;
}

此代码检索存储在 my_font 变量中的字体信息。如果返回的值为不是 undefined,并且给定的字体为粗体,则实例的比例将加倍。