Android5.0 Recovery 支持中文

<span style="font-family: Arial, Helvetica, sans-serif;">网上已经很多开源的实现方式支持4.4的中文显示, 之前也修改过4.4的中文, 切到5.0发现需要修改。 修改的前提是得懂两个地方:</span>

1: 中文的头文件是如何生成和实现显示到屏幕点击打开链接的

头文件的生成需要两部:
1: 从 TTF 文件导出文字图片 (可以查看生成的图片显示的内容, 每行一个字符的竖直排列)
2: 从图片生成头文件

推荐看下 XIAOLU, 读一下 fontcn.py 文件基本上就了解了如何生成 中文头文件的。

2: 4.4 和 5.0 UI显示部分的区别


4.4以及之前的Recovery都是UI显示都是在 通过一个叫 pixelflinger 的中间件然后往FB上输出内容的。
5.0之后弃用了pixelflinger, 直接往FB上输出内容。

所以只需要针对之前的gr_text 做相应的修改就可以了。(其余的部分网上已经有代码了)

void gr_text(int x, int y, const char *s, int bold)
{
    GRFont *gfont = gr_font;
    unsigned off, width, height, n;
    wchar_t ch;

    //if (!font->texture) return;
    if (gr_current_a == 0) return;

    //bold = bold && (font->texture->height != font->cheight);

    x += overscan_offset_x;
    y += overscan_offset_y;

    while(*s) {
        if(*((unsigned char*)(s)) < 0x20) {
            s++;
            continue;
        }
        off = getCharID(s);
        n = utf8_mbtowc(&ch, s, strlen(s));
        if(n <= 0){
            break;
        }
        s += n;
        if(off<95){
            width = font.ewidth;
            height = font.eheight;
        }else{
            width = font.cwidth;
            height = font.cheight;
        }

        unsigned char* src_p = gfont->fontdata[off];
        unsigned char* dst_p = gr_draw->data + y*gr_draw->row_bytes + x*gr_draw->pixel_bytes;

        text_blend(src_p, width, dst_p, gr_draw->row_bytes, width, height);

        x += width;
    }
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值