我想为我的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]
答案 0 :(得分:0)
您需要加载另一个字体文件,该文件将提供适当的姿势或重量。
对于每种流行的字体(包括系统,当你调用Font.font(null, 25)
时使用的),系统中有几个字体文件:一个用于常规,一个用于斜体,一个用于粗体等。
例如,对于Times New Roman,我的Fonts文件夹中有四个文件: