首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在FreeType中设置字符大小

在FreeType中设置字符大小
EN

Stack Overflow用户
提问于 2016-11-17 22:27:04
回答 1查看 986关注 0票数 7

我对设置character size对象的字符宽度和高度字段有点困惑(如FreeType tutorial中所述的示例)

代码语言:javascript
复制
error = FT_Set_Char_Size(
          face,    /* handle to face object           */
          0,       /* char_width in 1/64th of points  */
          16*64,   /* char_height in 1/64th of points */
          300,     /* horizontal device resolution    */
          300 );   /* vertical device resolution      */

为什么要指定char_widthchar_height?这不应该取决于实际的字形吗?例如,字符"w“和"l”具有不同的宽度和高度。

另外,由于我没有渲染到屏幕上(我计划将栅格字体数据用于其他深奥的目的),使用FT_Set_Pixel_Sizes是否足够?

EN

回答 1

Stack Overflow用户

发布于 2021-01-14 01:35:19

函数FT_Set_Char_Size和FT_Set_Pixel_Sizes设置字体的大小,不是单个字符的大小,而是字体的em square大小,它是一个概念上的正方形,可以与最高的字符一样高(例如,方括号:'['),但实际上可能与任何字符的高度不同;它只是定义了一个参考尺寸。设置12pt大小的主要意义是创建通常适合于基线12pt而不会冲突的字符,并且这些字符与其他字体中的12pt字符协调一致。因此,'em(https://en.wikipedia.org/wiki/Em_(typography%29)‘是代表字体大小的排版尺寸。

高度和宽度可单独设置,以便您可以通过使用大于或小于高度的宽度来创建扩展(水平放大)或压缩(水平压缩)字体。通常,您将宽度保留为零,这意味着em正方形的宽度将与高度相同,并且字符将以其标准比例创建,而不是拉伸或收缩。

除了FT_Set_Char_Size提供了更精细的控制之外,没有理由使用FT_Set_Char_Size而不是FT_Set_Pixel_Sizes;FT_Set_Pixel_Sizes不允许使用分数像素,这在创建消除锯齿的字形时很有意义。最终结果总是使用em大小和显示分辨率来计算。

在您的例子中,您也可以使用FT_Set_Pixel_Sizes;但是,如果您需要一个小数像素大小,请使用FT_Set_Char_Sizes,高度为像素的64/64,宽度为零,水平和垂直设备分辨率均为零;分辨率为0将使像素与点的大小相同。因此,要获得11.5的像素大小,您可以使用

代码语言:javascript
复制
FT_Set_Char_Sizes(face,0,11 * 64 + 32,0,0);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40657431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档