【问题标题】:Javafx font derive boldJavafx 字体派生粗体
【发布时间】:2017-04-03 21:21:01
【问题描述】:

我想为我的 javafx 应用程序动态更改(加载的)文本字体,所以我做了以下代码:

Font font = Font.loadFont(Fonts.class.getClassLoader().getResource("path/font.woff").toExternalForm(), 25);
Font bold = Font.font(font.getFamily(), FontWeight.BOLD, font.getSize());
Font italic = Font.font(font.getFamily(), FontPosture.ITALIC, font.getSize());
Font boldItalic = Font.font(font.getFamily(), FontWeight.BOLD, FontPosture.ITALIC, font.getSize());

但是当我尝试将文本字体更改为粗体或斜体时,没有任何变化,而且我似乎没有找到类似 java.awt.Font#deriveFont 中的方法,您可以在其中从另一种字体派生斜体或粗体.
应用字体的代码:

public void applyFont(javafx.scene.text.Text text) {
    text.setFont(font);
}

编辑:更多日志:
我放了一些日志,说明他得到了什么字体并打印 Font#toString() 结果:

getFont(bold=false, italic=false) -> Font[name=<Name> Regular, family=<Name>, style=Regular, size=25.0]
getFont(bold=true, italic=false) -> Font[name=<Name> Regular, family=<Name>, style=Regular, size=25.0]
getFont(bold=false, italic=true) -> Font[name=<Name> Regular, family=<Name>, style=Regular, size=25.0]
getFont(bold=true, italic=true) -> Font[name=<Name> Regular, family=<Name>, style=Regular, size=25.0]

但是如果我将字体加载中的第一行代码替换为

font = Font.font(null, 25);//get the system's default font

它有效,我得到这个输出:

getFont(bold=false, italic=false) -> Font[name=System Regular, family=System, style=Regular, size=25.0]
getFont(bold=true, italic=false) -> Font[name=System Bold, family=System, style=Bold, size=25.0]
getFont(bold=false, italic=true) -> Font[name=System Italic, family=System, style=Italic, size=25.0]
getFont(bold=true, italic=true) -> Font[name=System Bold Italic, family=System, style=Bold Italic, size=25.0]

【问题讨论】:

  • 您应用字体的代码似乎总是使用从资源加载的字体。为什么你认为它会有所不同?
  • 该代码只是为了展示我是如何应用它的,在实际应用中是这样的:“text.setFont(Fonts.getFont(bold, italic));”其中 Fonts.getFont(bool bld, bool itlc) 是这样的:“return bld ? (itlc ? boldItalic : bold) : itlc ? italic : font;”

标签: java javafx fonts javafx-8


【解决方案1】:

您需要加载另一个字体文件,该文件将提供适当的姿势或重量。

对于每一种流行字体(包括系统,当您调用Font.font(null, 25) 时使用),系统中有几个字体文件:一个用于常规字体,一个用于斜体,一个用于粗体等。

例如,对于 Times New Roman,我的 Fonts 文件夹中有四个文件:

  • Times New Roman Bold Italic.ttf
  • Times New Roman Bold.ttf
  • Times New Roman Italic.ttf
  • Times New Roman.ttf

【讨论】:

    猜你喜欢
    • 2011-08-21
    • 1970-01-01
    • 2017-01-20
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    相关资源
    最近更新 更多