【问题标题】:Android: Display Special CharactersAndroid:显示特殊字符
【发布时间】:2013-04-30 14:47:47
【问题描述】:

我想显示特殊字符,例如:ṁ ṭ m ē。如果它们也没有显示在这里,这四个字符应该是这样的:

在 Android 中,这些将显示为正方形。对于其他脚本,我可以通过使用不同的字体来解决这个问题。但在这种情况下,设置字体 (TextView.setTypeFace) 并不能解决这个问题。这些字符在例如 OpenOffice(使用 Arial 或 Courier New)中正确显示,但在 Android 中,即使使用相同的字体也无法显示)。

我还尝试将字符串保存为 unicode 编码的字符串(例如在 strings.xml 中:\u1E41 \u1E6D)得到相同的结果(在日志中它们应该出现)。有什么想法吗?

【问题讨论】:

  • 在 Android 2.3.6 上测试。

标签: android fonts


【解决方案1】:

如果这些字符可以用 Unicode 表示,那么您应该能够使用 Html.fromHtml() 将字形放入 TextView,例如

textView.setText(Html.fromHtml("Ӓ"), TextView.BufferType.SPANNABLE);

【讨论】:

  • 我猜,你的意思是“Ӓ”或者更确切地说“ሴ”(用于十六进制值)。但是,这对于我需要的字符(例如 ṁ)也不起作用。无论如何,谢谢。
  • 是的,抱歉打错了。听起来好像 Android 没有相关语言所需的字体。如果您可以在某处找到该字体,则可以将其包含在包的 /res/assets 文件夹中。然后使用 TypeFace 加载字体,如果您将多次使用它,则将其缓存。例如。字体字体 = Typeface.createFromAsset(getAssets(), "your_font.ttf"); textView.setTypeface(字体, Typeface.NORMAL);
  • 在我写的问题中,我也试过这个。奇怪的是使用与某些桌面应用程序(OpenOffice、某些编辑器)中使用的字体相同的字体,其中字符显示正确,但在 Android 中仍然无法正确显示。
  • 这在某些情况下有效。但是,它不适用于像 "\u266B" (♫) 这样的 unicode,en.wikipedia.org/wiki/Mathematical_Operators 中也有很多
【解决方案2】:

这实际上只是一个字体问题。很难找到支持我需要的所有字符的字体。

看到谷歌翻译在音译字符方面没有问题,这促使我对字体进行更彻底的搜索。以下是用于此目的的有用字体列表:

【讨论】:

  • 你说得对,Android 不支持所有的 unicode,例如 "\u266B" (♫),在 en.wikipedia.org/wiki/Mathematical_Operators 中也有很多。
  • 找到解决办法了吗?
  • @Jacky:是的,正如我试图澄清的那样,使用某种字体包(ttf)具有预期的效果。我曾经遇到过梵文字符(印度脚本)的问题,之前使用相同的解决方案。
  • @Jacky:如果您需要知道如何为您的 textview 设置字体,方法如下:Typeface face = Typeface.createFromAsset( context.getAssets(), "path/file.ttf"); textView.setTypeface(face);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
相关资源
最近更新 更多