gpt4 book ai didi

css - 如何在 JavaFX 中使用后备字体?

转载 作者:行者123 更新时间:2023-12-05 07:04:25 25 4
gpt4 key购买 nike

对于我目前正在使用 JavaFX 进行的元素,我希望用户能够输入可以包含多种语言的 Deck 的名称(例如日本语 N4 Vocab)。

为了能够正确显示多种语言的字体,我尝试在堆栈中的文本字段的 css 中指定多种字体,如下所示:

.text-field {
-fx-font-family: "Work Sans", "Noto Sans JP";
}

但我意识到 JavaFX 不支持 -fx-font-family 属性中以逗号分隔的一系列字体系列名称。

所以我有几个问题:

  1. 使用上述后备字体是否是支持为 Label/TextField 使用多种字体的正确方法?
  2. 如果是,我该如何绕过这个限制来实现这个功能。
  3. 如果不是,我还应该做些什么来改进 JavaFX 中多语言字符串的呈现?

更新 |这是我尝试过的:

@font-face {
src: url('WorkSans-Regular.ttf');
}

@font-face {
src: url('WorkSans-Bold.ttf');
}

@font-face {
src: url('NotoSans-Regular.ttf');
}

.text-area {
-fx-font-size: 30;
-fx-font-family: 'Work Sans';
-fx-font-weight: bold;
}

这是当输入不支持的字符时 TextArea 显示的内容:

TextArea with unsupported characters

最佳答案

来自JavaFX CSS reference :

JavaFX CSS does not support comma-separated series of font family names in the -fx-font-family property. The optional line height parameter when specifying fonts is not supported. There is no equivalent for the font-variant property.

可能的解决方法:

  1. 在您的 CSS 中:您可以使用@font-face 定义和使用多种字体。
@font-face {
src: url("../fonts/Roboto-Medium.ttf");
}

.my-text {
-fx-font-family: roboto;
}

  1. 在您的代码中:您可以检查/使用 Font.loadFont() 或 Font.font()。

更新:添加字体代码

我的演示代码:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class HelloFX extends Application {

@Override
public void start(Stage stage) {
TextArea ta = new TextArea();

VBox vbox = new VBox(ta);
Scene scene = new Scene(vbox, 640, 480);
scene.getStylesheets().add("style.css");
stage.setScene(scene);
stage.setTitle("JavaFX App");
stage.show();

}

public static void main(String[] args) {
launch();
}
}

样式.css

@font-face {
src: url("fonts/WorkSans-Regular.ttf");
}

@font-face {
src: url("fonts/NotoSans-Regular.ttf");
}

.text-area {
-fx-font-size: 30;
-fx-font-family: 'Work Sans';
-fx-font-weight: bold;
}

我在 macOS Mojave 上的屏幕截图:

enter image description here

也许您的操作系统中没有不同语言的字体。尝试在您的操作系统中安装字体。

更新 2:添加了演示代码。

关于css - 如何在 JavaFX 中使用后备字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62934939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com