如何让JavaFX使用ubuntu light字体?

问题描述 投票:0回答:1

我正在尝试将

-fx-font-weight: 300
与 ubuntu 字体一起使用。我的系统中有 ubuntu 常规字体和 ubuntu 浅色字体:

enter image description here enter image description here

但是,当我运行这个程序时:

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);
    }
}

我得到这个结果:

enter image description here

如您所见,两个标签具有相同的字体。谁能告诉我如何让JavaFX使用浅色字体吗?

java javafx javafx-css
1个回答
0
投票

有时可以通过指定不同的

-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";
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.