Android的Recovery中font_10x18.h字库文件制作
2016-01-05 11:24
501 查看
原文:
http://blog.csdn.net/kangear/article/details/10011849
任务是要汉化Android中的Recovery,就了解了bootable/recovery/minui/font_10x18.h这个英文字库的来历,最终汉化的时候并没有自己汉字字库,用的github上现成的,但font_10x18.h来历短暂的留存在脑子里边不如记下来,这样会有好处,比如要更改字体风格、更改字体大小、如果要求实现其它非英语语言,都会重新来研究这个!
先预览一下font_10x18.h:
[cpp] view
plaincopy
struct {
unsigned width;
unsigned height;
unsigned cwidth;
unsigned cheight;
unsigned char rundata[];
} font = {
.width = 960,
.height = 18,
.cwidth = 10,
.cheight = 18,
.rundata = {
0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x55,0x82,0x06,0x82,0x02,0x82,0x10,0x82,
...........................................................................
0x84,0x3f,
0x00,
}
};
文件中有几点:
① font 的结果体类型来历
② font 中各个元素值由谁决定的
一点一点来找答案!
一、
打开BMFont后,右边的列表是我的字体库,各种不同的字体。选中第一项"Latin+Latin Supplement".
①Options->Font Setting:
![](https://img-blog.csdn.net/20130816215853312?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2FuZ2Vhcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
图中Size对应结构体中cwidth; 图中Height %对应结构体中cheigh占height的百分比。
②Options->Export Options:
![](https://img-blog.csdn.net/20130816215833734?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2FuZ2Vhcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
图中Width对应结构体中width;图中Height对应结构体中height;
③Options->save bitmap font as..
![](https://img-blog.csdn.net/20130816220243781?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2FuZ2Vhcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
然后输入导出的文件名tmp,文件类型默认选.fnt,然后就会发现导出路径多了一个tmp_0.png的文件,那就是字库图片资源。需要的是这个png文件。fnt文件并不是我们需要的!
二、
有了tmp_0.png是成功的一半,下面要用到ps的linux版本gimp。
①打开gimp,文件->打开 来打开tmp_0.png
②文件->导出 输出名字填tmp.c
③在弹出的"图像导出C源码"配置对话框做如下配置:
![](https://img-blog.csdn.net/20130816215938531?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2FuZ2Vhcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
tmp.c到font.c就差一步了
三、
取出android源码中的mkfont.c(bootable/recovery/minui/),然后和tmp.c一起编译:
一起编译最好的方法是将tmp.c换成头文件tmp.h 然后mkfont.c中添加该头文件!然后gcc mkfon.c
./a.out > font.h
此时打开font.h就会font_10x18.h并无大的差别了。唯一的差别是rundata这个元素,这个是选用的不同字体会生成不同的内容。
![](https://img-blog.csdn.net/20130816220350015?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2FuZ2Vhcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
综上所述,可以总结流程图:
![](https://img-blog.csdn.net/20130816221426859?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2FuZ2Vhcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
1.《Android Recovery汉化》
- http://img.zqr.cm/thread-61-1-1.html
2.《联想A298T专用recovery中文恢复系统》
- http://bbs.anzhi.com/thread-8076669-1-1.html
3.《在andriod中加入充电指示》
- http://blog.csdn.net/shuaiff/article/details/5581127
4.《Android 的GUI 系统》
- http://www.cnblogs.com/Caiqinghua/archive/2010/08/03/1790900.html
5.《charger代码分析(Android4.2)》
- http://blog.csdn.net/u010223349/article/details/8822747
6.《android 电池(二):android关机充电流程、充电画面显示》
- http://blog.csdn.net/xubin341719/article/details/8498580
7.《recovery汉化实现》
- http://blog.csdn.net/haomcu/article/details/8189760
8.《linux下gimp将图片另存为.c格式文本文件-之后加工存储 》
- http://blog.chinaunix.net/uid-20564848-id-73227.html
9.《Android系统Recovery工作原理之使用update.zip升级过程分析》
- http://blog.csdn.net/mu0206mu/article/category/1059752
10.《Cocos2d-x初入学堂(6)-->Bitmap Font generator位图字体工具》
- http://blog.csdn.net/aa4790139/article/details/8113197
11.《android 关机闹钟》
- http://blog.csdn.net/g_salamander/article/details/8487328
12.《Android recovery模式》
- http://www.2cto.com/kf/201206/137579.html
13.《android recovery模式及ROM制作》
- http://www.cnblogs.com/xl19862005/archive/2012/03/23/2414109.html
http://blog.csdn.net/kangear/article/details/10011849
任务是要汉化Android中的Recovery,就了解了bootable/recovery/minui/font_10x18.h这个英文字库的来历,最终汉化的时候并没有自己汉字字库,用的github上现成的,但font_10x18.h来历短暂的留存在脑子里边不如记下来,这样会有好处,比如要更改字体风格、更改字体大小、如果要求实现其它非英语语言,都会重新来研究这个!
先预览一下font_10x18.h:
[cpp] view
plaincopy
struct {
unsigned width;
unsigned height;
unsigned cwidth;
unsigned cheight;
unsigned char rundata[];
} font = {
.width = 960,
.height = 18,
.cwidth = 10,
.cheight = 18,
.rundata = {
0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x55,0x82,0x06,0x82,0x02,0x82,0x10,0x82,
...........................................................................
0x84,0x3f,
0x00,
}
};
文件中有几点:
① font 的结果体类型来历
② font 中各个元素值由谁决定的
一点一点来找答案!
一、
打开BMFont后,右边的列表是我的字体库,各种不同的字体。选中第一项"Latin+Latin Supplement".
①Options->Font Setting:
图中Size对应结构体中cwidth; 图中Height %对应结构体中cheigh占height的百分比。
②Options->Export Options:
图中Width对应结构体中width;图中Height对应结构体中height;
③Options->save bitmap font as..
然后输入导出的文件名tmp,文件类型默认选.fnt,然后就会发现导出路径多了一个tmp_0.png的文件,那就是字库图片资源。需要的是这个png文件。fnt文件并不是我们需要的!
二、
有了tmp_0.png是成功的一半,下面要用到ps的linux版本gimp。
①打开gimp,文件->打开 来打开tmp_0.png
②文件->导出 输出名字填tmp.c
③在弹出的"图像导出C源码"配置对话框做如下配置:
tmp.c到font.c就差一步了
三、
取出android源码中的mkfont.c(bootable/recovery/minui/),然后和tmp.c一起编译:
一起编译最好的方法是将tmp.c换成头文件tmp.h 然后mkfont.c中添加该头文件!然后gcc mkfon.c
./a.out > font.h
此时打开font.h就会font_10x18.h并无大的差别了。唯一的差别是rundata这个元素,这个是选用的不同字体会生成不同的内容。
综上所述,可以总结流程图:
1.《Android Recovery汉化》
- http://img.zqr.cm/thread-61-1-1.html
2.《联想A298T专用recovery中文恢复系统》
- http://bbs.anzhi.com/thread-8076669-1-1.html
3.《在andriod中加入充电指示》
- http://blog.csdn.net/shuaiff/article/details/5581127
4.《Android 的GUI 系统》
- http://www.cnblogs.com/Caiqinghua/archive/2010/08/03/1790900.html
5.《charger代码分析(Android4.2)》
- http://blog.csdn.net/u010223349/article/details/8822747
6.《android 电池(二):android关机充电流程、充电画面显示》
- http://blog.csdn.net/xubin341719/article/details/8498580
7.《recovery汉化实现》
- http://blog.csdn.net/haomcu/article/details/8189760
8.《linux下gimp将图片另存为.c格式文本文件-之后加工存储 》
- http://blog.chinaunix.net/uid-20564848-id-73227.html
9.《Android系统Recovery工作原理之使用update.zip升级过程分析》
- http://blog.csdn.net/mu0206mu/article/category/1059752
10.《Cocos2d-x初入学堂(6)-->Bitmap Font generator位图字体工具》
- http://blog.csdn.net/aa4790139/article/details/8113197
11.《android 关机闹钟》
- http://blog.csdn.net/g_salamander/article/details/8487328
12.《Android recovery模式》
- http://www.2cto.com/kf/201206/137579.html
13.《android recovery模式及ROM制作》
- http://www.cnblogs.com/xl19862005/archive/2012/03/23/2414109.html
相关文章推荐
- Android:状态栏Notification
- Android文件读写注意点
- android studio中的极光推送
- Android编程解析XML方法详解(SAX,DOM与PULL)
- Android夜间模式最佳实践
- android studio 下的debug模式下的keystore变成自己的keystore
- android:windowSoftInputMode属性详解
- Android实现通知栏透明的方法
- Android Studio中如何跳到某一个方法
- Android 自定义View (一)
- 关于android studio 下获取签名文件SHA1的方法
- Android单元测试
- Android API Level 对应关系 6.0
- android preferences使用
- android 自定义TextView中Html超链接点击事件详解
- Android编程中的消息机制实例详解
- android 获取当前程序路径
- android 遇到过的bug(累积文)
- Android sdk下载链接
- Android 环信录音弹出"权限管理"问题