假设一个字体Kalpurush.ttf(你可能会发现这个字体here)。因为它是一个阿萨姆语字体,可能没有安装在每个人的计算机上,所以,我已经在我的网站中嵌入了这个字体。它在任何浏览器中都可以正常显示(除了android webview。我对android没有任何头痛)。事实上,我从未发现任何阿萨姆语字体如此美妙。
现在我在Java Swing应用程序中尝试过相同的字体。我写过这堂课:
public class AssameseFont {
public AssameseFont(){}
public Font Assamese(){
File file = new File("kalpurush.ttf");
Font as = null;
try{
FileInputStream input = new FileInputStream(file);
as = Font.createFont(Font.TRUETYPE_FONT, file);
as = as.deriveFont(Font.PLAIN, 18);
GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(as);
}
catch(FontFormatException | IOException e){
JOptionPane.showMessageDialog(null, ""+e);
}
return as;
}
}
我用setFont()
方法在我的组件中调用它。
但是我的一些文字并没有显示出来。 为什么会这样?这是字体问题吗?或者我在java代码中做错了什么?
答案 0 :(得分:2)
因为它是一个阿萨姆语字体,可能没有安装在每个人的计算机上,所以,我已经在我的网站中嵌入了这个字体。 ..
File file = new File("kalpurush.ttf");
该文件将指向 用户的 计算机上的(不存在的)文件。
必须由URL
访问字体。
链接线程上看到的代码,但带有kalpurush.ttf
字体。
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://assameseonline.com/css/kalpurush.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);
}
}