免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1548 | 回复: 0
打印 上一主题 下一主题

玩具 : 用freetype2显示ascii-art中文 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-06 19:20 |只看该作者 |倒序浏览
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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP