Olu*_*ide 5 freetype freetype2
我对设置字符大小对象的字符宽度和高度字段有点困惑(示例来自FreeType教程中描述的)
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 */
Run Code Online (Sandbox Code Playgroud)
为什么char_width和char_height指定?那不应该取决于实际的字形吗?例如,字符“ w”和“ l”具有不同的宽度和高度。
另外,由于我没有渲染到屏幕上(我打算将光栅字体数据用于其他一些深奥的目的),而使用FT_Set_Pixel_Sizes是否足够?
函数 FT_Set_Char_Size 和 FT_Set_Pixel_Sizes 设置的不是单个字符的大小,而是字体的全角方形的大小,这是一个概念性的方形,可能与最高的字符一样高(例如,方括号:'['),但是事实上可能与任何角色的高度不同;它只是定义了一个参考尺寸。设置 12pt 大小的主要含义是创建通常适合间隔 12pt 的基线而不冲突的字符,并且与其他字体的 12pt 字符协调一致。因此, “ 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 分之一像素,宽度为零,水平和垂直设备分辨率均为零;分辨率为 0 使像素与点大小相同。因此,要获得 11.5 的像素大小,您可以使用
FT_Set_Char_Sizes(face,0,11 * 64 + 32,0,0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
424 次 |
| 最近记录: |