修改高通默认关机充电电量显示字体为robot 36x64

embrace21soul 2017-07-04 08:23:09
1、替换bootable/recovery/minui/font_10x18.h字库文件,制作成roboto 36x64大小的字库文件,如何制作出这个字库文件?
2、我用BMfont生成Png文件,然后用gimp转换成gimp_image结构体,利用mkfont.c文件生成font_36x64文件,但显示依然是乱码的,这个字库具体该怎么做?
...全文
1158 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
embrace21soul 2018-03-29
  • 打赏
  • 举报
回复
1、将python脚本mkfonten.py和Inconsolata.ttf字库文件放在同一目录下,特别注意,用来生成字体最好选择等高等宽字体,不然会出现两个文字显示间隙过大 2、执行python mkfonten.py,根据提示输入需要生成的字体大小 3、将生成所需的字库文件 mkfonten.py文件如下 #!/usr/bin/env python from struct import * from PIL import Image, ImageDraw, ImageFont, ImageFilter import sys print "preparing data" s = '' data = "" n = 0 for i in range(32,128): s += "%c"%i data += "{0:#06x}, ".format(i) n += 1 if ((n%12) == 0): data += "\n" print "count:%d" %len(s) if (len(sys.argv) > 1): fontsize_en = int(sys.argv[1]) else: print u"enter font size" fontsize_en = int(raw_input()) font_name = "Inconsolata.ttf" font_en = ImageFont.truetype(font_name, fontsize_en) width_en,height_en = font_en.getsize("W") top_margin=0 height_spacing=0 height_en=height_en+height_spacing print "fontsize: %d" %(fontsize_en) print "font en: %dx%d" %(width_en,height_en) im_en = Image.new('P', (width_en*len(s), height_en), 0) text = ImageDraw.Draw(im_en) #print "painting ascii" size = "" for i in range(len(s)): text.text((i*width_en, top_margin), s[i], 255, font_en) im_en.save("data_en_%d_%dx%d.png"%(fontsize_en,width_en,height_en)) print "generating png file data_en_%d_%dx%d.png"%(fontsize_en,width_en,height_en) pixs_en = im_en.load() pixels = [ ] width,height = im_en.size run_count = 1 run_val = "" for y in range(height): for x in range(width): r = (pixs_en[x,y] > 0xC0) if run_val != "": val = (0x80 if r else 0x00) if (val == run_val) & (run_count < 127): run_count += 1 else: pixels.append(run_count | run_val) run_val = val run_count = 1 else: run_val = (0x80 if r else 0x00) pixels.append(run_count | run_val) pixels.append(0) print "generating header files font_%d_%dx%d.h" %(fontsize_en,width_en,height_en) # gen font data f = open('fonten%d_%dx%d.h'%(fontsize_en,width_en,height_en), 'wb') f.write("//top_margin=%d height_spacing=%d font_name=%s\n"%(top_margin,height_spacing,font_name)) f.write("struct {\n") f.write(" unsigned width;\n") f.write(" unsigned height;\n") f.write(" unsigned cwidth;\n") f.write(" unsigned cheight;\n") f.write(" unsigned char rundata[];\n") f.write("} font = {\n") f.write(" .width = %s,\n"%width) f.write(" .height = %s,\n"%height) f.write(" .cwidth = %s,\n"%width_en) f.write(" .cheight = %s,\n"%height_en) f.write(" .rundata = {\n") n = 0 for pix in pixels: f.write(("0x%02x,"%pix)) n += 1 if ((n%15) == 0): f.write("\n") f.write("}\n") f.write('};') f.close()

944

社区成员

发帖
与我相关
我的任务
社区描述
为开发者提供高通丰富的解决方案及全面技术下载内容。本版以AI人工智能、WoS移动笔记本、XR、IoT 物联网、Auto 汽车、生成式AI等核心板块组成,为开发者提供一个便捷及高效的学习交流平台。
人工智能物联网机器学习 企业社区 北京·东城区
社区管理员
  • Qualcomm开发
  • csdnsqst0050
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧