你如何导入字体?

Com*_*cus 8 java fonts awt

我想知道如何导入字体.

我正在尝试使用自定义下载的字体,但由于大多数计算机将运行此字体,因此它不是默认字体.即使他们没有字体,我怎样才能使字体工作?

我正在将它用于游戏画面,需要用它显示乐谱,并希望乐谱文本是相同的字体.这是图像,

在此输入图像描述

如果重要,我的电脑上的字体名称是 Terminal

编辑:我假设它必须在java文件的目录中有字体,并有一些方法使用它,但我不知道如何.或者,还有更好的方法?

编辑2:我找到了一个很好的教程,如何做到这一点,但需要一些帮助我如何使用这个... 点击我的链接

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);
Run Code Online (Sandbox Code Playgroud)

错误信息

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
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试的:

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);
Run Code Online (Sandbox Code Playgroud)

Edit4:

File fontfile = new File("TexasLED.ttf");
File.toURI(fontfile).toURL(fontfile);
URL fontUrl = new URL("fontfile");
Run Code Online (Sandbox Code Playgroud)

错误

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

And*_*son 13

'Airacobra Condensed'字体可从下载免费字体.

注册字体

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));
    }
}
Run Code Online (Sandbox Code Playgroud)

好的,这很有趣,但这个字体实际上是什么样的?

显示字体

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @eee(叹气)关于从网上加载"字体"的观点是......不是重点,因为它不是我所建议的.热链接到'Font`的行为仅仅是为了创建一个SSCCE**.你有一个*更好的方法来演示在'SC'(自包含)的代码中加载自定义`Font`吗?就个人而言,我将Jar中的`Font`包含在应用程序的运行时类路径中. (2认同)
  • @ ylun.za*"任何想法为什么?"*提供失败的[MCVE](http://stackoverflow.com/help/mcve)(最小完整和可验证示例).*"..有没有其他网站可以使用这种方法?"*从来没有打算'真实世界'的应用程序通过热链接到互联网网站获得他们的字体!下载字体并将其包含在其中一个应用程序库中. (2认同)