Wie importiert man eine Schriftart?

Lesezeit: 5 Minuten

Benutzer-Avatar
ComputerLocus

Ich frage mich, wie Sie vorgehen würden importieren eine Schriftart.

Ich versuche, eine benutzerdefinierte heruntergeladene Schriftart zu verwenden, aber da die meisten Computer, auf denen dies ausgeführt werden würde, diese Schriftart nicht haben würden, da es sich nicht um eine Standardschriftart handelt. Wie würde ich vorgehen, damit die Schriftart funktioniert, auch wenn sie die Schriftart nicht haben?

Ich verwende es für einen Gameover-Bildschirm und muss damit eine Punktzahl anzeigen und möchte, dass der Punktzahltext dieselbe Schriftart hat. Das ist das Bild,

Geben Sie hier die Bildbeschreibung ein

Falls es darauf ankommt, ist der Name der Schriftart auf meinem Computer Terminal

Bearbeiten: Ich gehe davon aus, dass sich die Schriftart im Verzeichnis der Java-Datei befinden müsste, und es gäbe eine Möglichkeit, das zu verwenden, aber ich bin mir nicht sicher, wie. Oder gibt es einen besseren Weg?

Edit2: Ich habe ein nettes Tutorial gefunden, wie es geht, brauche aber Hilfe, wie ich damit umgehe … Klicken Sie mich für den Link

Edit3:

URL fontUrl = new URL("http://www.webpagepublicity.com/" + "free-fonts/a/Airacobra%20Condensed.ttf");
Font font = Font.createFont(Font.TRUETYPE_FONT, fontUrl.openStream());
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(font);
g.setFont(font);

Fehlermeldung

File: F:\Computer Science\draw.java  [line: 252]
Error: F:\Computer Science\draw.java:252: font is not public in java.awt.Component; cannot be accessed from outside package

Hier ist, was ich versuche:

URL fontUrl = new URL("http://img.dafont.com/dl/?f=badaboom_bb");
Font font = Font.createFont(Font.TRUETYPE_FONT, fontUrl.openStream());
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(font);
g.setFont(font);

Edit4:

File fontfile = new File("TexasLED.ttf");
File.toURI(fontfile).toURL(fontfile);
URL fontUrl = new URL("fontfile");

Fehler

Error: F:\Computer Science\draw.java:250: toURI() in java.io.File cannot be applied to (java.io.File)

  • Wie beabsichtigen Sie, Ihr Spiel zu verteilen: Java Web Start oder plattformspezifisches natives OS-Installationsprogramm?

    – Ecle

    3. Dezember 2011 um 1:38 Uhr


  • Wenn der Schriftartname nicht gefunden wird, versucht OS, den Namen zu finden, der ihm am nächsten ist. Es wird genannt Font-Ersetzung

    – Ecle

    3. Dezember 2011 um 1:45 Uhr


  • @eee Dies wird vorerst von einem Compiler ausgeführt. Es ist für ein Schulprojekt. Und ich möchte nicht, dass die Schrift ersetzt wird, sonst sieht sie hässlich aus.

    – ComputerLocus

    3. Dezember 2011 um 1:47 Uhr

  • @eee Mit a File ist eine kurzsichtige Antwort auf eine kurzsichtige Frage. Das Font ist effektiv eine Anwendungsressource, sollte also Jar’d sein und über eine URL aufgerufen werden (und diese in eine InputStream für den Einsatz in der createFont() Methode).

    – Andrew Thompson

    3. Dezember 2011 um 2:00 Uhr

  • @Fogest Illegales Escape-Zeichen, hmm … du musst es so einstellen "F:\\Computer Science\\Texas LED.ttf" auf Java.

    – Ecle

    3. Dezember 2011 um 9:34 Uhr

Benutzer-Avatar
Andreas Thompson

‘Airacobra Condensed’-Schriftart verfügbar unter Kostenlose Schriftarten herunterladen.

Registrierte Schriftart

import java.awt.*;
import javax.swing.*;
import java.net.URL;

class LoadFont {
    public static void main(String[] args) throws Exception {
        // This font is < 35Kb.
        URL fontUrl = new URL("http://www.webpagepublicity.com/" +
            "free-fonts/a/Airacobra%20Condensed.ttf");
        Font font = Font.createFont(Font.TRUETYPE_FONT, fontUrl.openStream());
        GraphicsEnvironment ge = 
            GraphicsEnvironment.getLocalGraphicsEnvironment();
        ge.registerFont(font);
        JList fonts = new JList( ge.getAvailableFontFamilyNames() );
        JOptionPane.showMessageDialog(null, new JScrollPane(fonts));
    }
}

OK, das hat Spaß gemacht, aber wie sieht diese Schriftart eigentlich aus?

Schriftart anzeigen

import java.awt.*;
import javax.swing.*;
import java.net.URL;

class DisplayFont {
    public static void main(String[] args) throws Exception {
        URL fontUrl = new URL("http://www.webpagepublicity.com/" +
            "free-fonts/a/Airacobra%20Condensed.ttf");
        Font font = Font.createFont(Font.TRUETYPE_FONT, fontUrl.openStream());
        font = font.deriveFont(Font.PLAIN,20);
        GraphicsEnvironment ge =
            GraphicsEnvironment.getLocalGraphicsEnvironment();
        ge.registerFont(font);

        JLabel l = new JLabel(
            "The quick brown fox jumps over the lazy dog. 0123456789");
        l.setFont(font);
        JOptionPane.showMessageDialog(null, l);
    }
}

  • Ich habe versucht, dies zu verwenden: URL fontUrl = new URL("http://www.webpagepublicity.com/" + "free-fonts/a/Airacobra%20Condensed.ttf"); Font font = Font.createFont(Font.TRUETYPE_FONT, fontUrl.openStream()); GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); ge.registerFont(font); }catch(Exception e) { } g.setFont(font); Ich habe diesen Fehler: font cannot be accessed from outside package

    – ComputerLocus

    3. Dezember 2011 um 2:54 Uhr

  • @AndrewThompson Es wäre schön, einen Fallback-Mechanismus zu entwickeln, nur für den Fall, dass der Benutzer die Schriftart nicht aus dem Internet laden kann, insbesondere wenn die Schriftart keine gute Systemschriftart hat, um sie zu ersetzen.

    – Ecle

    3. Dezember 2011 um 9:30 Uhr

  • @eee (seufz) Der Punkt zum Laden von a Font aus dem Netz ist .. nicht der Punkt, da es nicht das ist, was ich vorschlage. Der Vorgang des Hot-Linkings zu a Font war nur zu Erstellen Sie ein SSCCE. Hast du ein besser Möglichkeit, das Laden eines benutzerdefinierten zu demonstrieren Font in einem Code, der ‘SC’ (in sich geschlossen) ist? Ich persönlich würde die einschließen Font in einem Jar, das dem Laufzeit-Klassenpfad der App hinzugefügt wird.

    – Andrew Thompson

    3. Dezember 2011 um 10:26 Uhr


  • @ylun.za “Irgendwelche Ideen warum?” Geben Sie ein MCVE (Minimal Complete and Verifiable Example) an, das fehlschlägt. “..gibt es noch andere Websites, mit denen diese Methode verwendet werden kann?” Es war nie beabsichtigt, dass „echte“ Apps ihre Schriftarten durch Hot-Links zu einer Internetseite erhalten! Laden Sie die Schriftart herunter und binden Sie sie in eines der Anwendungs-Jars ein.

    – Andrew Thompson

    9. April 2014 um 23:19 Uhr


  • @ylun.za Ich werde diese Site nicht nach der von Ihnen erwähnten Schriftart durchsuchen. Wenn Sie möchten, dass ich es versuche, posten Sie ein MCVE, wie ich es getan habe.

    – Andrew Thompson

    10. April 2014 um 0:33 Uhr

  • @Mr.Pallazzo Übrigens – Entschuldigung, dass ich Ihre Antwort entführt habe. Ich fühle, dass es so sein sollte dein Antwort, die das Häkchen bekommt. Ich habe Ihren Vorschlag gerade in ein SSCCE (oder 2, mit hübschen Screenshots) umgewandelt.

    – Andrew Thompson

    3. Dezember 2011 um 10:31 Uhr

Sie können auch Schriftarten verwenden, die in Ihre Anwendungs-JAR-Datei eingebettet sind. Ich nutze diese Funktion seit vielen Jahren, um Schriftarten in meine Projekte zu laden.

public Font getFont(String fileName) throws Exception {
    String path = "/xyz/isururanawaka/wb/fonts/" + fileName;
    URL url = getClass().getResource(path);
    return Font.createFont(Font.TRUETYPE_FONT, new File(url.toURI()));
}

1006620cookie-checkWie importiert man eine Schriftart?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy