FT_LOAD_CHAR加载返回FT_Error错误码36

上述代码会加载字符失败

代码跟踪发现    /* if FT_LOAD_NO_SCALE is not set, `ttmetrics' must be valid */

 必须要加上FT_Set_Char_Size函数,并且第二个第三个参数要是64的倍数

 

 

FreeType 2使用大小对象来模拟与给定字符大小有关的所有信息。例如,size对象保存某些指标的值,例如x_ppem和y_ppem,它们都以像素表示,以及升序、文本高度和最大水平推进,它们都以1/64像素表示(但是,这些值被四舍五入为整数,即64的倍数)。

当调用FT_New_Face函数(或其兄弟函数之一)时,它会自动为返回的脸创建一个新的size对象。这个size对象可以通过face - >size直接访问。

注意:单个face对象可以同时处理一个或多个大小对象;然而,很少有程序员真正需要这样做。因此,我们决定通过附加功能提供此功能。

当创建一个新的face对象时,所有元素在初始化期间被设置为0。要用合理的值填充结构,应该调用FT_Set_Char_Size。下面是一个示例,将300×300dpi设备的字符大小设置为16pt:

error = FT_Set_Char_Size(
          face,    /* handle to face object         */
          0,       /* char_width in 1/64 of points  */
          16*64,   /* char_height in 1/64 of points */
          300,     /* horizontal device resolution  */
          300 );   /* vertical device resolution    */

Notes:

        字符的宽度和高度以1/64点指定。点是物理距离,等于1/72英寸。通常,它不等于一个像素。

        字符宽度值为0表示“与字符高度相同”,字符高度值为0表示“与字符宽度相同”。否则,可以指定不同的字符宽度和高度。

        水平和垂直设备的分辨率用点每英寸(dpi)表示。对于屏幕等显示设备,标准值是72或96 dpi。分辨率用于从字符点大小计算字符像素大小。

        水平分辨率值为0表示“与垂直分辨率相同”,垂直分辨率值为0表示“与水平分辨率相同”。如果两个值都为零,则两个维度都使用72dpi。

        第一个参数是face对象的句柄,而不是size对象。


这个函数计算对应于字符宽度、高度和设备分辨率的字符像素大小(可能是小数)。像素大小的一个常见缩写是pem(像素每em)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值