打印

nanoX(MicroWindows)矢量字体显示,中文显示

[复制链接]
2168|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wzwxiaozheng|  楼主 | 2011-7-16 14:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原文请看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的字体,并且也能显示数字和字母.

相关帖子

沙发
yangliu8623| | 2013-4-22 20:32 | 只看该作者
变量IsGB 和Unicode是从什么地方来的啊

使用特权

评论回复
板凳
mxh0506| | 2013-4-23 23:47 | 只看该作者
yangliu8623 发表于 2013-4-22 20:32
变量IsGB 和Unicode是从什么地方来的啊

老贴子被挖出来啦。IsGB是判断输入字符是否是汉字的布尔型变量,之前已经把判断的结果保存在这个变量里。Unicode是一个转换编码用的查找表。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

4

帖子

1

粉丝