【渲染引擎】agg字体介绍
2016-06-28 13:59
661 查看
agg字体可以使用第三方字体库,比如Freetype或者window下的字体。当你选择使用某种字体的时候,就必须把相应字体的头文件包含进去。
这俩个文件其实是提供了一个接口给agg,封装了具体字体库的实现。这样就屏蔽了具体的字体库的不同。这里只介绍如何使用freetype。freetype是一个字体库,现在freetype已经是freetype2了。
agg在绘制字体的时候有2种方式,一种是在渲染层(Scanline Rasterizer),一种是在顶点层。agg的具体层次划分在上一篇文章agg介绍中已有说明。在这里不在展开。
在使用字体的时候需要首先加载初始化字体。freetype提供了load_font方法,用以字体引擎加载具体的字体。
可以看出该方法主要接受三个参数,font_name字体名,选择哪个字体face_index,包装类型ren_type。
对于face_index来说,一个字体文件里可能有多种字体样式,其实就是字体外观。像‘Times New Roman Regular’和‘Times New Roman Italic’就是俩种不同的字体样式。face_index就是告诉引擎具体采用哪一种样式。一般都设置为0。
对于ren_type来说,其类型为glyph_rendering,是一个枚举类型属于agg库的一部分。其定义在agg_font_cache_manager.h头文件中,共有五个属性值:
该参数主要是告诉字体引擎字体的包装形式,相应的在freetype里也有相应的参数与其对应,在上面的注释中也分别说明了如何和freetype中的类型进行对应的。
对于绘制字体的时候,有俩个字体大小一个就是你给定的字体大小,另外一个就是绘制的时候真是字体大小。这个很好理解,比如对于“我”和“1”俩个字体占据的字体宽度肯定不同,所以在绘制字体的时候有个获取真是字体宽度的流程。
#include <agg_font_win32_tt.h> //for window #include <agg_font_freetype.h> //for freetype
这俩个文件其实是提供了一个接口给agg,封装了具体字体库的实现。这样就屏蔽了具体的字体库的不同。这里只介绍如何使用freetype。freetype是一个字体库,现在freetype已经是freetype2了。
agg在绘制字体的时候有2种方式,一种是在渲染层(Scanline Rasterizer),一种是在顶点层。agg的具体层次划分在上一篇文章agg介绍中已有说明。在这里不在展开。
在使用字体的时候需要首先加载初始化字体。freetype提供了load_font方法,用以字体引擎加载具体的字体。
bool load_font(const char* font_name,unsigned face_index, glyph_rendering ren_type,const char* font_mem = 0, const long font_mem_size = 0);
可以看出该方法主要接受三个参数,font_name字体名,选择哪个字体face_index,包装类型ren_type。
对于face_index来说,一个字体文件里可能有多种字体样式,其实就是字体外观。像‘Times New Roman Regular’和‘Times New Roman Italic’就是俩种不同的字体样式。face_index就是告诉引擎具体采用哪一种样式。一般都设置为0。
对于ren_type来说,其类型为glyph_rendering,是一个枚举类型属于agg库的一部分。其定义在agg_font_cache_manager.h头文件中,共有五个属性值:
enum agg::glyph_rendering{ glyph_ren_native_mono, //对应mono_adaptor_type glyph_ren_native_gray8, //对应gray8_adaptor_type glyph_ren_outline, //对应path_adaptor_type glyph_ren_agg_mono, //对应mono_adaptor_type glyph_ren_agg_gray8 //对应gray8_adaptor_type };
该参数主要是告诉字体引擎字体的包装形式,相应的在freetype里也有相应的参数与其对应,在上面的注释中也分别说明了如何和freetype中的类型进行对应的。
对于绘制字体的时候,有俩个字体大小一个就是你给定的字体大小,另外一个就是绘制的时候真是字体大小。这个很好理解,比如对于“我”和“1”俩个字体占据的字体宽度肯定不同,所以在绘制字体的时候有个获取真是字体宽度的流程。
相关文章推荐
- freetype 使用小结
- 文字显示 第一步 -- 简易的字形装载
- 在centOS上离安装Python2.7以及numpy,scipy,matplot,sklearn等
- GROUPING SETS、ROLLUP、CUBE
- Linux的freetype矢量字体库安装
- freetype-2.4.10.tar.bz2的使用
- CImg应用-FreeType下载与安装(CentOS 6.5)
- FreeType的使用
- MSYS2中编译DBUS、freetype、fontconfig、harfbuzz的笔记
- Ubuntu下交叉编译zlib,libpng,freetype
- rethat6.5下安装freetype2.6
- AGG svg_viewer实现了渐变色渲染
- 闲话js前端框架(5)——再看自己一年前设计的微型渲染引擎
- freetype官网例子1
- centOS下matplotlib安装问题
- 在linux下搭建OpenCASCADE开发环境(freetype,freeimage,ftgl,qt...)
- 使用FreeType实现矢量字体的粗体、斜体、描边、阴影效果(转载)
- FreeType的灰度图
- vs2008编译freetype
- 字体渲染 渲染引擎