Javafx字体派生为粗体

时间:2016-11-20 12:19:02

标签: java javafx fonts javafx-8

我想为我的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]

1 个答案:

答案 0 :(得分:0)

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

对于每种流行的字体(包括系统,当你调用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