【问题标题】:How do I use Helvetica in Java?如何在 Java 中使用 Helvetica?
【发布时间】:2009-03-31 01:43:13
【问题描述】:

Helvetica 在 Windows、Mac OS X 和 Linux 上以一种或另一种形式提供。在 Windows 下,我可以从 Microsoft Word 中看到它。在两个 UNIX 平台上,我可以用 xlsfonts | 找到它。 grep -i helvetica;这个名字似乎是 adobe-helvetica。

但是JDK找不到!它没有从 GraphicsEnvironment.getAllFonts() 中列出,也没有在我调用 new Font("Helvetica", ...) [使用多个名称变体,例如 "Adobe Helvetica"] 时出现;相反,我默认为“Dialog”字体,它似乎用我使用的任何名称命名。

这种字体目前在每个相关的 Java 目标平台上都可用。如何在 Java 中使用它?

【问题讨论】:

标签: java fonts


【解决方案1】:
Font f = new Font("Helvetica", Font.PLAIN, 10);  // make a new font object

ObjectName.setFont(f); // set the objects font using setFont();

其中“Helvetica”是字体,Font.PLAIN 定义样式,10 定义大小。当然它必须安装才能工作,你可以使用 CreateFont() 来捆绑它。

尝试Java API for Fonts 以获得更多参考。

【讨论】:

  • 如问题中所述,当我进行 new Font() 调用时,我没有得到字体。
  • 那么你必须使用 Font.CreateFont() 并将它与你的应用程序捆绑在一起
【解决方案2】:

安装 TrueType 字体通常非常简单。我的项目使用 maven,所以我只是将字体文件保存在资源目录中并使用类加载器获取它。

InputStream is = MyClass.class.getClassLoader().getResourceAsStream("my/package/Avenir.ttf");
Font f = Font.createFont(Font.TRUETYPE_FONT, is);
is.close();

该字体应加载到内存中,以便使用字体名称在应用程序的其他地方使用。您可以使用下面的代码确保这有效,并查看您的系统上可以使用哪些字体。

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] fontNames = ge.getAvailableFontFamilyNames();

for(String name : fontNames)
    System.out.println(name);

【讨论】:

  • 当您使用 Font.createFont() 创建字体时,我 98% 确定 getAvailableFontFamilyNames() 没有新创建的字体可用。
  • @skiphoppy 你是对的,但这就是GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(Font f) 的用途。
【解决方案3】:

我意识到这实际上并没有回答问题,但是......

在 Windows 上,并不总是安装 Helvetica。尽管有 Microsoft Office XP,但我的工作机器(我现在正在使用的机器)却没有。

【讨论】:

  • 微软使用 Arial,这几乎是一个重新调整的 Helvetica
  • Arial 与 Helvetica 有很大的不同,对于那些关心这些事情的人来说,它是一个不可接受的替代品。当你搜索“Helvetica”时,它肯定不会被自动选中。
  • 并评论答案,而不是评论评论 - Helvetica 在 Windows 机器上可能非常罕见,尤其是对于开发人员而言。它从未与任何 Microsoft 产品捆绑在一起:microsoft.com/typography/fonts/default.aspx
【解决方案4】:

在 Linux 上,在 jre 或 jdk 目录中的某处有一个 font.properties 文件,您应该能够向其中添加新字体,但我已经尝试了无数种不同的方法来添加字体,甚至那些为操作系统所知并出现在 xlsfonts 中但从未让它工作的字体。

【讨论】:

  • 是的,我今天早上花了一些时间。我希望我可以在 JDK 之外制作自己的本地 font.properties 文件。但即使是 java.home 中的那个似乎也不起作用。无论如何,我在某处读到此文件在 Windows 上不受支持。
【解决方案5】:

正式地,Java 中唯一保证附带的字体是 Lucida fronts(Bright、Sans 和 Typewriter)。根据 Java 的安装和配置,它可能能够从您机器的字体目录中读取前面,但不能保证。

如果必须是 Helvetica,您可以将字体与 Font.CreateFont() 捆绑在一起,将一个表示类型(Font.BOLD 或 Font.PLAIN 等)的 int 和一个 InputStream 传递给 TrueType 字体。

【讨论】:

    【解决方案6】:

    我认为如果你把字体文件放在你的 src 文件夹中并从那里调用它会起作用。

    【讨论】:

      猜你喜欢
      • 2011-08-02
      • 1970-01-01
      • 2018-05-13
      • 2012-08-17
      • 2012-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-12
      相关资源
      最近更新 更多