用TRUETYPE技术显示汉字

2016-02-19 15:30 15 1 收藏

今天图老师小编要向大家分享个用TRUETYPE技术显示汉字教程,过程简单易学,相信聪明的你一定能轻松get!

【 tulaoshi.com - 编程语言 】

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

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

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

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

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  当然要填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到windowssystem下,再在注册表的

  HKEY_LOCAL_MACHINESystemCurrentControlSetcontrolNlsCodepage中,加上936 = "cp_936.nls"

  HKEY_LOCAL_MACHINE_SystemCurrentControlSetcontrolNlsLocale中,加上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);

来源:http://www.tulaoshi.com/n/20160219/1609798.html

延伸阅读
用汉字勾勒四季节气的美艳图腾 - 字体设计欣赏 用汉字勾勒四季节气的美艳图腾 - 字体设计欣赏(2) 用汉字勾勒四季节气的美艳图腾 - 字体设计欣赏(3)
标签: ASP
  <% Set d = CreateObject("Scripting.Dictionary") d.add "a",-20319 d.add "ai",-20317 d.add "an",-20304 d.add "ang",-20295 d.add "ao",-20292 d.add "ba",-20283 d.add "bai",-20265 d.add "ban",-20257 d.add "bang",-20242 d.add "bao",-20230 d.add "bei",-20051 d.add "ben",-20036 d.add "beng",-20032 d.add "bi",-20026...
在基于 Java 语言的编程中,我们经常碰到汉字的处理及显示的问题。一大堆看不懂的乱码肯定不是我们愿意看到的显示效果,怎样才能够让那些汉字正确显示呢?Java语言默认的编码方式是UNICODE,而我们中国人通常使用的文件和数据库都是基于GB2312或者BIG5等方式编码的,怎样才能够恰当地选择汉字编码方式并正确地处理汉字的编码呢?本文将从汉字编...
标签: Web开发
你可以用JavaScript显示XML。可以用JavaScript (或 VBScript)从一个XML文件中输入数据并在一个HTML页面内显示XML数据。 要看看XML和HTML是如何相互补充的,可以这样做:首先找到XML 文档(note.xml),然后打开HTML文档   (note.htm),这个HTML文档中包含了阅读XML文件的JavaScript,并在HTML页面预先定义的范围内显示信息。  &...
标签: Web开发
你可以用XSL向XML文档中增加显示信息。         用XSL显示XML        XSL是XML首选的格式表语言。 XSL (可扩展的格式表语言) 比CSS要复杂得多。使用XSL 的一种方法是在它被浏览器显示之前,将XML转换成HTML,就象下面例子:       点击这里可...

经验教程

886

收藏

100
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部