gpt4 book ai didi

freetype - 在 FreeType 中设置字符大小

转载 作者:行者123 更新时间:2023-12-03 09:43:07 25 4
gpt4 key购买 nike

我有点困惑设置字符大小对象的字符宽度和高度字段(示例来自 FreeType tutorial 中所述)

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 是否足够?反而?

最佳答案

函数 FT_Set_Char_Size 和 FT_Set_Pixel_Sizes 设置大小,不是单个字符,而是 em square对于字体,它是一个名义上的正方形,可能与最高字符一样高(例如,方括号:'['),但实际上可能与任何字符的高度不同;它只是定义了一个引用尺寸。设置大小为 12pt 的主要含义是创建通常适合基线 12pt 的字符而不会发生冲突,并且与其他字体的 12pt 字符协调。安' em ' 因此是表示字体大小的打印尺寸。
高度和宽度可单独设置,因此您可以通过使用比高度更大或更小的宽度来创建扩展(水平放大)或压缩(水平压缩)字体。通常你将宽度设置为零,这意味着 em 正方形的宽度与高度相同,并且字符将以标准比例创建,而不是拉伸(stretch)或收缩。
除了 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);

关于freetype - 在 FreeType 中设置字符大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40657431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com