Как вы импортируете шрифт? - PullRequest
8 голосов
/ 03 декабря 2011

Мне интересно, как вы будете импортировать шрифт.

Я пытаюсь использовать пользовательский загруженный шрифт, но так как большинство компьютеров, которые будут работать, не будутиметь этот шрифт, так как он не является шрифтом по умолчанию.Как бы я сделал так, чтобы шрифт работал, даже если у них нет шрифта?

Я использую его для экрана перехода на другой план, и мне нужно отобразить с ним счет и хочу, чтобы текст счета былтот же шрифтЭто изображение,

enter image description here

В случае, если значение на моем компьютере имеет значение Terminal

Редактировать: я предполагаю, что это должно будету меня есть шрифт в каталоге Java-файла, и есть какой-то способ его использования, но я не уверен, как это сделать.Или есть лучший способ?

Edit2: я нашел хороший учебник о том, как это сделать, но мне нужна помощь, как мне использовать это ... нажмите меня для ссылки

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);

Сообщение об ошибке

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

Вот что я пытаюсь:

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");

Ошибка

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

Ответы [ 4 ]

13 голосов
/ 03 декабря 2011

Шрифт Airacobra Condensed доступен с Скачать бесплатные шрифты .

Registered Font

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));
    }
}

ОК, это было весело, но как на самом деле выглядит этот шрифт?

Display Font

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);
    }
}
4 голосов
/ 03 декабря 2011

Вы можете использовать GraphicsEnvironment.registerFont

http://docs.oracle.com/javase/6/docs/api/java/awt/GraphicsEnvironment.html#registerFont(java.awt.Font)

С этим вы можете загрузить шрифт из файла .ttf:

private static final Font SERIF_FONT = new Font("serif", Font.PLAIN, 24);

private static Font getFont(String name) {
    Font font = null;
    if (name == null) {
        return SERIF_FONT;
    }

    try {
        // load from a cache map, if exists
        if (fonts != null && (font = fonts.get(name)) != null) {
            return font;
        }
        String fName = Params.get().getFontPath() + name;
        File fontFile = new File(fName);
        font = Font.createFont(Font.TRUETYPE_FONT, fontFile);
        GraphicsEnvironment ge = GraphicsEnvironment
                .getLocalGraphicsEnvironment();

        ge.registerFont(font);

        fonts.put(name, font);
    } catch (Exception ex) {
        log.info(name + " not loaded.  Using serif font.");
        font = SERIF_FONT;
    }
    return font;
}
2 голосов
/ 05 декабря 2011

Я решил свою проблему. Я сделал

URL fontUrl = new URL("file:///F:/Computer_Science/TexasLED.ttf");

Это указывает на шрифт и работает для меня!

0 голосов
/ 04 октября 2016

Вы также можете использовать шрифты, встроенные в jar-файл приложения. Я много лет использовал эту функцию для загрузки шрифтов в мои проекты.

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()));
}
...