![为什么我运行的 Java 应用程序中的字体在 Mac OS X 和 Windows 中看起来不同?](https://linux22.com/image/1231641/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E8%BF%90%E8%A1%8C%E7%9A%84%20Java%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E4%B8%AD%E7%9A%84%E5%AD%97%E4%BD%93%E5%9C%A8%20Mac%20OS%20X%20%E5%92%8C%20Windows%20%E4%B8%AD%E7%9C%8B%E8%B5%B7%E6%9D%A5%E4%B8%8D%E5%90%8C%EF%BC%9F.png)
它们看起来不应该一模一样吗?还是 Java 没有自己的字体?它只是将字体名称映射到 OS 字体吗?
答案1
Java 通常使用系统字体,就像其他程序一样。根据规范:“Java 2 平台的所有实现都必须支持 TrueType 字体;对其他字体技术的支持取决于实现。”(Javadocsjava.awt.font)。
有一个问题:由于 Java 程序无法提前知道目标平台上有哪些字体可用,因此存在“逻辑字体名称”(“serif”、“monospaced”等)。这些在 Java 中始终可用;Java 运行时会将这些伪字体名称映射到系统上的适当字体。
此映射是可配置的。请参阅http://java.sun.com/j2se/1.5.0/docs/guide/intl/fontconfig.html。
我怀疑有问题的 Java 应用程序使用了这些逻辑字体名称,它们只是映射到 Windows 和 Mac OS 上的不同字体。
答案2
最近你会看到“警告:字体“Times”不可用,因此已替换为“Lucida Bright”,但可能会出现意外的外观或行为。重新启用“Times”字体以删除此警告。”因此,由于此更改,你可以设置不同的字体