前言
         欢迎大家我分享和推荐好用的代码段~~
声明
         欢迎转载,但请保留文章原始出处:
         
CSDN:http://www.csdn.net
         雨季o莫忧离:http://blog.csdn.net/luckkof

正文


一些复杂语言如泰语、缅甸语、印地语,经常会看到一些带有虚线圈圈字符。这是一种正常的处理机制。对于那些不能单独存在的字符,在显示时额外添加虚线圈,以提供对于这些字符的含义的一些提示,使得这些字符在显示时能够有更加适当的位置,避免字符的无限叠加等问题。如在Windows7上的office2010中缅甸语也有同样的行为,如下图:

Mtk在JB版本引入了这种机制,如果想去掉圈圈这种机制,可以按照如下方法:

泰语:

JB、JB2版本:

external\harfbzz\src\harfbuzz-thai.c

注释如下代码

about line 418

case tR:

//        charIndex[(*outputIndex)] = inputIndex;

//        outputBuffer[(*outputIndex)++] = errorChar;

charIndex[(*outputIndex)] = inputIndex;

outputBuffer[(*outputIndex)++] = currChar;

break;

about line 426

case tS:

//        if (currChar == CH_SARA_AM) {

//            charIndex[(*outputIndex)] = inputIndex;

//            outputBuffer[(*outputIndex)++] = errorChar;

//        }

charIndex[(*outputIndex)] = inputIndex;

outputBuffer[(*outputIndex)++] = currChar;

break;

JB3、JB5版本由于变形引擎不同,默认是不带圈圈的,如果想使用这种机制,可以修改:frameworks/base/core/jni/android/graphics/TextLayoutCache.cp

about line 820

switch (script) {

case HB_SCRIPT_MYANMAR:

return &GraphiteLayoutShaper::getInstance();

case HB_SCRIPT_BENGALI:

case HB_SCRIPT_THAI:  新增此句   harfbuzzShaper.setShapingScript(getHBScriptFromHBNgScript(script));

return &harfbuzzShaper;

default:

harfbuzzNgShaper.setShapingScript(script);

return &harfbuzzNgShaper;

}

缅甸语:

JB、JB2版本:

external\harfbzz\src\harfbuzz-myanmar.c

注释如下代码就行,一共有三处。

//      reordered[len] = Mymr_C_DOTTED_CIRCLE;

//      len += 1;

JB3、JB5版本由于变形引擎不同,默认是不带圈圈的,如果想使用这种机制,可以修改:frameworks/base/core/jni/android/graphics/TextLayoutCache.cp

about line 820

switch (script) {

case HB_SCRIPT_MYANMAR:

// return &GraphiteLayoutShaper::getInstance();注释此句

case HB_SCRIPT_BENGALI:

harfbuzzShaper.setShapingScript(getHBScriptFromHBNgScript(script));

return &harfbuzzShaper;

default:

harfbuzzNgShaper.setShapingScript(script);

return &harfbuzzNgShaper;

}

需要注意的是,去掉圈圈机制可以会导致一些字符变形问题,如连续输入上下标、母音等字符,后面的字将不断往前面的字上面叠。同时由于该solution没能做严格的测试,而有可能存在其他潜在的风险。在不能单独存在的字符单独出现时去除虚线圈的做法,并不合理,并可能存在其他问题。如果要去掉,需要评估风险。

另外缅甸语比较特殊、缅甸语有官方和民间之分,二者不同的是编码机制不同,因此这2种缅甸语的字串翻译、处理引擎、字库都是不同的。如果遇到问题可以先按照如下方法排查:

1、       如果字串中出现一个圈圈可能是个别字串翻译问题,可以参考FAQ09106解决。

2、       如果浏览网页或者界面中出现大量圈圈、这可能是网页内容或者翻译和字库不匹配导致。如大多缅甸语网站是民间缅甸语的,如果使用官方的缅甸语引擎和字库访问的话,就会出现这个问题。

目前mtk仅仅支持官方的缅甸语,如果要支持民间缅甸语,通过简单修改(修改翻译、替换字库)存在诸多风险,需要自行评估或者咨询mtk工程师。

Android 泰语、缅甸语等复杂语言圈圈问题相关推荐

  1. android缅甸语,Android 泰语、缅甸语等复杂语言圈圈问题

    Mtk在JB版本引入了这种机制,如果想去掉圈圈这种机制,可以按照如下方法: 泰语: JB.JB2版本: external\harfbzz\src\harfbuzz-thai.c 注释如下代码 abou ...

  2. android 泰语资源,Android 泰语、缅甸语等复杂语言圈圈问题

    文件与目录管理 cd:切换目录 pwd:显示当前目录 mkdir:新建一个新的目录 rmdir:删除一个空的目录 ls:查看目录与文件 cp:复制 rm:删除 mv:移动|重命名文件与目录 切换目录( ...

  3. Android 泰语/缅甸语/捷克语下,Contacts列表中联系人出现排序错乱的

    修改ContactsProvider2.java文件 public static final String SECTION_HEADING = "SUBSTR(%1$s,1,1)" ...

  4. Android键盘输入语言设置默认打开myanmar 缅甸语

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! loca ...

  5. android添加新语言之缅甸语

    问题描述:添加一种新的语言. 问题分析:新添加一种语言需要几步,编译ICU资源,添加字库,添加相应的字串资源. 解决方案: 以添加缅甸语为例.下面的方式适用于android4.0以上(包括4.0),a ...

  6. android 添加新语言之缅甸语

    问题描述:添加一种新的语言. 问题分析:新添加一种语言需要几步,编译ICU资源,添加字库,添加相应的字串资源. 解决方案: 以添加缅甸语为例.下面的方式适用于android4.0以上(包括4.0),a ...

  7. android缅甸语,android 添加新语言之缅甸语

    问题描述:添加一种新的语言. 问题分析:新添加一种语言需要几步,编译ICU资源,添加字库,添加相应的字串资源. 解决方案: 以添加缅甸语为例.下面的方式适用于android4.0以上(包括4.0),a ...

  8. android缅甸语,android添加新语言之缅甸语

    问题描述:添加一种新的语言. 问题分析:新添加一种语言需要几步,编译ICU资源,添加字库,添加相应的字串资源. 解决方案: 以添加缅甸语为例.下面的方式适用于android4.0以上(包括4.0),a ...

  9. android缅甸语,Android键盘输入语言设置默认打开myanmar缅甸语的步骤

    不管你在学什么语言,当你觉得自己不擅长的时候,突然听到你的老师或其他人用你认为自己不擅长的语言流畅地交谈,你会感到热血沸腾,下面我们就跟着爱站技术频道小编一起来了解键盘输入语言设置默认打开myanma ...

最新文章

  1. Android Jetpack - Emoji表情符号初探
  2. asp.net core mvc权限控制:分配权限
  3. ThinkPHP(3)SQL查询语句
  4. mysql字符集问题_mysql字符集问题
  5. Django ORM 数据库操作
  6. Web服务器常用设置
  7. 计算机教育是核心期刊吗2020,重磅!2020年中国科技核心期刊目录,正式发布!...
  8. 大数据Hadoop学习文章汇总
  9. 用友NC系统安装部署指南
  10. 插件对计算机的运行有什么影响吗,电脑插件太多导致电脑运行缓慢怎么办 - 驱动管家...
  11. 刻录光驱只能读不能写怎么办?来看看!
  12. 阿里P7架构师浅谈Java 的年薪 40W 是什么水平?
  13. 辣椒app软件测试,testflight辣椒视频APP
  14. 网站安全扫描工具,举荐6个网站安全扫描工具
  15. 微信小程序调用支付接口支付(tp5、小程序)
  16. Java:实现Prim算法(附完整源码)
  17. smart计算机英语作文,关于科技的英语作文(精选5篇)
  18. 1257: 田忌赛马
  19. 《悟透JavaScript》诞生历程精美配乐视频
  20. 交叉编译libxml2

热门文章

  1. java进行抽奖_简单实现java抽奖系统
  2. Freeswitch 开发日记
  3. 单片机学习笔记 —— 8位数码管动态扫描
  4. java+uniapp对接app微信支付
  5. 如何自己在家手动制作网线
  6. win10系统通过注册表删除域账户
  7. ROS里程计的学习(odometry) (三)
  8. 视觉里程计:特征点法之ORB特征点
  9. 门禁上的push是什么意思_门禁的NC、NO、COM、PUSH等一系列符号的含义是什么?
  10. 数据库练习题6--数据库复杂查询+索引