你如何导入一个字体?
我想知道如何去导入字体。
我试图使用自定义下载的字体,但由于大多数计算机将运行此不会有这种字体,因为它不是一个默认的字体。 即使他们没有字体,我怎样才能使字体工作?
我正在使用它作为游戏画面,并且需要用它来显示分数,并且希望分数文本是相同的字体。 这是形象,
万一它在我的电脑上的字体名称是Terminal
编辑:我假设它将不得不在java文件的目录中的字体,会有一些使用的方式,但我不知道如何。 还是有更好的办法?
编辑2:我已经find了一个很好的教程,如何做到这一点,但需要一些帮助,我怎么去使用这个… 点击我的链接
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)
下载免费字体 “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)); } }
好吧,那很有趣,但是这个字体实际上是什么样的?
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); } }
您可以使用GraphicsEnvironment.registerFont
有了这个你可以从一个.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; }
我已经解决了我自己的问题。 我已经做好了
URL fontUrl = new URL("file:///F:/Computer_Science/TexasLED.ttf");
这指向字体,为我工作!
您也可以使用embedded在应用程序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())); }