2009-09-15 13 views
57

Ich möchte externe Schriftarten in meiner App verwenden. Ich habe versucht, neue fonts mit AssetManager hinzufügen, aber es hat nicht funktioniert. Unten ist mein Code:Verwenden Sie externe Schriftarten in Android

Typeface face; 

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

textview.setTypeface(face); 

aber es ist nicht der Text zeigt ...

Bitte helfen Sie mir mit diesem.

+1

..um ordentlich sein, das Sie Schriftart Gesicht die Schriftarten in assets/Fonts-Ordner und darauf zugreifen können; face = Typeface.createFromAsset (getAssets(), "fonts /" + "font.otf"); textview.setTypeface (Gesicht); –

Antwort

63

AFAIK, Android unterstützt OpenType nicht. Verwenden Sie stattdessen eine TrueType-Schriftart.


UPDATE: Anscheinend Opentype wird nun unterstützt, zumindest etwas. Es wurde ursprünglich nicht unterstützt. Daher sollten Sie Ihre Schriftart gründlich testen, unabhängig davon, welche Android-Versionen Ihre App unterstützt.

+0

so sagen Sie, dass ich in der richtigen Richtung bin .. ich brauche nur TTF-Datei anstelle von otf ??? – mudit

+2

Ja. Wenn Sie Ihren Code verwenden, müssen Sie Ihre Schriftart im Stammverzeichnis Ihres Assets/Verzeichnisses haben, aber ansonsten sollte es mit einer kompatiblen Schriftart in Ordnung sein. – CommonsWare

+0

Die Fehlermeldung zeigt einige Kommunikationsschwierigkeiten zwischen Ihrem Emulator und entweder adb oder Eclipse an - es hat nichts mit Schriften zu tun. Laden Sie http://commonsware.com/Android/Android-src-2_1.zip herunter, und Sie werden ein Android-Projekt finden, das das Laden einer TrueType-Schriftart anzeigt. Beachten Sie außerdem, dass Android 1.6 jetzt die Möglichkeit bietet, Schriften von außerhalb des APKs zu laden (z. B. eines, das Sie separat herunterladen). – CommonsWare

1

Ich hatte das gleiche Problem. Meine Schriftart funktionierte auch nicht in Android, aber ich brauchte es, um zu arbeiten. Mit einem Font-Editor habe ich die Zeichen aus meiner Schriftart in die Schriftart kopiert, die im FontSampler-Beispiel von Android-src-2_1 enthalten ist. Es hat perfekt funktioniert.

Während ich zugeben werde, dass meine Methode aus Sicht des geistigen Eigentums fragwürdig war, habe ich nicht wirklich die ursprüngliche Schriftart verwendet, da alle Zeichen ersetzt wurden und alle Verweise auf die alte Schriftart ersetzt wurden Gut. Ich habe versucht, die Art und Weise zu untersuchen, wie die beiden Schriftarten definiert wurden, aber die Übereinstimmung aller Zeichensatzvariablen funktionierte auch nicht. Also habe ich im ned ein Skelett der ursprünglichen Schriftart als Vorlage für die neue Schriftart verwendet.

9

Android unterstützt OTF (ich bin mir nicht sicher, von welcher SDK Version es aber definitiv mit 1.6 funktioniert), ich benutzte eine Schreibmaschine OTF Schriftart für eine Weile, aber das Rendering ist nicht annähernd so genau wie mit der TTF Version I endete mit (über Online-Font-Konverter). Die Grundlinie war überall (einige Buchstaben waren ganze 2 Pixel höher als andere), und auf LDPI-Handys wie dem HTC Wildfire wird das Problem aufgrund der größeren Pixel stark vergrößert.

12

Um einfach auf unsere Schriftart zugreifen zu können, müssen wir sie so mit unserer Anwendung bündeln, dass unser Code sie anschließend laden kann. Dazu erstellen wir einen Ordner Schriftarten in unserer Assets direkt

Dies kann Ihre .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> 

schreiben folgenden Code in Ihre .java Klasse

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

android sein unterstützt beide otf und ttf-formate, ich habe beide erlebt.

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

dies ist der Schritt i für beide Englisch und lokale Sprachen

1

Verwenden Fontinator es OTF und TTF Schriften

unterstützen Stand

Es ist eine Android-Bibliothek machen es einfach verwendet, benutzerdefinierte Schriftarten verwenden .

https://github.com/svendvd/Fontinator

+0

Es ist ziemlich gut, aber 1000 TVs zu ihren eigenen benutzerdefinierten ändern ... nicht zu praktisch –

-3

Sie können mit einfachen EasyFonts Dritten Bibliothek Vielzahl von benutzerdefinierten Schriftarten zu Ihrem TextView einzustellen.Wenn Sie diese Bibliothek verwenden, sollten Sie sich keine Gedanken darüber machen müssen, ob Sie Schriftarten in den Ordner "Assets/Schriftarten" herunterladen und hinzufügen. Auch über die Erstellung von Schriftbildobjekten.

Es bietet folgende Schriftarten.

  • Roboto
  • Droid Serif
  • Droid Roboter
  • Freiheit
  • Fun Raiser
  • Android Nation
  • Grüne Avocado
  • Recognition

einfach:

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