2015-02-28 4 views
5

In Java können wir ein Font-Objekt als solches erstellen:Anfahrts Liste der Font-Namen von Java

new Font("Helvetica", Font.PLAIN, 12); 

Meine Frage ist, wie wir die gesamte Liste der Font-Namen von Java, zum Beispiel „Helvetica erhalten "Was können wir als ein Argument für den Font-Konstruktor verwenden?

Ich habe Folgendes versucht, aber ich kann "Helvetica" nicht in allen Listen finden.

GraphicsEnvironment ge; 
    ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 

    String[] names = ge.getAvailableFontFamilyNames(); 
    Font[] allFonts = ge.getAllFonts(); 

    for(int x=0; x<names.length; x++) 
     System.out.println(names[x]); 

    for(int x=0; x<allFonts.length; x++){   
     System.out.println(allFonts[x].getName()); 
     System.out.println(allFonts[x].getFontName()); 
     System.out.println(allFonts[x].getFamily()); 
     System.out.println(allFonts[x].getPSName()); 
    } 

Edit: Noch wichtiger ist, ich möchte auch wissen, was das erste Attribut Aufruf in Font-Konstruktor ist new Font("What attribute is this?", Font.PLAIN, 12)

Q: Ist es ein Schriftname, Familie, Fontface, Namen oder Was?

+1

Sie Ausgang zur Verfügung stellen kann? In meinem Fall sehe ich mehr als 10 Strings enthält 'Helivetica' Wort. –

+0

@maxd Ich hoffe, ich könnte, wie das für Sie alle nützlich sein wird, aber mein Ausgang ist zu lang. über 3000 Zeilen Schriften. – user3437460

+0

Gleich hinter gist.github.com oder pastebin.com –

Antwort

3

auf Ihrem System, dass Schrift gut, um etwas anderes

Font helvetica = new Font("Helvetica", Font.PLAIN, 12); 
System.out.println(helvetica.getFontName(Locale.US)); 

und ich

erhalten abgebildet werden können die Namen aller lokalen Schriftarten, könnten Sie so etwas wie

SansSerif.plain 

Zur Ausgabe verwenden

GraphicsEnvironment ge = GraphicsEnvironment 
     .getLocalGraphicsEnvironment(); 

Font[] allFonts = ge.getAllFonts(); 

for (Font font : allFonts) { 
    System.out.println(font.getFontName(Locale.US)); 
} 
+0

@ElliotFrisch Danke für Ihre Hilfe, aber ich sehe es immer noch nicht in meiner Schriftenliste. Was ist die "Helvetica", nach der ich suche? Ist es font fontName, family, fontFace oder font oder name? Wenn ich das weiß, kann ich wissen, welche Methode verwendet werden soll, um die Liste der erlaubten Zeichenketten zu erhalten, um den Font-Konstruktor zu füllen. Vielen Dank! – user3437460

+1

Es ist der Name der Schriftart, und es beginnt mit einem Großbuchstaben und es ist möglicherweise nicht auf Ihrem System verfügbar (es ist nicht auf meinem). –

+0

Vielen Dank für Ihre Rückkehr. Also kann ich einfach 'allFonts [x] .getFontName()'? Ich war verwirrt, weil die API nur "name" statt "fontName" erwähnte. – user3437460

1
new Font("Helvetica", Font.PLAIN, 12); 

In diesem Fall ist es besser, etwas zu verwenden, wie:

new Font(Font.SANS_SERIF, Font.PLAIN, 12); 

dass die undecorated Font standardmäßig auf diesem Betriebssystem verwendet wird, produzieren.

Unter Windows wäre es Arial. Auf OS X wäre es Helvetica. Auf * nix-Maschinen kann es entweder sein, oder eine dritte undekorierte Font.


In Antwort auf Ihre Frage habe ich immer gefunden, die ‚Schriftfamilie‘ Zeichenfolge für das Erstellen einer Instanz der Schrift nützlich zu sein.

+0

Als beiseite. Es wäre hilfreich, wenn Sie herausfinden würden, welches Betriebssystem Sie verwenden. –

0

Ich weiß, das ist eine alte Frage, aber es gibt einige unbeantwortete Fragen.

Noch wichtiger ist, ich möchte auch wissen, was der Anruf in Font-Konstruktor neue Font erste Attribut ist („Was-Attribut ist das?“, Font.PLAIN, 12) F: Ist es ein Schriftname, Familie, Fontface , Name oder was?

Wenn Sie die Java-Klasse mit einem IDE-decompile (Ich verwende IntelliJ), werden Sie sehen:

public Font(String name, int style, int size) { 
    this.name = (name != null) ? name : "Default"; 
    this.style = (style & ~0x03) == 0 ? style : 0; 
    this.size = size; 
    this.pointSize = size; 
} 
public String getName() { 
     return name; 
    } 
public String getFontName() { 
    return getFontName(Locale.getDefault()); 
} 

Dies sagt Ihnen, dass der Name, den Sie verwenden, wenn Sie den Konstruktor aufrufen können abgerufen werden getName, aber ein Aufruf von getFontName wird Ihren Standardtext zurückgeben. Deshalb können Sie Helvetica den Namen geben, dann getFontName aufrufen und etwas anderes als Helvetica zurückgeben.

0

dieses Programm zeigt Ihnen die Liste aller Schriftarten in Ihrem System:

import java.awt.GraphicsEnvironment; 

public class ListJavaFonts 
{ 

    public static void main(String[] args) 
    { 
    String fonts[] = 
     GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); 

    for (int i = 0; i < fonts.length; i++) 
    { 
     System.out.println(fonts[i]); 
    } 
    } 

}