【问题标题】:Android using a special unicode characterAndroid 使用特殊的 unicode 字符
【发布时间】:2015-11-15 20:51:27
【问题描述】:

帮助大家, 我正在为 android 开发一个应用程序,只需要使用 1 个奇怪的 unicode 字符:

\u0180 - ƀ

我的问题是:

是否可以简单地将此字符插入现有字体或以任何其他方式将一个巨大的 5-10 mb 字体包含到支持此 unicode 字符的应用程序中? 请任何想法,任何链接,一些方向。 谢谢各位。

【问题讨论】:

  • 就真正的字母而言,unicode 中没有“奇怪”的字符。你所说的奇怪,其他人会称之为“只是我书面语言中的一个普通字母”,所以当你问的是一个不受支持的 unicode 字符时。不是一个奇怪的。此外,如果您需要即时帮助,请添加更多详细信息。你已经在哪里搜索过,你尝试过什么,为什么没有工作,等等。不要只是建议你还没有做任何研究,而期待立即得到答案 =)

标签: java android unicode fonts


【解决方案1】:

Google 的关键字:TypefaceMetricAffectingSpanSpannableString

您不必包含所有不需要的字符。您可以创建自己的字体,其中包含带有您选择的代码的唯一字符。然后您可以使用此字体来跨越包含该字符的字符串。

假设你的角色有一个名为custom_font 的TTF 字体文件,你可以将它放在你的assets/fonts 文件夹中并创建一个字体对象:

Typeface customTypeface = Typeface.createFromAsset(context.getAssets(), "fonts/custom_font.ttf");

然后你可以将你的特殊字符跨越字符串(假设你事先不知道它的确切位置):

SpannableStringBuilder resultSpan = new SpannableStringBuilder(yourString);

for (int i = 0; i < resultSpan.length(); i++) {
  if (resultSpan.charAt(i) == '\u0180') {
    CustomTypefaceSpan typefaceSpan = new CustomTypefaceSpan(customTypeface);
    resultSpan.setSpan(typefaceSpan, i, i + 1, 0);
  }
}

SpannableStringBuilder 实现了CharSequence,所以你的TextViews 和EditTexts 会很乐意接受它。

您可以从this answer 中获取CustomTypefaceSpan 的实现。

【讨论】:

  • 是的,我尝试了不同的字体,但我不知道你可以跨越字符集,谢谢朋友。
猜你喜欢
  • 1970-01-01
  • 2017-10-30
  • 2021-04-14
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
相关资源
最近更新 更多