作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于我目前正在使用 JavaFX 进行的元素,我希望用户能够输入可以包含多种语言的 Deck 的名称(例如日本语 N4 Vocab)。
为了能够正确显示多种语言的字体,我尝试在堆栈中的文本字段的 css 中指定多种字体,如下所示:
.text-field {
-fx-font-family: "Work Sans", "Noto Sans JP";
}
但我意识到 JavaFX 不支持 -fx-font-family 属性中以逗号分隔的一系列字体系列名称。
所以我有几个问题:
更新 |这是我尝试过的:
@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 显示的内容:
最佳答案
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.
可能的解决方法:
@font-face {
src: url("../fonts/Roboto-Medium.ttf");
}
.my-text {
-fx-font-family: roboto;
}
更新:添加字体代码
我的演示代码:
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 上的屏幕截图:
也许您的操作系统中没有不同语言的字体。尝试在您的操作系统中安装字体。
更新 2:添加了演示代码。
关于css - 如何在 JavaFX 中使用后备字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62934939/
我是一名优秀的程序员,十分优秀!