android中用freetype提取字模

1 从github下载可以通过NDK编译的freetype,地址
   https://github.com/CyanogenMod/android_external_freetype
2 建立一个testjni工程,添加add native support (工程右键->android tools->add native support,可以产出jni目录), 把上面的lib copy到testjni工程的jni目录下,
   并简单修改Android.mk和Aplication.mk文件,最后结果参见代码;
   demo地址:http://download.csdn.net/detail/sohu_2011/9136721
3 去freetype官网查看api用法,有demo;
   http://freetype.sourceforge.net/freetype2/documentation.html
4  由于是提取字模,所以在调用FT_Render_Glyph(ftFace->glyph, FT_RENDER_MODE_MONO)
   时采用FT_RENDER_MODE_MONO选项;
5  在testjni工程的jni中默认有个testjni.cpp,修改为testjni.c,因为Android.mk用的是testjni.c,
   不管改不改,只要保持一致即可;
6  因为我在testjni.c中习惯是用的c方式的jni,避免编译出错,所以需要加上:
   #ifdef __cplusplus
    extern "C" {
   #endif
   
   ...code...
   
   #ifdef __cplusplus
    }
   #endif
7  在testjni中添加一个FreeTypeLib类,目的是加载使用freetype库
8  需要注意的问题:
    A java中字符的unicode码叫code point,所以要获得某个字符的unicode码,其实是获取其code point;
  可参考http://www.ibm.com/developerworks/cn/java/j-unicode/
   String text = "一丁丂七丄";
例子:
        for(int i = 0; i < text.codePointCount(0, text.length()); ){
        int code = text.codePointAt(i);
        Log.e(TAG,String.format("0x%x", code));
        i += Character.charCount(code);        
        }  
上面就把每个字的unicode码全部枚举一遍;

B 采用FT_RENDER_MODE_MONO提取出来的bitmap是每个bit表示一个点;


最后说一句,字库文件是从android系统目录下找的;用的时候copy到app私有目录中;该字库文件也可以在window中的字库文件拿过来用;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值