我有一个使用 FontAwesome 图标的 JavaFX,我想使用新版本 5。 但它似乎不再起作用了。
这是一个用 Groovy 编写的简单演示应用程序,可以与旧的 FontAwesome 版本一起使用:
import javafx.application.Application
import javafx.scene.Scene
import javafx.scene.control.Label
import javafx.scene.layout.VBox
import javafx.scene.text.Font
import javafx.stage.Stage
class App extends Application {
static final String PENCIL = "\uf040"
@Override
void start(Stage primaryStage) throws Exception {
def root = new VBox(10)
root.children.with {
add new Label('My icon')
add new Label(PENCIL).with {
it.style = '-fx-font-family: FontAwesome;' +
'-fx-font-size: 24px;' +
'-fx-text-fill: red'
it
}
}
def scene = new Scene(root, 600, 600)
primaryStage.with {
it.scene = scene
it.title = "FontAwesome Demo"
centerOnScreen()
show()
}
}
static void main(String[] args) {
Font.loadFont( App.getResource(
// "/fa-regular-400.ttf" /* version 5 */
"/fontawesome-webfont.ttf" /* old version (not sure which) */
).toExternalForm(), 12 )
launch(App, args)
}
}
使用旧的字体文件,它可以工作:
升级后:
upgrading to version 5 上的文档除了字体系列从 FontAwesome
更改为 Font Awesome 5 Free
之外,似乎没有提及任何其他内容,但更改不会解决问题。
注意:我的实际应用是用 Java 编写的,这里仅以 Groovy 为例,但问题是一样的。
最佳答案
我终于让它工作了。除了更改字体系列之外,您还必须为 JavaFX 使用正确的字体文件,因为它们分发的大多数选项似乎都不起作用...
此外,他们还更改了图标的名称(很好,对吧?)as shown in the upgrading docs , 所以你必须一一更新。
在 Web 发行版中,只有名为 xx-solid-900.xx
的字体文件有效。 woff
和 tiff
扩展似乎都有效,但 woff2
无效。
我还尝试了桌面发行版,它有更大的文件,只有 Font Awesome 5 Free-Solid-900.otf
有效。
这是我在上面的应用程序中显示的版本 5 中找到的笔图标 (unicode f303
):
更锐利!!
供引用,最终源码:
import javafx.application.Application
import javafx.scene.Scene
import javafx.scene.control.Label
import javafx.scene.layout.VBox
import javafx.scene.text.Font
import javafx.stage.Stage
class App extends Application {
static final String PENCIL = "\uf303"
@Override
void start(Stage primaryStage) throws Exception {
def root = new VBox(10)
root.children.with {
add new Label('My icon')
add new Label(PENCIL).with {
it.style = '-fx-font-family: "Font Awesome 5 Free";' +
'-fx-font-size: 24px;' +
'-fx-text-fill: red'
it
}
}
def scene = new Scene(root, 100, 140)
primaryStage.with {
it.scene = scene
it.title = "FontAwesome Demo"
centerOnScreen()
show()
}
}
static void main(String[] args) {
Font.loadFont(App.getResource("/fa-solid-900.woff").toExternalForm(), 12)
launch(App, args)
}
}
关于javafx - 如何在 JavaFX 中将 FontAwesome 升级到版本 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59974248/