android中用freetype提取字模
2015-09-24 15:37
477 查看
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中的字库文件拿过来用;
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中的字库文件拿过来用;
相关文章推荐
- 在Windows上搭建IDEA14+Anroid开发环境
- Android基础入门教程——2.4.10 Spinner(列表选项框)的基本使用
- android四大组件总结
- android生命周期(详细总结)
- Android layout属性大全
- 第三方推送服务:个推服务推送流程
- android使用java代码创建控件、布局
- android Intent.createChooser 应用选择
- Android中minSdkVersion、targetSdkVersion、maxSdkVersion的作用
- jrebel for android
- Android Intent中显示意图与隐式意图的基本用法
- android隐藏软键盘
- Android学习总结(一)
- android系统中查看哪些端口被哪些应用打开
- Android 软键盘顶起背景图片的问题
- Android 编程下的代码混淆
- Android Studio.Duplicate files copied in APK META-INF/notice.txt
- 【android】android RGB颜色表
- Android自动播放图片功能实现
- 学习 KJFrameForAndroid