FT_FaceRec
是 FreeType 库中用于描述字体文件的数据结构之一。它包含了一个字体文件的所有信息,包括字体的度量信息、字形数据、字形轮廓等。
typedef struct FT_FaceRec_
{
FT_Long num_faces; //字体文件中包含的字体数目,通常为1
FT_Long face_index; //当前字体在字体文件中的索引
FT_Long face_flags; //字体标志,指定字体的属性(如粗体、斜体等)
//FT_FACE_FLAG_SCALABLE
//FT_FACE_FLAG_FIXED_SIZES
//FT_FACE_FLAG_MULTIPLE_MASTERS
FT_Long style_flags; //字形样式标志,指定字形的属性(如粗体、斜体等)
//FT_STYLE_FLAG_BOLD
//FT_STYLE_FLAG_ITALIC
FT_Long num_glyphs; //字体中的glyph数目
FT_String* family_name; //名称
FT_String* style_name; //字体风格名称
FT_Int num_fixed_sizes; //固定大小字体的数量
FT_Bitmap_Size* available_sizes; //固定大小字体的数组
FT_Int num_charmaps; //字符编码映射表(charmap)的数量
FT_CharMap* charmaps; //字符编码映射表(charmap)数组
FT_Generic generic; //用于存储任意类型的额外数据
/*# The following member variables (down to `underline_thickness`) */
/*# are only relevant to scalable outlines; cf. @FT_Bitmap_Size */
/*# for bitmap fonts. */
FT_BBox bbox; //字体的外包矩形,单位像素
FT_UShort units_per_EM; //字体的EM(em-square)尺寸
//也就是字体的基础单位,通常等于字体的设计尺寸
FT_Short ascender; //字体基线上方的距离,单位font units
FT_Short descender; //字体基线下方的距离,单位font units
FT_Short height; //字体的高度(ascender和descender之和),单位font units
FT_Short max_advance_width; //字体中最大的advance宽度
//advance是指字符的推进量,即字符之间的距离,单位font units
FT_Short max_advance_height; //字体中最大的advance高度,单位font units
FT_Short underline_position; //字体下划线位置的垂直坐标,单位font units
FT_Short underline_thickness; //字体下划线的粗细度
FT_GlyphSlot glyph; //存储当前字体中的glyph图像槽
FT_Size size; //字体大小,单位像素
FT_CharMap charmap; //当前字体的字符编码映射表
/*@private begin */
FT_Driver driver; //字体所使用的驱动程序
FT_Memory memory; //用于内存管理的内部数据结构
FT_Stream stream; //字体所对应的输入流,用于从字体文件中读取数据
FT_ListRec sizes_list; //固定大小字体列表
FT_Generic autohint; /* face-specific auto-hinter data */
//自动hinting程序
void* extensions; /* unused */
//存储任意类型的扩展数据
FT_Face_Internal internal; //是一些额外的内部信息,通常不需要直接访问
/*@private end */
} FT_FaceRec;