如何在 Java 中使用 Helvetica?
Helvetica 在 Windows、Mac OS X 和 Linux 上以一种或另一种形式提供。 在Windows下,我可以从Microsoft Word中看到它。 在两个UNIX平台上,我都可以用xlsfonts | 找到它 grep -i 黑体; 这个名字似乎是 adobe-helvetica。
但是JDK找不到啊! 它没有从 GraphicsEnvironment.getAllFonts() 中列出,当我调用 new Font("Helvetica", ...) [使用多个名称变体,例如“Adobe Helvetica”]时也不会出现它; 相反,我默认为“Dialog”字体,并且似乎用我使用的任何名称来命名它。
目前,该字体可在所有相关的 Java 目标平台上使用。 如何在 Java 中使用它?
Helvetica is available in one form or another on Windows, Mac OS X, and Linux. Under Windows, I can see it from Microsoft Word. On the two UNIX platforms, I can find it with xlsfonts | grep -i helvetica; the name seems to be adobe-helvetica.
But the JDK can't find it! It's not listed from GraphicsEnvironment.getAllFonts(), nor does it come up when I call new Font("Helvetica", ...) [using several name variants, either, like "Adobe Helvetica"]; instead I get defaulted to "Dialog" font and it seems to name it with whatever name I used.
This font is available on every relevant Java target platform today. How do I use it from within Java?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
其中“Helvetica”是字体,Font.PLAIN 定义样式,10 定义大小。 当然,它必须安装才能工作,并且您可以使用 CreateFont() 捆绑它。
尝试使用 Java API for Fonts更多参考。
where "Helvetica" is the font, Font.PLAIN defines the style, and 10 defines the size. Of course it must be installed to work, and you can bundle it using CreateFont().
Try the Java API for Fonts for more reference.
我意识到这实际上并没有回答问题,但是......
在 Windows 上,并不总是安装 Helvetica。 我的工作机器(我现在使用的机器)没有,尽管安装了 Microsoft Office XP。
I realize that this isn't actually answering the question, but...
On Windows, Helvetica isn't always installed. My machine at work (the one I'm using now) doesn't, despite having Microsoft Office XP.
安装 TrueType 字体通常非常简单。 我的项目使用 Maven,因此我只需将字体文件保存在资源目录中并使用类加载器获取它。
该字体应该加载到内存中,以便在应用程序的其他地方使用字体名称使用。 您可以使用下面的代码来确保此操作有效,并查看您的系统上可以使用哪些字体。
Installing TrueType fonts is usually pretty straightforward. I use maven for my project so I just keep the font file in my resources directory and grab it using a class loader.
That font should be loaded into memory to be used elsewhere in the app using the font name. You can make sure this worked and see what fonts are available to you on your system by using the code below.
官方规定,唯一保证 Java 附带的字体是 Lucida fronts(Bright、Sans 和 Typewriter)。 根据 Java 的安装和配置,它可能能够从计算机的字体目录中读取前面的内容,但这并不能保证。
如果必须是 Helvetica,您可以将字体与 Font.CreateFont() 捆绑在一起,传入表示类型的 int(Font.BOLD 或 Font.PLAIN 等),以及 TrueType 字体的 InputStream。
Oficially, the only fonts guaranteed to come with Java are the Lucida fronts (Bright, Sans, and Typewriter). Depending on the install and configuration of Java, it may be able to read the front from your machine's font directory, but that's not guaranteed.
If it has to be Helvetica, you can bundle the font with Font.CreateFont(), passing in an int representing the type (Font.BOLD, or Font.PLAIN, etc), and an InputStream to the TrueType font.
在 Linux 上,jre 或 jdk 目录中的某个位置有一个 font.properties 文件,您应该能够向其中添加新字体,但我尝试了无数种不同的方法来向其中添加字体,甚至是那些操作系统已知并显示在 xlsfonts 中,但从未使其工作。
On Linux, there is a font.properties file somewhere in the jre or jdk directory that you're supposed to be able to add new fonts to, but I've tried a bazillion different things to add fonts to it, even ones that are known to the OS and show up in xlsfonts, and never gotten it to work.
我认为如果你将字体文件放在 src 文件夹中并从那里调用它,它就会起作用。
I think if you put the the font file in your src folder and call it from there it will work.