Java Android 2.x devanagari unicode问题

Java Android 2.x devanagari unicode问题,java,android,unicode,Java,Android,Unicode,我尝试使用以下代码支持android 2.x的devanagari字体(尽管android 2.x无法呈现devanagari字体)。除了“raswa”和“dirga”有一些问题外,代码工作正常。是否有可能在Android2.x中获得正确的devanagari表示 Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/mangal.ttf"); TextView txtviewword=(TextView) findVi

我尝试使用以下代码支持android 2.x的devanagari字体(尽管android 2.x无法呈现devanagari字体)。除了“raswa”和“dirga”有一些问题外,代码工作正常。是否有可能在Android2.x中获得正确的devanagari表示

Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/mangal.ttf");
TextView txtviewword=(TextView) findViewById(R.id.textViewWord);
txtviewword.setTypeface(typeface);
这是不正确的表示(来自android 2.3):

这应该是这样的(来自android 4.4):


在分析了我在这个问题上的处境后,我发现用字母表(“阿克沙”)替换“拉斯瓦”的位置本身就可以解决姜饼的问题。所以,我交换了“raswa”和字母表的位置。因此,这提供了解决问题的方法

if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
   char[] array = content[1].toCharArray();   /*content[1] is a string containing the original version */
   for(int i=0; i<array.length; i++){
        char c = array[i];
        int code = (int) c;
        if (code == 2367){    //2367 is int value for 'raswa'
            char temp = array[i-1];
            array[i-1]=c;
            array[i]=temp;
        }
    }
    String str = String.copyValueOf(array); /*This string contains the swapped version(symantically its wrong, though. It's works as my solution.)*/
    Log.d("DetailActivity", "from gingerbread");
    Log.d("DetailActivity", str);
    if(!content[1].equals(null))txtviewdevanagari.setText(str);
}else{
    Log.d("DetailActivity", "from ICS+");
    if(!content[1].equals(null))txtviewdevanagari.setText(content[1]);
}
if(android.os.Build.VERSION.SDK\u INT对于(int i=0;iu表示相同的代码在2个设备中以不同的方式表示?是的。部分原因是android 2.x无法正确呈现devanagari字体。我认为这是famework…任何替代ttf?切换ttf也不起作用。复杂的布局呈现需要文本布局引擎的支持:据我所知,您有e它要么从谁知道的地方提供你自己的,要么放弃。