java - Android 使用特殊的 unicode 字符

标签 java android unicode fonts

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

\u0180 - ƀ

我的问题是:

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

最佳答案

谷歌搜索的关键字:Typeface , MetricAffectingSpan , SpannableString .

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

假设您的角色有一个名为 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,因此您的 TextViewEditText 会很乐意接受它。

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

关于java - Android 使用特殊的 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32148290/

相关文章:

java - 切入点表达式返回抛出错误

java - '选项 SQL_SELECT_LIMIT=DEFAULT'

java - Hibernate 表不会自动创建

Android:无法更新到 Android SDK 工具,修订版 7

java - 使用 gcm 更新 ListView 中的 ImageView

java - 如何使用 java 和 PDFBox 从 PDF 中获取字符的 Unicode

python-2.7 - pickle 中 io 与字符串内容的不同行为

java - 拦截器没有被调用

json - 在 postgresql 中处理 Unicode 序列

Android 服务在重启时不保留数据