用TRUETYPE技术显示汉字

我知道有一个FREETYPE库可以把TRUETYPE字库渲染成点阵字。但是请注意TRUETYPE技术中包含了多项Apple公司的技术专利(主要是解释其HINT码),目前FREETYPE项目负责人已经收到Apple公司的通知,要求其申请Apple的专利许可,目前正在谈判之中。

想要避开专利问题,只好不用HINT,但是这样一来显示效果极差。

其实如果只是在Windows下(不管中文还是E文),只要先把中文转换成UNICODE串(MultiByteToWideChar?),再用TextOutW函数输出即可。

不管是95还是NT都支持这些函数,只要已经装有相应的字体即可。没有必要去自己解释TRUETYPE。

灰衣老僧: 是吗?专利问题有公司考虑! 

问题是转换为Unicode在英文下输出我没成功! 

以前是高手: 怎么能用CP_OEMCP呢? 

当然要填936了。

要显式地使用TextOutW(),不能用dc.TextOut(),因为程序还是按非UNICODE方式编译的。

wchar_t wstr[500];

int n=MultiByteToWideChar(936, MB_PRECOMPOSED,

str, -1, wstr, 500);

TextOutW(pDC->m_hDC, x, y, wstr);

系统必须装有936代码页。怎么装?把cp_936.nls(VC++中有的)COPY到windows\system下,再在注册表的

\HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\Nls\Codepage中,加上936 = "cp_936.nls"

\HKEY_LOCAL_MACHINE_System\CurrentControlSet\control\Nls\Locale中,加上00000804 = "Chinese(PRC)"

灰衣老僧: 太棒了!成功了!等你回国,老僧一定请你喝酒!

Code:

BOOL bResult = m_Font.CreateFont(-16,0,0,0,400,0,0,0,134,3,2,1,50,"SimSun");
   char *pText = "Test汉字显示测试Test";
   wchar_t wBuffer[256];
   int nLength = MultiByteToWideChar(936, MB_PRECOMPOSED, pText, -1, wBuffer, 256);
   CDC *pDC = GetDC();
   CFont *pFontTemp = (CFont *)pDC->SelectObject(&m_Font);
   TextOutW(pDC->m_hDC, 80, 80, wBuffer, nLength - 1);
   pDC->SelectObject(pFontTemp);
   ReleaseDC(pDC);

时间: 2025-01-30 11:15:39

用TRUETYPE技术显示汉字的相关文章

Java 编程技术中汉字问题的分析及解决(转)

编程|汉字|解决|问题 Java 编程技术中汉字问题的分析及解决 段明辉自由撰稿人2000 年 11月 8日内容: 汉字编码的常识 Java 中文问题的初步认识 Java 中文问题的表层分析及处理 Java 中文问题的根源分析及解决 Java Servlet 中文问题的根源 修改 Servlet.jar 中文乱码的处理函数 参考资料 作者简介在基于 Java 语言的编程中,我们经常碰到汉字的处理及显示的问题.一大堆看不懂的乱码肯定不是我们愿意看到的显示效果,怎样才能够让那些汉字正确显示呢?Jav

FVWM上显示汉字的心得

汉字|显示|心得 按照网上的各种心得,始终不能显示汉字. 然后,研究了FVWM中script的写法,再研究了 FONT的定义,得到方法如下: 1.找到你的机子上的汉字名称,使用以下命令: xlsfonts |grep 2312 列出了一堆名称 2.只能选择其中的16或24点阵字体,不要选择 truetype,  因为我选择过 truetype 不行,选择 GBK 或 GB18030 编码的也不行.  这点是最重要的. 3.然后修改 ~/.fvwm/.fvwm2rc ,加入: MenuStyle

Java 编程技术中汉字问题的分析及解决(转自IBM)

编程|汉字|解决|问题 Java 编程技术中汉字问题的分析及解决 段明辉自由撰稿人2000 年 11月 8日 在基于 Java 语言的编程中,我们经常碰到汉字的处理及显示的问题.一大堆看不懂的乱码肯定不是我们愿意看到的显示效果,怎样才能够让那些汉字正确显示呢?Java 语言默认的编码方式是UNICODE ,而我们中国人通常使用的文件和数据库都是基于 GB2312 或者 BIG5 等方式编码的,怎样才能够恰当地选择汉字编码方式并正确地处理汉字的编码呢?本文将从汉字编码的常识入手,结合 Java 编

在.Net Micro Framework中显示汉字

摘要:MF平台支持的字体是专有格式,扩展名为tinyfnt,需要用专门的转化工具才能把windows平台上 的字体转换为tinyfnt字体.在.Net Micro Framework SDK中提供了一个叫做TFConvert.exe的工具,我们 可以用它在命令行下将PC机上的TrueType或者OpenType字体文件生成tinyfnt字体,供.Net Micro Framework的应用程序使用.使用TFconvert 工具进行字体转化,首先需要创建一个.fntdef 的文件其是 字体的定义文

在PHP的图形函数中显示汉字

函数|汉字|图形|显示 如何在PHP图形函数中显示汉字,大家已经问了很久了,但一直没有结果.终于在参考另一篇文章后,我试验出来了! 方法: 首先,决定要显示哪些汉字,如"计数器"这三个字. 到Word2000(97不知可不可以)中去,输入这三个字,另存为,选择编码格式,然后再在右边的编码类型里选择unicode utf-8,记住不要选错了.存成一个编码格式的文本文件,比如说文件名叫test.txt. 用一个16进制的编辑器打开这个文件,这时你会看到,里面有一堆16进制字符,一个汉字占三

如何PHP的图形函数中显示汉字。

函数|汉字|图形|显示 <?php/****************************** 如何在PHP图形函数中显示汉字,大家已经问了很久了,但一直没有结果.终于在参考另一篇文章后,我试验出来了!方法: 首先,决定要显示哪些汉字,如"计数器"这三个字. 到Word2000(97不知可不可以)中去,输入这三个字,另存为,选择编码格式,然后再在右边的编码类型里选择unicode utf-8,记住不要选错了.存成一个编码格式的文本文件,比如说文件名叫test.txt. 用一个1

让windows系统时间区里面显示汉字

这是一个比较冷门的功能,就是让windows系统时间区里面显示汉字(可以是任何汉字 ).对于有些人有用,有些人没用.这边我们就来分享下吧.先给你最终效果图,如果有用你再弄. 1 看了最终效果图,如果感觉有用的话就继续看,如果感觉没什么用的话,可以看看本系统之家的其他文章.都是原创的哦. 2 进入到区域与语言,方法很简单基本上你在控制面板里面找下就找到了. 将"长时间"后的下拉选项"H:mm:ss"更改为"tt h:mm:ss",基本上是更改为这个

MFC中, win764位的代码在控件上面显示汉字没问题, 但是到了win732系统显示汉字为乱码

问题描述 MFC中, win764位的代码在控件上面显示汉字没问题, 但是到了win732系统显示汉字为乱码 MFC中, win764位的代码在控件上面显示汉字没问题, 但是到了win732系统显示汉字为乱码, 解决方案 的代码在控件上面显示汉字没问题, 但是到了win732系统显示汉字为 解决方案二: 乱码是编码的问题,为什么还和系统有关系呢?来点运行截图 解决方案三: 不知道你用的什么版本的vs,建议查一下代码里面是不是有硬编码,因为32位系统里很多数据类型占的字节数都是不一样的. 解决方案

vs201-请问BCGControlBar建立的程序如何显示 汉字

问题描述 请问BCGControlBar建立的程序如何显示 汉字 BCGControlBar 建立的对话框如何才能显示出汉字,网上很多介绍,但试了都没有用,希望大家有谁懂的给我知道指导,VS2013中建立的BCGControlBar 应用程序,谢谢!