如何用FreeType写字

FT_Library    library = NULL;
FT_Face       face = NULL;

//初始化Freetype库,载入字库

static FT_Error osd_load_ft_font(char *filename, int height)
{
    FT_Error      error;
   
      error = FT_Init_FreeType( &library );              /* initialize library */
      /* error handling omitted */
    if(error)
        printf("osd_load_ft_font error: FT_Init_FreeType/n");
       

      error = FT_New_Face( library, filename, 0, &face ); /* create face object */
      /* error handling omitted */
    if(error)
        printf("osd_load_ft_font error: FT_New_Face/n");

      /*  set character size */
      error = FT_Set_Char_Size( face, height * 64, 0, 100, 100 );               
    if(error)
        printf("osd_load_ft_font error: FT_Set_Char_Size/n");

    return error;
 
}

 

//卸载字库以及freetype库
static void osd_unload_ft_font()
{
    if (library == NULL)
        return;
       
    FT_Done_Face    ( face );
      FT_Done_FreeType( library );
}

 

//显示字

glyph_index = FT_Get_Char_Index(face, unicode[n]);
FT_Load_Glyph(face, glyph_index, FT_LOAD_DEFAULT);
FT_Render_Glyph(face->glyph, ft_render_mode_normal);

for(p=0;p<slot->bitmap.width;p++)

      for(q=0;q<slot->bitmap.rows;q++)

{

                gray = slot->bitmap.buffer[q * slot->bitmap.width + p];
                {
                    char  r, g, b;

                    r = ((前景色 & 0x00ff0000) >> 16) * gray / 255 +  ((背景色 & 0x00ff0000) >> 16) * (255 - gray) / 255;
                    g = ((前景色 & 0x0000ff00) >> 8) * gray / 255 +  ((背景色 & 0x0000ff00) >> 8) * (255 - gray) / 255;
                    b = ((前景色 & 0x000000ff) ) * gray / 255 +  ((背景色 & 0x000000ff) ) * (255 - gray) / 255;
                }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值