如何用FreeType写字

来源:互联网 发布:免费外呼软件 编辑:程序博客网 时间:2024/05/16 23:40

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;
                }

}

原创粉丝点击