【问题标题】:Does Android support Windows fonts? and how to write Unicode text into a textview?Android 是否支持 Windows 字体?以及如何将 Unicode 文本写入文本视图?
【发布时间】:2016-03-19 20:07:45
【问题描述】:

是否可以在 Android 应用程序中使用 Windows 字体(.ttf 文件)?

我有一些这样的 unicode-8 文本:

جۆرەه

我想把它放到一个textView中,我尝试了一些其他的方法,但它们没有奏效。 现在,我想在应用程序中嵌入字体以正确阅读文本..

顺便说一句,这是库尔德语..

感谢任何帮助

【问题讨论】:

  • 这不是“Unicode-8”,这是无效的(因为&# 和数字之间有空格)HTML 实体编码。它与字体无关。如果要在 textview 中显示,请先将其解码回普通的string
  • @GSerg 我自己放了空格,,,让文本显示在我的应用程序上,HTML 自动将其转换为可读文本..
  • @GSerg 你能告诉我如何将此测试解码为可读的吗??

标签: android unicode-string android-fonts


【解决方案1】:

嗯,是的,您可以在 Android 应用程序中使用 .ttf 文件。导航到您的 Android 项目的 src/main 文件夹,在那里创建一个新文件夹 assets 并将您的 .ttf 文件粘贴到其中。您可以将字体放在支持您的语言的目录中。之后,您可以像这样在EditText 中使用字体:

// For Setting the typeface in the TextViews
    Typeface xyzTypeFace = Typeface.createFromAsset(getAssets(), "xyz.ttf");
    TextView taglineTextView = (TextView) findViewById(R.id.taglineTextView);
    taglineTextView.setTextSize(25);
    taglineTextView.setTypeface(xyzTypeFace);

【讨论】:

【解决方案2】:

谢谢大家的回答,

最后我用下面的方法解决了这个问题..

    public static String fixEncodingUnicode(String response) {
    String str = "";
    try {
        str = new String(response.getBytes("ISO-8859-1"), "UTF-8");
    } catch (UnsupportedEncodingException e) {

        e.printStackTrace();
    }

    String decodedStr = Html.fromHtml(str).toString();
    return  decodedStr;
}

【讨论】:

  • 你为什么要把response编码成ISO-8859-1,然后像UTF-8一样解码呢?为什么不直接将response 直接传递给Html.fromHtml()?您以String 开头并以String 结尾,因此只需将其保留为String,并且不要在其间使用字节编码。如果您遇到编码不匹配的问题,则需要在开始时不匹配的源处进行修复,而不是在以后修补。
  • 您应该感谢 Brainbreaker 的回答。您的问题是关于如何在 Android 中使用 .ttf 文件,而不是如何将 HTML 编码的字符串解码为 Unicode 字符以供显示。两个单独的问题。 Brainbreaker 回答了被问到的问题。 HTML 问题应该单独提出。
  • 感谢@RemyLebeau 提供的 cmets,是的,正如你所说,我删除了源代码中 json.encode() 方法中的所有标志。然后我在我的应用程序中删除了这个方法,一切顺利好吧..关于第二条评论,我有一个问题,我想解决它。你是对的,大脑回答了部分问题,但问题仍未解决..顺便说一句,我赞成大脑:) 最良好的祝愿
  • StackOverflow 是一个问答网站。您发布的答案可能会提供解决您潜在问题的解决方案,但它并不能回答您实际提出的问题(“是否可以在 Android 应用程序中使用 Windows 字体(.ttf 文件)?”)。 Brainbreaker 的答案是(“是的,使用 Typeface.createFromAsset()...”),并且应该被标记为这个问题的正确答案。在到期的地方给予信用,否则你应该删除这个问题。问题和答案应该相互关联。
猜你喜欢
  • 1970-01-01
  • 2016-11-09
  • 2011-04-02
  • 2011-10-01
  • 2011-05-08
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多