- 论坛徽章:
- 0
|
getbitmap.c[color="#b0c4de"]#include [color="#ffa07a"]
[color="#b0c4de"]#include FT_FREETYPE_H
[color="#98fb98"]int [color="#87cefa"]main([color="#98fb98"]int [color="#eedd82"]argc, [color="#98fb98"]char **[color="#eedd82"]argv){
[color="#98fb98"]int [color="#eedd82"]psize;
[color="#98fb98"]FT_Library [color="#eedd82"]library;
[color="#98fb98"]FT_Face [color="#eedd82"]face;
[color="#98fb98"]unsigned [color="#98fb98"]int [color="#eedd82"]ucode;
[color="#98fb98"]FT_UInt [color="#eedd82"]glyph_index;
[color="#98fb98"]int [color="#eedd82"]row, [color="#eedd82"]pixel;
[color="#00ffff"]if(argc != 4){
[color="#00ffff"]return 10;
}
ucode = strtol(argv[2], [color="#7fffd4"]NULL, 16);
psize = strtol(argv[3], [color="#7fffd4"]NULL, 10);
printf([color="#ffa07a"]"unicode +%X size %d\n", ucode, psize);
[color="#00ffff"]if(FT_Init_FreeType(&library)
|| FT_New_Face(library,
argv[1],
0,
&face)
|| FT_Set_Pixel_Sizes(face,
psize,
0)){
[color="#00ffff"]return 1;
}
glyph_index = FT_Get_Char_Index(face, ucode);
[color="#00ffff"]if(glyph_index == 0){
[color="#00ffff"]return 2;
}
[color="#00ffff"]if(FT_Load_Glyph(face,
glyph_index,
FT_LOAD_DEFAULT)){
[color="#00ffff"]return 3;
}
[color="#00ffff"]if(FT_Render_Glyph(face->glyph,
FT_RENDER_MODE_MONO)){
[color="#00ffff"]return 4;
}
printf([color="#ffa07a"]"bitmap_left=%d\n"
[color="#ffa07a"]"bitmap_top=%d\n"
[color="#ffa07a"]"bitmap.rows=%d\n"
[color="#ffa07a"]"bitmap.width=%d\n"
[color="#ffa07a"]"bitmap.pitch=%d\n"
[color="#ffa07a"]"bitmap.pixel_mode=%d\n",
face->glyph->bitmap_left,
face->glyph->bitmap_top,
face->glyph->bitmap.rows,
face->glyph->bitmap.width,
face->glyph->bitmap.pitch,
face->glyph->bitmap.pixel_mode);
printf([color="#ffa07a"]"\n\n");
[color="#00ffff"]for(row = 0;
row glyph->bitmap.rows - face->glyph->bitmap_top);
++row){
[color="#00ffff"]for(pixel = 0; pixel glyph->bitmap.width; ++pixel){
printf([color="#ffa07a"]"_");
}
printf([color="#ffa07a"]"\n");
}
[color="#00ffff"]for(row = 0; row glyph->bitmap.rows; ++row){
[color="#00ffff"]for(pixel = 0; pixel glyph->bitmap_left; ++pixel)
printf([color="#ffa07a"]"_");
[color="#00ffff"]for(pixel = 0; pixel glyph->bitmap.width; ++pixel){
printf([color="#ffa07a"]"%c", (face->glyph->bitmap.buffer
[row * face->glyph->bitmap.pitch +
pixel/8] & (0xC0 >> (pixel % 8)))?[color="#ffa07a"]'O':[color="#ffa07a"]'_');
}
printf([color="#ffa07a"]"\n");
}
[color="#00ffff"]return 0;
}
Makefile
[color="#87cefa"]all : getbitmap
[color="#87cefa"]getbitmap.o : getbitmap.c
gcc $([color="#eedd82"]CXXFLAGS) -c [color="#ffa07a"]`pkg-config freetype2 --cflags` $[color="#7fffd4"]
运行效果:
[color="#00cdcd"]hellwolf[color="#000000"]@[color="#cd00cd"]cocteau[color="#000000"]#[color="#cd0000"]pts/1[color="#000000"]%[color="#cdcd00"]J0S2[color="#000000"]:[color="#0000ee"]getbitmap[color="#cd0000"]$ ./getbitmap /usr/share/fonts/chinese/True[color="#f5deb3"]
Type/uming.ttf $(mygetunicode 永) 12[color="#f5deb3"]
unicode +6C38 size 12[color="#f5deb3"]
bitmap_left=0[color="#f5deb3"]
bitmap_top=10[color="#f5deb3"]
bitmap.rows=11[color="#f5deb3"]
bitmap.width=11[color="#f5deb3"]
bitmap.pitch=2[color="#f5deb3"]
bitmap.pixel_mode=1[color="#f5deb3"]
___________[color="#f5deb3"]
____OOO____[color="#f5deb3"]
______OO___[color="#f5deb3"]
__OOOOO____[color="#f5deb3"]
_____OO_OO_[color="#f5deb3"]
OOOOOOO_O__[color="#f5deb3"]
___OOOOO___[color="#f5deb3"]
___OOOOO___[color="#f5deb3"]
__OO_OO_O__[color="#f5deb3"]
_OOOOOO_OO_[color="#f5deb3"]
OO__OOO_OOO[color="#f5deb3"]
O___OO___OO[color="#f5deb3"]
[color="#00cdcd"]hellwolf[color="#000000"]@[color="#cd00cd"]cocteau[color="#000000"]#[color="#cd0000"]pts/1[color="#000000"]%[color="#cdcd00"]J0S2[color="#000000"]:[color="#0000ee"]getbitmap[color="#cd0000"]$ ./getbitmap /usr/share/fonts/chinese/True[color="#f5deb3"]
Type/uming.ttf $(mygetunicode 永) 16[color="#f5deb3"]
unicode +6C38 size 16[color="#f5deb3"]
bitmap_left=1[color="#f5deb3"]
bitmap_top=14[color="#f5deb3"]
bitmap.rows=15[color="#f5deb3"]
bitmap.width=14[color="#f5deb3"]
bitmap.pitch=2[color="#f5deb3"]
bitmap.pixel_mode=1[color="#f5deb3"]
______________[color="#f5deb3"]
_____OO________[color="#f5deb3"]
______OOO______[color="#f5deb3"]
_______OO______[color="#f5deb3"]
_______________[color="#f5deb3"]
__OOOOOOO__OOO_[color="#f5deb3"]
_______OO__OO__[color="#f5deb3"]
____OO_OO_OO___[color="#f5deb3"]
_OOOOOOOOOO____[color="#f5deb3"]
____OO_OOO_____[color="#f5deb3"]
___OO__OOOO____[color="#f5deb3"]
___OO__OOOO____[color="#f5deb3"]
__OO___OO_OO___[color="#f5deb3"]
_OO_OO_OO__OOO_[color="#f5deb3"]
_O___OOOO___OOO[color="#f5deb3"]
______OO_____OO[color="#f5deb3"]
[color="#00cdcd"]hellwolf[color="#000000"]@[color="#cd00cd"]cocteau[color="#000000"]#[color="#cd0000"]pts/1[color="#000000"]%[color="#cdcd00"]J0S2[color="#000000"]:[color="#0000ee"]getbitmap[color="#cd0000"]$ ./getbitmap /usr/share/fonts/chinese/True[color="#f5deb3"]
Type/uming.ttf $(mygetunicode 永) 20[color="#f5deb3"]
unicode +6C38 size 20[color="#f5deb3"]
bitmap_left=0[color="#f5deb3"]
bitmap_top=18[color="#f5deb3"]
bitmap.rows=20[color="#f5deb3"]
bitmap.width=20[color="#f5deb3"]
bitmap.pitch=4[color="#f5deb3"]
bitmap.pixel_mode=1[color="#f5deb3"]
____________________[color="#f5deb3"]
____________________[color="#f5deb3"]
____________________[color="#f5deb3"]
________OOO_________[color="#f5deb3"]
_________OOO________[color="#f5deb3"]
____________________[color="#f5deb3"]
_________OO_________[color="#f5deb3"]
____OOOOOOOO____O___[color="#f5deb3"]
_________OO___OOOO__[color="#f5deb3"]
_________OOO__OO____[color="#f5deb3"]
OOOOOOOO_OOO_OO_____[color="#f5deb3"]
_____OOO_OOOOO______[color="#f5deb3"]
_____OO__OOOO_______[color="#f5deb3"]
_____OO__OOOO_______[color="#f5deb3"]
____OOO__OO_OO______[color="#f5deb3"]
____OO___OO__OO_____[color="#f5deb3"]
___OO____OO__OOO____[color="#f5deb3"]
___OO____OO___OOO___[color="#f5deb3"]
__OO_____OO_____OOOO[color="#f5deb3"]
_OO______OO_________[color="#f5deb3"]
OO______OOO_________[color="#f5deb3"]
____________________[color="#f5deb3"]
[color="#00cdcd"]hellwolf[color="#000000"]@[color="#cd00cd"]cocteau[color="#000000"]#[color="#cd0000"]pts/1[color="#000000"]%[color="#cdcd00"]J0S2[color="#000000"]:[color="#0000ee"]getbitmap[color="#cd0000"]$ ./getbitmap /usr/share/fonts/chinese/True[color="#f5deb3"]
Type/uming.ttf $(mygetunicode 中) 16[color="#f5deb3"]
unicode +4E2D size 16[color="#f5deb3"]
bitmap_left=1[color="#f5deb3"]
bitmap_top=14[color="#f5deb3"]
bitmap.rows=15[color="#f5deb3"]
bitmap.width=14[color="#f5deb3"]
bitmap.pitch=2[color="#f5deb3"]
bitmap.pixel_mode=1[color="#f5deb3"]
______________[color="#f5deb3"]
______OOO______[color="#f5deb3"]
______OO_______[color="#f5deb3"]
______OO_______[color="#f5deb3"]
______OO____OO_[color="#f5deb3"]
_OOOOOOOOOOOOOO[color="#f5deb3"]
_O____OO____OO_[color="#f5deb3"]
_O____OO____OO_[color="#f5deb3"]
_O____OO____OO_[color="#f5deb3"]
_OOOOOOOOOOOOO_[color="#f5deb3"]
_O____OO____OO_[color="#f5deb3"]
______OO_______[color="#f5deb3"]
______OO_______[color="#f5deb3"]
______OO_______[color="#f5deb3"]
______OO_______[color="#f5deb3"]
______OO_______[color="#f5deb3"]
[color="#00cdcd"]hellwolf[color="#000000"]@[color="#cd00cd"]cocteau[color="#000000"]#[color="#cd0000"]pts/1[color="#000000"]%[color="#cdcd00"]J0S2[color="#000000"]:[color="#0000ee"]getbitmap[color="#cd0000"]$ ./getbitmap /usr/share/fonts/chinese/True[color="#f5deb3"]
Type/uming.ttf $(mygetunicode 中) 32[color="#f5deb3"]
unicode +4E2D size 32[color="#f5deb3"]
bitmap_left=4[color="#f5deb3"]
bitmap_top=28[color="#f5deb3"]
bitmap.rows=32[color="#f5deb3"]
bitmap.width=26[color="#f5deb3"]
bitmap.pitch=4[color="#f5deb3"]
bitmap.pixel_mode=1[color="#f5deb3"]
__________________________[color="#f5deb3"]
__________________________[color="#f5deb3"]
__________________________[color="#f5deb3"]
__________________________[color="#f5deb3"]
______________OO______________[color="#f5deb3"]
______________OOOO____________[color="#f5deb3"]
______________OOO_____________[color="#f5deb3"]
______________OOO_____________[color="#f5deb3"]
______________OOO_____________[color="#f5deb3"]
______________OOO_____________[color="#f5deb3"]
____O_________OOO________OOO__[color="#f5deb3"]
____OOOOOOOOOOOOOOOOOOOOOOOOO_[color="#f5deb3"]
____OO________OOO________OOO__[color="#f5deb3"]
____OO________OOO________OOO__[color="#f5deb3"]
____OO________OOO________OOO__[color="#f5deb3"]
____OO________OOO________OOO__[color="#f5deb3"]
____OO________OOO________OOO__[color="#f5deb3"]
____OO________OOO________OOO__[color="#f5deb3"]
____OO________OOO________OOO__[color="#f5deb3"]
____OO________OOO________OOO__[color="#f5deb3"]
____OO________OOO________OOO__[color="#f5deb3"]
____OOOOOOOOOOOOOOOOOOOOOOOO__[color="#f5deb3"]
____OO________OOO________OOO__[color="#f5deb3"]
____OO________OOO________OOO__[color="#f5deb3"]
____O_________OOO________OO___[color="#f5deb3"]
______________OOO_____________[color="#f5deb3"]
______________OOO_____________[color="#f5deb3"]
______________OOO_____________[color="#f5deb3"]
______________OOO_____________[color="#f5deb3"]
______________OOO_____________[color="#f5deb3"]
______________OOO_____________[color="#f5deb3"]
______________OOO_____________[color="#f5deb3"]
______________OOO_____________[color="#f5deb3"]
______________OOO_____________[color="#f5deb3"]
______________OO______________[color="#f5deb3"]
______________________________[color="#f5deb3"]
[color="#00cdcd"]hellwolf[color="#000000"]@[color="#cd00cd"]cocteau[color="#000000"]#[color="#cd0000"]pts/1[color="#000000"]%[color="#cdcd00"]J0S2[color="#000000"]:[color="#0000ee"]getbitmap[color="#cd0000"]$
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/8057/showart_335549.html |
|