为了在嵌入式系统实现矢量中文显示,我先在PC机上实现失量字库中文显示,在此基础上将其移植到嵌入式系统中。该方法是利用VC++开发工具,将freetype库函数移植到VC环境中进行开发。
在建立的工程中加入*.lib文件,以及头文件。
#include <stdio.h>
#include <ft2build.h>
//#include FT_FREETYPE_H
#include <freetype\freetype.h>
#include <freetype\ftglyph.h>
简单地创建一个FT_Library类型的变量,例如library,然后象下面那样调用函数FT_Init_FreeType:
FT_Library pFTLib = NULL;
// Init FreeType Lib to manage memory
error = FT_Init_FreeType( & pFTLib);
if (error)
{
pFTLib = 0 ;
printf( " There is some error when Init Library " );
return - 1 ;
}
FT_Face pFTFace = NULL;
// create font face from font file
error = FT_New_Face(pFTLib, "C:\\WINDOWS\\Fonts\\arialuni.ttf",0,& pFTFace);
当一个新的face对象建立时,所有成员都在初始化阶段0设为0。调用FT_Set_Char_Size对这个结构进行赋值。这里有一个例子,它在一个300x300dpi设备上把字符大小设置为16pt。
error = FT_Set_Char_Size( face,
0,
16*64,
300,
300 );
FT_Set_Char_Size(pFTFace, 16 << 6 , 16 << 6 , 300 , 300 );
1、从字符码检索字形索引
glyph_index = FT_Get_Char_Index( pFTFace, ucode[n] );
2、从face中装载字形
error = FT_Load_Glyph( pFTFace, glyph_index, FT_LOAD_DEFAULT );
error = FT_Get_Glyph(pFTFace -> glyph, & glyph);
3、得到字形位图
FT_Glyph_To_Bitmap( & glyph, ft_render_mode_normal, 0 , 1 );