并非所有(Sun)JDK都可以看到TTF字体
我想在IntelliJ中使用Monaco.ttf。 不幸的是它没有出现。
我还注意到摩纳哥字体没有出现在从awt获得的字体列表中:
java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()
我在/ usr / share / fonts / truetype / osx中安装了Monaco.ttf
我也尝试将它复制到/usr/lib/jvm/java-6-sun/jre/lib/fonts
,甚至尝试手动更新/usr/lib/jvm/java-6-sun/jre/lib/fonts/fonts.dir
文件
我在每次尝试时重新启动了jvm,但是从sun jdk看不到字体。
所有其他应用程序都看到该字体(甚至eclipse,它在java中但使用SWT库)
有谁知道如何使jdk看到其他字体?
问题在于Monaco字体本身,它似乎没有适当的元数据并且是一个hacky端口,因此Java无法识别它。 您可以找到这个TTF文件的其他版本,它可以更好地工作或尝试使用FontForge自行修复它。
另请参阅 IntelliJ IDEA问题跟踪器中的我的评论 。
您需要按此顺序运行mkfontscale
和mkfontdir
实用程序,以便更新fonts.dir文件。
从终端输入/usr/lib/jvm/java-6-sun/jre/lib/fonts
目录并运行
sudo mkfontscale sudo mkfontdir
mkfontscale
创建fonts.scale文件, mkfontdir
可以使用它创建fonts.dir
。
更新字体缓存
sudo fc-cache -f -v
你试过打电话:
java.awt.GraphicsEnvironment.getAllFonts()
似乎Java字体系统有点搞砸了:
http://www.sabi.co.uk/Notes/linuxFonts.html#fontSwJava
您可能需要解决查找字体的问题。 但是如果eclipse可以看到字体,那么你的应用程序就没有理由不能。 您甚至可以选择查看eclipse代码以了解它们是如何完成的。
http://java.sun.com/products/java-media/2D/reference/faqs/#Font_and_Text_questions