Skip to content

FreeType 加载字体的函数用法似乎有问题? #992

Description

@pure-purpose

我对字体领域也不是很了解,不过结合相关文档、代码实现以及询问AI,
我理解的字体单位主要有两套,一个是磅(pt),等于 1/72 英寸,主要用于排版印刷业;另一个是像素(px),主要用于计算机显示。

FT_EXPORT( FT_Error ) FT_Set_Pixel_Sizes( FT_Face face, FT_UInt pixel_width, FT_UInt pixel_height ); 这个函数入参字体单位是 px

FT_EXPORT( FT_Error ) FT_Set_Char_Size( FT_Face face, FT_F26Dot6 char_width, FT_F26Dot6 char_height, FT_UInt horz_resolution, FT_UInt vert_resolution ); 这个函数入参字体单位是 pt,为了在计算机上显示,因此需要 DPI 参数,并在内部转为 px,其中字体入参使用 26.6 定点数格式,因此需要乘以 64
最早的代码这里也是乘以64,后来改为乘以72

FT_Set_Char_Size(sf->face, 0, font_size * 64, 0, 50);

FT_Set_Char_Size(sf->face, 0, font_size * 72, 0, 50);

但是 awtk 里面的字体单位应该是 px 吧?这里应该使用 FT_Set_Pixel_Sizes

从结果上来说,FT_Set_Char_Size(sf->face, 0, font_size * 64, 0, 72); 应该等同于 FT_Set_Pixel_Sizes(sf->face, 0, font_size);


另外想问一下,有些屏幕单个像素长宽不相等,导致 n*n 个像素点形成的区域在物理上不是正方形,awtk 有办法设置一个全局的拉伸参数修正显示效果吗?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions