我正在尝试将
-fx-font-weight: 300
与 ubuntu 字体一起使用。我的系统中有 ubuntu 常规字体和 ubuntu 浅色字体:
但是,当我运行这个程序时:
public class FontTest extends Application {
@Override
public void start(Stage primaryStage) {
var label1 = new Label("ABCDE abcde");
label1.setStyle("-fx-font-size:18px;-fx-font-family: 'Ubuntu';-fx-font-weight: normal;");
var label2 = new Label("ABCDE abcde");
label2.setStyle("-fx-font-size:18px;-fx-font-family: 'Ubuntu';-fx-font-weight: 300;");
Scene scene = new Scene(new VBox(label1, label2), 400, 200);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
我得到这个结果:
如您所见,两个标签具有相同的字体。谁能告诉我如何让JavaFX使用浅色字体吗?
有时可以通过指定不同的
-fx-font-family
而不是 -fx-font-weight
来选择字体粗细。
这可能取决于字体类型和可用的字体系列。 对于某些字体和字体类型,可以为单个字体系列配置各种字体粗细。 但对于某些字体,仅使用字体粗细属性无法获得所需的配置。
要查找可用的已安装字体,您可以使用:
javafx.scene.text.Font.getFamilies();
正如提问者在评论中指出的,在提问者的系统上,返回:
Ubuntu, Ubuntu Condensed, Ubuntu Light, Ubuntu Mono, Ubuntu Thin
使用正常字体粗细配置字体系列会得到轻量级字体:
-fx-font-family: 'Ubuntu Light';
-fx-font-weight: normal;
类似的问题和解决方案,但针对的是网络字体而不是安装的字体,可以在以下位置找到:
在该问题中,网络字体在其查找 URL 中指定了粗细 (
700
):
selection.family=Noto+Sans+SC:700
但是,匹配的安装字体具有家族名称中指定的粗细(
Bold
):
-fx-font-family: "Noto Sans SC Bold";