【问题标题】:Use external fonts in android在android中使用外部字体
【发布时间】:2010-11-28 09:57:32
【问题描述】:

我想在我的应用程序中使用外部字体。我尝试使用AssetManager 添加新的fonts,但没有成功。以下是我的代码:

Typeface face;

face = Typeface.createFromAsset(getAssets(), "font.otf");

textview.setTypeface(face);

但它没有显示文字...

请帮帮我。

【问题讨论】:

  • ..为了整洁,您可以在 assets/fonts 文件夹中拥有字体并访问字体; face = Typeface.createFromAsset(getAssets(), "fonts/" +"font.otf"); textview.setTypeface(face);

标签: android fonts android-widget


【解决方案1】:

AFAIK,Android 不支持 OpenType。请改用 TrueType 字体。


更新: 显然,现在至少支持 OpenType。它最初不受支持,因此您需要在您的应用支持的任何 Android 版本上彻底测试您的字体。

【讨论】:

  • 所以你说我的方向是正确的..我只需要使用 ttf 文件而不是 otf???
  • 是的。鉴于您的代码,您需要将字体放在 assets/ 目录的根目录中,否则使用兼容的字体应该没问题。
  • 错误消息表明您的模拟器与 adb 或 Eclipse 之间存在一些通信困难——它与字体无关。下载commonsware.com/Android/Android-src-2_1.zip,您将找到一个显示加载TrueType 字体的Android 项目。另请注意,Android 1.6 现在似乎允许您从 APK 外部加载字体(例如,您单独下载的字体)。
  • 如何访问库项目中的字体??它不起作用
  • @Maxwell:我不认为库项目的资产可供使用该库的应用程序使用。
【解决方案2】:

我遇到了同样的问题。我的字体也不能在 android 中工作,但我需要它才能工作。使用字体编辑器,我将字体中的字符复制到 Android-src-2_1 中的 FontSampler 示例附带的字体中。效果很好。

虽然我承认我的方法从知识产权的角度来看是有问题的,但我实际上并没有使用原始字体,因为所有字符都被替换了,所有对旧字体的引用也被替换了.我曾尝试“查看”这两种字体的定义方式,但使所有字体变量匹配也不起作用。所以在ned中,我使用了一个原始字体的骨架作为新字体的模板。

【讨论】:

    【解决方案3】:

    Android 确实支持 OTF(我不确定哪个 SDK 版本,但它肯定适用于 1.6),我使用打字机 OTF 字体有一段时间了,但渲染远没有我结束的 TTF 版本准确向上使用(通过在线字体转换器)。基线到处都是(有些字母比其他字母高出整整 2 个像素),而在 HTC Wildfire 等 LDPI 手机上,由于像素较大,问题被大大放大了。

    【讨论】:

      【解决方案4】:

      为了轻松访问我们的字体,我们需要将它与我们的应用程序捆绑在一起,以便我们的代码随后可以加载它。为此,我们在 assets direct 中创建一个 Fonts 文件夹

      这可能是你的 .xml

      <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent">
      <TextView
          android:id="@+id/DefaultFontText"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:textSize="30sp"
          android:text="Here is some text." />
      <TextView
          android:id="@+id/CustomFontText"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:textSize="30sp"
          android:text="Here is some text.">
          </TextView>
      

      在您的 .java 类中编写以下代码

      Typeface tf = Typeface.createFromAsset(getAssets(),
                  "fonts/BPreplay.otf");
          TextView tv = (TextView) findViewById(R.id.CustomFontText);
          tv.setTypeface(tf);
      

      【讨论】:

        【解决方案5】:

        android同时支持otf和ttf两种格式,我都体验过。

        tv3 = (TextView)findViewById(R.id.tv1);
            Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/TRAJANPRO-BOLD.OTF");
            tv3.setTypeface(typeFace);
        

        这是我用于英语和当地语言的步骤

        【讨论】:

          【解决方案6】:

          使用Fontinator它支持Boot OTF和TTF字体

          这是一个 Android 库,可以轻松使用自定义字体。

          https://github.com/svendvd/Fontinator

          【讨论】:

          • 这很不错,但是将 1000 多台电视换成自己定制的...不太方便
          猜你喜欢
          • 1970-01-01
          • 2014-10-17
          • 2017-11-01
          • 2013-03-14
          • 2019-08-22
          • 1970-01-01
          • 1970-01-01
          • 2017-03-15
          相关资源
          最近更新 更多