2009-09-15 78 views
57

我想在我的應用程序中使用外部字體。我曾嘗試使用AssetManager添加新的fonts,但它不起作用。下面是我的代碼:在Android中使用外部字體

Typeface face; 

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

textview.setTypeface(face); 

,但它不是顯示文本...

請在這方面幫助我。

+1

..to整齊,你可以在資產/ fonts文件夾和訪問 字樣臉上的字體; face = Typeface.createFromAsset(getAssets(),「fonts /」+「font.otf」); textview.setTypeface(face); – 2017-05-31 00:09:58

回答

63

AFAIK,Android不支持OpenType。改爲使用TrueType字體。


UPDATE:顯然OpenType字體現在支持,至少在某種程度上。它最初並未得到支持,因此您需要在您的應用將支持的任何版本的Android上徹底測試您的字體。

+0

所以你說我在正確的方向..我只需要使用ttf文件,而不是otf ??? – mudit 2009-09-18 08:16:20

+2

是的。鑑於你的代碼,你需要你的字體在你的資產/目錄的根目錄下,但是如果沒有兼容的字體,它應該沒問題。 – CommonsWare 2009-09-18 11:51:44

+0

錯誤消息指示模擬器與adb或Eclipse之間的通信困難 - 它與字體無關。下載http://commonsware.com/Android/Android-src-2_1.zip,你會發現一個顯示加載TrueType字體的Android項目。另外請注意,現在Android 1.6似乎可讓您從APK外部加載字體(例如,您可以單獨下載)。 – CommonsWare 2009-09-21 16:55:26

1

我遇到了同樣的問題。我的字體不能在android中工作,但我需要它的工作。使用字體編輯器,我將字體從我的字體複製到Android-src-2_1的FontSampler示例附帶的字體中。它工作完美。

雖然我承認我的方法從知識產權的角度來看是有問題的,但實際上我並沒有使用原始字體,因爲所有字符都被替換了,並且所有對舊字體的引用都被替換爲好。我曾試着「查看」這兩種字體的定義方式,但是使所有的字體變量匹配也沒有效果。所以在ned中,我使用原始字體的骨架作爲新字體的模板。

9

Android不支持OTF(我不知道從哪個SDK版本開始,但它肯定適用於1.6版本),我在打字機OTF字體中使用了一段時間,但渲染遠沒有TTF版本I那麼精確最終使用(通過在線字體轉換器)。基準線遍佈全球(有些字母比其他字體高出2個像素),在像HTC Wildfire這樣的LDPI手機上,由於像素較大,問題大大增加。

12

爲了方便地訪問我們的字體,我們需要將它與我們的應用程序捆綁在一起,以便我們的代碼隨後加載它。要做到這一點,我們在你的.java類

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

的Android創造我們的資產直接

一個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> 

寫下面的代碼支持otf和ttf格式,我經歷了他們兩人。

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

這是我用英語和當地語言

1

使用Fontinator它支持展臺OTF和TTF字體步驟

這是一個Android庫可以很容易,使用自定義字體。

https://github.com/svendvd/Fontinator

+0

這很不錯,但是將1000多臺電視換成了他們自己定製的電視...不太方便 – 2017-04-27 11:18:18

-3

您可以使用簡單的EasyFonts第三方庫,以各種自定義字體的設置爲您TextView。通過使用這個庫,您不必擔心下載並將字體添加到assets/fonts文件夾中。還有關於字體對象的創建。

它提供了以下字體。

  • 的Roboto
  • Droid的襯線
  • Droid的機器人
  • 自由
  • 樂趣雷塞
  • 的Android國家
  • 綠色鱷梨
  • 識別

簡單:

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