我用Java编写了一个程序,它使用一种特殊的字体,默认情况下在任何操作系统上都不存在.
在Java中是否可以将这种特殊字体添加到操作系统中?例如,在Windows中,将此字体复制到特殊的Fonts文件夹.
如果有可能,怎么样?
Cᴏʀ*_*ᴏʀʏ 48
如果您在您的包的字体文件(OTF,TTF等),您可以通过这里所描述的方法在应用程序中使用的字体:
Oracle Java SE 6:java.awt.Font
try {
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File("A.ttf")));
} catch (IOException|FontFormatException e) {
//Handle exception
}
Run Code Online (Sandbox Code Playgroud)
我可能会在某种资源加载器中将其包装起来,但是每次要使用它时都不会从包中重新加载文件.
与原始问题更密切相关的答案是将字体安装为应用程序安装过程的一部分.该过程取决于您选择的安装方法.如果它不是桌面应用程序,您将不得不查看提供的链接.
Flo*_*tej 12
我是这样做的!
//create the font
try {
//create the font to use. Specify the size!
Font customFont = Font.createFont(Font.TRUETYPE_FONT, new File("Fonts\\custom_font.ttf")).deriveFont(12f);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
//register the font
ge.registerFont(customFont);
} catch (IOException e) {
e.printStackTrace();
} catch(FontFormatException e) {
e.printStackTrace();
}
//use the font
yourSwingComponent.setFont(customFont);
Run Code Online (Sandbox Code Playgroud)
在Java教程中,您需要创建一个新字体并在图形环境中注册它:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File("A.ttf")));
Run Code Online (Sandbox Code Playgroud)
完成此步骤后,字体在调用时可用getAvailableFontFamilyNames()
,并可在字体构造函数中使用.
如果你想使用font2d或类似的字体绘制,这适用:
InputStream stream = ClassLoader.getSystemClassLoader().getResourceAsStream("roboto-bold.ttf")
Font font = Font.createFont(Font.TRUETYPE_FONT, stream).deriveFont(48f)
Run Code Online (Sandbox Code Playgroud)