【问题标题】:Default Fonts in JavaJava 中的默认字体
【发布时间】:2010-11-17 02:01:42
【问题描述】:

我有一些 Swing 代码(在 1.6 中为 1.6 编写)专门将文本区域中的字体设置为 Courier,但在某些 Windows 系统上,这显示为 Arial(系统默认值?)。这是否意味着系统中缺少字体?当 Java 找不到它正在寻找的字体时,它的行为是什么?它抱怨吗?它会在某处记录吗?它是否立即诉诸使用系统默认值? JVM 的 1.4/1.5/1.6 版本之间的行为是否不同?

有没有其他人遇到过这种情况?我很惊讶有一些不同于我硬编码到应用程序中的东西出现在 UI 中 - 并且仅在某些系统上。核心问题是我需要针对这种特殊情况使用等宽字体样式,而 Arial 不是等宽字体。如果找不到某种字体,是否有某种方法可以指定后备?比如:

如果字体可用,请使用“Courier” 否则使用“等宽”

???

【问题讨论】:

    标签: java windows fonts


    【解决方案1】:

    您应该首先检查“Courier”是否在GraphicsEnvironment.getAvailableFontFamilyNames()的结果中

    我不知道 Java 中有任何用于“if-unavailable-fallback-to”行为的内置机制。

    【讨论】:

    • 如果任何 Windows 系统上都缺少 Courier,我会感到非常惊讶。
    【解决方案2】:

    根据这篇文章1,微软提供的唯一等宽 TrueType 字体是 Courier New 和 Lucida Sans Typewriter。

    【讨论】:

      【解决方案3】:

      它可能希望您为 Courier 指定“Courier New”。我没有Windows系统,所以无法验证。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-27
        • 1970-01-01
        • 2018-01-17
        • 2016-04-10
        • 1970-01-01
        • 2012-03-09
        相关资源
        最近更新 更多