2
我想dinamically改變(加載)文本字體爲我的JavaFX應用程序,所以我做了這個代碼: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);
}
編輯:更多日誌:
我把一些日誌,說什麼字體被他拿走,並打印字體#的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]
應用字體的代碼似乎總是使用字體,因爲它是從資源加載的。你爲什麼期望它有所不同? – fabian
該代碼僅用於展示我如何應用它,在實際應用中它是這樣的:「text.setFont(Fonts.getFont(bold,italic));」其中Fonts.getFont(bool bld,bool itlc)是這樣的:「return bld?(itlc?boldItalic:bold):itlc?italic:font;」 – SnowyCoder