Freetype2 DEMO部分源码

本文提供Freetype2初始化、字体信息获取、设置参数、获取glyph及图像渲染的关键源码,帮助读者深入理解Freetype2库的使用。包括FT_Library、FT_Face的创建,字体大小设置,以及处理斜体、加粗等效果。
摘要由CSDN通过智能技术生成

最近很多TX给我发邮件要Freetype2 Demo的源代码。

我在之前的博客中说过在开源IndieLib论坛上我已经发布了VJGUI,那里包含了所有freetype2 Demo的核心代码。但是最近我已打算离开那个项目了,因为做引擎核心的创始人很久没有露面和更新了。

所以我打算写一篇文章说说那些代码。原来的那个Demo(这里 )是仓促写的,代码比较难看,所以我会稍作整理,将一些最有用的核心代码贴出来与大家分享

(未完待续)......

 

2009年7月11日继续

下面贴出关键源代码:(本来想上传整个Demo,后来发现写得太丑了,真不好意思拿出手)

1. 初始化FT lib

 FT_Library  library;   /* handle to library     */
 FT_Face     face;      /* handle to face object */

 // 1. Init the library
 if ( FT_Init_FreeType( &library ) )
 {
  MessageBox(_T("Init freetype library failed."), _T("Error"), MB_OK | MB_ICONERROR);
  FT_Done_FreeType(library);
  return;
 }

 

int nface = 0;
 //nface = 1;

//pathstring是TTF文件的路径
 FT_Error error = FT_New_Face(
      library,
      pathstring,
      nface,
      &face );
 
 if ( error == FT_Err_Unknown_File_Format )
 {
  MessageBox(_T("Font format not supported."), _T("Error"), MB_OK | MB_ICONERROR);
  FT_Done_FreeType(library);
  return;
 }
 else if ( error )
 {
  MessageBox(_T("Font face open failed."), _T("Error"), MB_OK | MB_ICONERROR);
  FT_Done_FreeType(library);
  return;
 }

 

2. 获取font face信息

AddMessage(_T("Face information:"));

//glyph数量
 sMessage.Format(_T("      Totally %d glyphs."), face->num_glyphs);
 AddMessage(sMessage);

//每EM unit数量
 sMessage.Format(_T("      %d uints per EM."), face->units_per_EM);
 AddMessage(sMessage);

//char map数量
 sMessage.Format(_T("      %d char maps."), face->num_charmaps);
 AddMessage(sMessage);

//fix size

//这个对于汉字很重要,fix size对于小字体显示很有帮助
 sMessage.Format(_T("      %d fixed sizes:"), face->num_fixed_sizes);
 if(face-

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 29
    评论
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值