FreeType2使用指南

简介: FreeType2使用指南
void main(){
    FT_Library _FTlibrary;
    FT_Init_FreeType(&_FTlibrary);
    FT_New_Face(this->getFTLibrary(), filePath, 0, &face);// 加载字体
    FT_Face face;
    FT_Set_Char_Size(face, 0, 16 * 64, 300, 300);    // 设置字符大小
    FT_Error error;
    FT_UInt index = FT_Get_Char_Index(face, 'A'); // 获取字符的索引
    error = FT_Load_Glyph(face, index, FT_LOAD_DEFAULT); // 渲染字符位图
    FT_Render_Glyph(face->glyph, FT_RENDER_MODE_NORMAL);
    FT_Bitmap bitmap = face->glyph->bitmap; // 渲染结果存储在bitmap中
    int width = bitmap.width;
    int height = bitmap.rows;
    unsigned char* buffer = bitmap.buffer; // need delete
    FT_Done_FreeType(&_FTlibrary);
}


FT_Init_FreeType: 函数对库进行初始化


FT_Init_FreeType 函数的原型如下:


FT_Error FT_Init_FreeType(FT_Library* alibrary);


alibrary 参数是一个指向 FT_Library 结构体指针的指针,用于存储初始化后的库对象。


如果初始化成功,则返回值为 FT_Err_Ok,否则返回相应的错误代码。


FT_New_Face:  函数创建字体对象


FT_New_Face 函数的原型如下:


FT_Error FT_New_Face(
    FT_Library library, 
    const char* filepathname, 
    FT_Long face_index, 
    FT_Face* aface
);


  • library 参数是一个已初始化的库对象;


  • filepathname 是包含字体文件路径和名称的 C 字符串;


  • face_index 是字体库中要加载的字体索引(通常为 0);


  • aface 是一个指向 FT_Face 结构体指针的指针,用于存储创建后的字体对象。


如果初始化成功,则返回值为 FT_Err_Ok,否则返回相应的错误代码。


调用 FT_New_Face 函数后,可以通过访问 FT_Face 结构体中的字段来获取字体信息和相关数据,例如字体名称、字符映射表、字形轮廓等。具体操作方法需要结合相应的文档和示例代码。


FT_Set_Char_Size: 设置字符大小


FT_Set_Char_Size 函数的原型如下:


FT_Error FT_Set_Char_Size(
    FT_Face face, 
    FT_F26Dot6 char_width, 
    FT_F26Dot6 char_height, 
    FT_UInt horz_resolution, 
    FT_UInt vert_resolution
);


  • face 参数是一个已创建的字体对象;


  • char_width 和 char_height 分别表示字符宽度和字符高度,单位是 1/64 像素;


  • horz_resolution 和 vert_resolution 分别表示水平和垂直分辨率,单位是点(1/72 英寸)。


如果设置成功,则返回值为 FT_Err_Ok,否则返回相应的错误代码。


调用 FT_Set_Char_Size 函数后,可以通过 FT_Load_Char 函数加载并渲染指定字符的字形轮廓。


FT_Get_Char_Index: 获取指定字符的索引值


FT_Get_Char_Index 函数的原型如下:


c++Copy Code
FT_UInt FT_Get_Char_Index(FT_Face face, FT_ULong charcode);


  • face 参数是一个已创建的字体对象;


  • charcode 参数是要获取索引值的字符编码。


如果指定字符存在于字体中,则返回该字符的索引值,否则返回 0。


通过 FT_Get_Char_Index 函数获取字符索引后,可以使用 FT_Load_Glyph 加载指定索引对应的字形轮廓并进行渲染。需要注意的是,字符编码和索引值是不同的概念,在使用 FreeType 库进行字形渲染时应当区分开来。


FT_Bitmap


  • rows:位图的行数;


  • width:位图的列数;


  • pitch:位图每行占用的字节数;


  • buffer:指向位图数据的指针;


  • num_grays:灰度级别数;


  • pixel_mode:像素模式(如单通道灰度模式、RGB 模式、BGR 模式等);


  • palette_mode:调色板模式。


目录
相关文章
|
6月前
|
Linux
linux 交叉编译libpng,libjpeg库
linux 交叉编译libpng,libjpeg库
109 1
|
1月前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
141 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
1月前
|
Ubuntu Linux C语言
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0
本文介绍了在Ubuntu 18.04系统上编译安装OpenCV 3.4.0及其扩展包opencv_contrib 3.4.0的详细步骤,包括下载源码、安装依赖、配置CMake和编译安装,以及常见问题的解决方法。
86 1
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0
|
Ubuntu 算法 Linux
移植Zlib,Libpng,FreeType详细步骤
移植Zlib,Libpng,FreeType详细步骤
530 0
|
Ubuntu
【经验分享】zlib库在Ubuntu下的安装和配置
【经验分享】zlib库在Ubuntu下的安装和配置
1030 0
|
Linux
freetype库的移植
freetype库的移植
351 0
|
算法 计算机视觉
jpeglib使用指南
您可以到http://www.ijg.org/网站下载libjpeg的源码, IJG JPEG Library就是jpeg压缩库,是以源码的形式提供给软件开发人员的,当然在软件包里也有编译好的库文件,我们这里就只用到其中的libjpeg.lib,jconfig.h,jmorecfg.h,jpeglib.h这几个文件,下面我就介绍一下怎样在自己的程序里嵌入图像压缩功能。
1457 0
|
Ubuntu 编译器 C语言
zlib开发笔记(三):zlib库介绍、在ubuntu上进行arm平台交叉编译
zlib开发笔记(三):zlib库介绍、在ubuntu上进行arm平台交叉编译
zlib开发笔记(三):zlib库介绍、在ubuntu上进行arm平台交叉编译
|
Ubuntu Windows
zlib开发笔记(二):zlib库介绍、ubuntu平台编译和工程模板
zlib开发笔记(二):zlib库介绍、ubuntu平台编译和工程模板
zlib开发笔记(二):zlib库介绍、ubuntu平台编译和工程模板
|
Apache
ImageMagick
ImageMagick
317 0