freetype应用范例

原创 2015年11月20日 13:27:37
//-------------------------------------------------------------------------------------
void LoadTextBitmap(RGN_HANDLE Handle, BITMAP_S *pstBitmap, int size, unsigned short* incode, int len)
{
	FT_Library		pFTLib               =NULL;
	FT_Face         pFTFace           = NULL;

	FT_Glyph		glyph;
	FT_UInt			glyph_index;
	FT_Error		error = 0;

	int i = 0;
	
	len /= 2;
	if (len < 1)
		return;
	
	error = FT_Init_FreeType(&pFTLib);
	if(error){
		return;
	}

	error = FT_New_Face(pFTLib, "./simsun.ttf", 0, &pFTFace);
	if(error){
		return;
	}

	if(0 !=FT_Set_Char_Size(pFTFace, 0, size<<6, 300, 300)){
		return;
	}

	FT_Bitmap *bitmap = malloc(sizeof(FT_Bitmap)*len);
	FT_BitmapGlyph bitmap_glyph;
	int totalSize = 0;
	int totalWidth = 0;
	for (i=0; i<len; i++){
		glyph_index =FT_Get_Char_Index(pFTFace, incode[i]);
		FT_Load_Glyph(pFTFace, glyph_index, FT_LOAD_DEFAULT);

		error =FT_Get_Glyph(pFTFace->glyph, &glyph);
		if (error){
			return;
		}

		FT_Glyph_To_Bitmap(&glyph, FT_RENDER_MODE_NORMAL, 0, 0);

		bitmap_glyph = (FT_BitmapGlyph)glyph;
		bitmap[i] = bitmap_glyph->bitmap;
		totalSize += bitmap[i].width * bitmap[i].rows;
		totalWidth += (bitmap[i].width);

		int w = bitmap[i].width;
		int h = bitmap[i].rows;
		int j,k;
		for (k=0; k<h; k++){
		   for (j=0; j<w; j++){
				if((bitmap[i].buffer[k * w  + j]) == 0 ){
					printf("0");
				}else{
					printf("1");
				}
			}
			printf("\n");
		}		
	}
	
	pstBitmap->pData = calloc(1, totalSize*2);
	if (NULL == pstBitmap->pData){
		return;
	}
	pstBitmap->enPixelFormat = PIXEL_FORMAT_RGB_1555;
	pstBitmap->u32Width = totalWidth;
	pstBitmap->u32Height = bitmap[0].rows;

	int j,k;

	unsigned short *pDst = pstBitmap->pData;
	char *pSrc;
	int h = bitmap[0].rows;
	int off_j = 0;
	for (k=0; k<h; k++){		
		off_j=0;
		for (i=0; i<len; i++){			
			int w = bitmap[i].width; 
			for (j=0; j<w; j++){
				if((bitmap[i].buffer[k * w	+ j]) == 0 ){
					printf("0");
					pDst[k*totalWidth+off_j+j] = 0;
				}else{
					pDst[k*totalWidth+off_j+j] = 0xEFFF;
					printf("1");
				}
			}
			off_j += w;
		}
		printf("\n");
	}		
	free(pstBitmap->pData);
	free(bitmap);
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

FreeType简介及在vs2010的编译使用

FreeType简介及在vs2010的编译使用!
  • fengbingchun
  • fengbingchun
  • 2015年03月29日 14:49
  • 4739

freetype2.6.3(已编译好freetype.a)

  • 2016年05月14日 11:52
  • 2.74MB
  • 下载

FreeType字体引擎最新版

  • 2013年12月26日 16:23
  • 7.54MB
  • 下载

利用FreeType在图片上生成中文字幕

  • 2014年11月15日 21:36
  • 13.3MB
  • 下载

利用freetype显示中文字符

#include #include #include #include #include #include #include #include #include #...
  • wudebao5220150
  • wudebao5220150
  • 2014年09月15日 22:28
  • 4481

文本处理以及freetype的使用

1. 字符编码 编码 解释 GBK(国标扩展码) 英文字符用一个字节进行表示,值小于等于 127。汉字用两个字节进行表示,对应的区位码由国家标准指定 UTF-8 变长编码,中文文...
  • u013904227
  • u013904227
  • 2016年08月03日 16:13
  • 1772

FreeType2使用总结

一、FreeType2简介 1. 是一个免费、开源、可移植且高质量的字体引擎; 2. 支持多种字体格式文件,并提供了统一的访问接口; 3. 支持单色位图、反走样位图渲染,这使字体显示质量达到Ma...
  • finewind
  • finewind
  • 2014年07月26日 10:58
  • 14175

利用freetype显示中文字符

#include #include #include #include #include #include #include #include #include #...
  • wudebao5220150
  • wudebao5220150
  • 2014年09月15日 22:28
  • 4481

freetype渲染字体范例

freetype初始化如下:     if (mFTFace == 0 )     {         if (FT_Init_FreeType( &mFTLibrary ))        ...
  • hgl868
  • hgl868
  • 2012年04月10日 11:07
  • 4890

freetype2范例

  • 2012年10月15日 21:41
  • 10.69MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:freetype应用范例
举报原因:
原因补充:

(最多只允许输入30个字)