首页 新闻 会员 周边

freetype 显示中文字符的问题

0
悬赏园豆:80 [已解决问题] 解决于 2012-09-22 16:13

大家帮我看一下,拿拿主意,下面这段代码,显示一个英文字符没问题,显示中文字符,就只显示的出一个框了,

 

 

void TestTrueType()
{
    FT_Library          m_pFTLib;
      FT_Face     m_pFTFace;

       FT_Error error = FT_Init_FreeType(&m_pFTLib);
       if(FT_New_Face(m_pFTLib, "C:/WINDOWS/Fonts/simkai.ttf", 0, &m_pFTFace))
       {
           return;
       }
       FT_Select_Charmap(m_pFTFace, FT_ENCODING_UNICODE);
       FT_Set_Char_Size(m_pFTFace, 0, 12<<6, 300, 300);

 

// 此出将"A"改为汉字,则只显示出一个框;
       error = FT_Load_Glyph(m_pFTFace, FT_Get_Char_Index(m_pFTFace, 'A'), FT_LOAD_DEFAULT);
       // 第二个参数为渲染模式,这里渲染为1位位图(黑白位图),若为FT_RENDER_MODE_NORMAL则渲染为256级灰度图; 
       error = FT_Render_Glyph(m_pFTFace->glyph,  FT_RENDER_MODE_NORMAL);  

       FT_Bitmap& bmp = m_pFTFace->glyph->bitmap;
       int h = bmp.rows;
       int w = bmp.width;


    
       for(int i=0; i<h; i++)
       {
           for(int j=0; j<w; j++)
           {
               if((bmp.buffer[i * w  + j]) == 0 ) // 有东东;bmp.pitch
               {
                 printf("0");
               }
               else
               {
                  printf("1");
               }
           }

        printf("\n");
       }

}

若然子的主页 若然子 | 初学一级 | 园豆:2
提问于:2012-03-24 11:00
< >
分享
最佳答案
0

显示一个框是由于字符集的原因,将字符编码改为UTF-8试试吧。

收获园豆:80
zsounder | 老鸟四级 |园豆:2819 | 2012-03-25 00:38

嗯,谢谢,后来发现确实是这个问题

若然子 | 园豆:2 (初学一级) | 2012-05-16 10:43

请问是FT_ENCODING_UTF-8 吗 ?  改完之后貌似说没有这个编码方式 'A'  是直接改成 '中'  吗?  谢谢请指教

阿甘正传 | 园豆:200 (初学一级) | 2014-10-10 14:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册