| 
 
| 原文请看http://blog.21ic.com/user1/1505/archives/2008/52981.html 
 发现了几个不明确的地方:
 1,代码决定是否GdConvertEncoding()的处理中并没有MWTF_DBCS_EUCCN,所以需要添上MWTF_DBCS_EUCCN.
 2,*ostr16++ = Unicode[row-0xA0][col-0xA0];并不能正确定位到汉字上,行数需要再减去16.原作者的另一篇**中(http://blog.21ic.com/user1/1505/archives/2008/53035.html)也说明了.
 3,IsGB变量判断,我没有找到好办法.我的办法是如果计算出来的行数或列出出现负值的话,则IsGB=false.并且使用 *ostr16++ = (unsigned short)ch;进行处理.
 
 代码如下:
 case MWTF_UC16:
 
 if(IsGB)
 {
 unsigned char row,col;
 int t_row,t_col;
 row = ch >> 8 ;
 col = ch & 0x00ff;
 t_row=row-0xA0-16;
 t_col=col-0xA0;
 
 if(t_row<1 || t_col<1)
 {
 printf("[devfont.c]error row:%d , col:%d\n", t_row,t_col);
 if(t_row<1)
 {
 t_row=0;
 }
 if(t_col<1)
 {
 t_col=0;
 }
 IsGB=0;
 
 }
 
 if(IsGB)
 {
 *ostr16++ = Unicode[t_row][t_col];
 }
 
 }
 
 if(!IsGB)
 {
 *ostr16++ = (unsigned short)ch;
 }
 
 break;
 
 =========================
 经过以上修补和处理后,能正确显示simhei.ttf的字体,并且也能显示数字和字母.
 | 
 |