我设置 String myText="\u2327\u2381\u2352\"; 并尝试在 Textview 中显示它,但我只在 android 模拟器中看到 3 个矩形框。即使 android 2.3 发行说明说支持印地语,我仍然看不到模拟器中出现印地语字符。
7 回答
即使您安装了梵文字体,您也无法在 Android 手机上正确呈现印地语文本。
对所有复杂的印度文字(孟加拉文、梵文、卡纳达文、泰米尔文、泰卢固文、藏文、旁遮普文、僧伽罗文等)使用相同的苹果
问题在于,尽管 Android“支持 Unicode”,但没有复杂的脚本渲染支持——即使在 Andoid 4.0 (ICS) 模拟器中也是如此。由于这些字母不能正确组合形成连词,因此文本非常难以阅读。
在谷歌修复之前,这种印度语言将无法正常显示。
这实际上对他们来说并不是很难解决。在 Linux(基于 Android)中,印度脚本的复杂文本渲染由名为 Pango 或 Harfbuzz 的开源库支持 - 但出于某种原因(对印度和南亚市场缺乏真正的兴趣?)谷歌选择不在Android中实现这一点。
印度语脚本在使用其他基于 Linux 的操作系统(如诺基亚 N900)的手机上运行良好。甚至一些 Symbian 手机也可以通过 Qt 中的支持显示印度语文本。
Apple iPhone 现在也能正确显示印度语言。
如果谷歌和他们的 OEM 关心在印度销售 Android 手机,他们真的需要紧急修复这个缺陷。
许多设备目前不支持印度语言,包括模拟器。
只有在印度销售的三星设备支持印地语。
遇到这个问题的伙伴,你并不孤单!:-)
我有三星 Galaxy S。我使用 Kies over JP6 安装了 DDJV6。但我感觉被三星完全欺骗了,因为这个所谓的“印度版本”不支持任何印地语或印度语字体。我说的是阅读印地语文本。就文本输入而言,印地语甚至没有显示为数据输入语言。可惜三星不能使用 Gingerbread 的固有功能!我这么说是因为即使是 Froyo 在印度正式发布的 Galaxy S 也可以正确呈现印地语字体。有很多高调声称 Gingerbread 将支持 52 种语言(用于阅读和写作),这是三星,它甚至无法在基于 Android 2.3.3 的 Galaxy S 中呈现印度语阅读功能。
Android 手机没有默认印地语故障。
您必须确保您使用的是自定义印地语字体。
fonts
在您的文件夹中创建一个名为的assests
文件夹。
把你custom_font_hindi.ttf
的放在assets/fonts
.
Typeface tf = Typeface.createFromAsset(getAssets(),"fonts/custom_font_hindi.ttf");
TextView tv = (TextView) findViewById(R.id.CustomFontText);
tv.setTypeface(tf);
然后你会在你的TextView
您可以使用DroidHindi.ttf 字体(例如,在 google.com 中搜索)。将其添加到项目中的assets文件夹中,并将该字体加载到您的视图中。
Typeface t = Typeface.createFromAsset(getContext().getAssets(), "DroidHindi.ttf");
textView.setTypeface(t);
看起来像字体问题,尝试设置您TextView
使用具有合适字形的字体。
我找到了如何在 Android 中使用印地语字体的解决方案。这是非常简单的解决方案。但很难正确的印地语字体。
利用
DroidHindi.ttf
它是支持印地语的字体。
下载它并放置在 Assets 文件夹中。执行以下代码来设置字体:
TextView tv = (TextView) findViewById(R.id.textView);
Typeface fontHindi = Typeface.createFromAsset(getAssets(), "fonts/DroidHindi.ttf");
tv.setTypeface(fontHindi);
现在您可以轻松找到您的解决方案。
此外,您可以将印地语文本放入.txt文件并从中读取。像这样。
将所有印地语.txt文件放在 Assets 文件夹中,然后调用该函数来检索印地语文本,例如:
public void readData(int tag) {
// file to inputstream
InputStream input = null;
try {
int tagV = tag +1;
input = ctx.getAssets().open("sample "+tagV+".txt");
int size = input.available();
byte[] buffer = new byte[size];
input.read(buffer);
input.close();
// byte buffer into a string
detailtext = new String(buffer);
} catch (IOException e) {
e.printStackTrace();
}
}
我在这里使用 15 个文件,所以我经历了循环。