在android中使用外部字体

我想在我的应用程序中使用外部字体。 我曾尝试使用资产经理添加新的字体,但没有奏效。

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

但没有显示文字…

plz帮助..

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


更新:显然,OpenType现在被支持,至less有点。 它最初并不支持,所以你会想要testing你的字体在任何版本的Android应用程序将支持。

为了方便地访问我们的字体,我们需要将它与我们的应用程序捆绑在一起,以便我们的代码随后加载它。 为此,我们直接在资产中创build一个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); 

Android不支持OTF(我不知道是从哪个SDK版本开始的,但是它确实可以在1.6版本中使用),我使用打字机的OTF字体已经有一段时间了,但是渲染速度远不及TTF版本的精确度。通过在线字体转换器)。 基准全是这个地方(一些字母比其他字体高出了2个像素),而在像HTC Wildfire这样的LDPI手机上,由于像素较大,问题被大大放大了。

我遇到了同样的问题。 我的字体不是在Android工作,但我需要它的工作。 使用字体编辑器,我将字体从我的字体复制到Android-src-2_1的FontSampler示例中。 它工作完美。

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

Android支持otf和ttf格式,我经历了他们两个。

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

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

使用Fontinator它支持展台OTF和TTF字体

这是一个Android库使得使用自定义字体变得容易。

https://github.com/svendvd/Fontinator

您可以使用简单的EasyFonts第三方库来为您的TextView设置各种自定义字体。 通过使用这个库,您不必担心下载并将字体添加到assets / fonts文件夹中。 还有关于字体对象的创build。

它提供了以下字体。

  • 的Roboto
  • Droid Serif
  • 机器人机器人
  • 自由
  • 有趣的提升者
  • Android国家
  • 绿色鳄梨
  • 承认

只是:

 TextView myTextView = (TextView)findViewById(R.id.myTextView); myTextView.setTypeface(EasyFonts.robotoThin(this));