如何在JavaFX中通过CSS设置自定义字体?

6

我已经在项目的src/main/resources文件夹中添加了一个自定义字体(RobotoMono.ttf),然后我尝试从我的CSS文件中加载它,如下所示:

@font-face {
    font-family: 'RobotoMono';
    src: url('RobotoMono.ttf');
}

但是当我尝试将字体设置为其他样式时,它不起作用:
.column-header-label {
    -fx-label-padding: 0;
    -fx-text-overrun: clip;
    -fx-font-family: 'RobotoMono';
}

如果我将字体设置为系统上存在的字体,我可以看到字体变化,但是我包含的字体不起作用。

我做错了什么?


是否有任何错误信息被产生? - Boris
不,我只是没有看到使用Roboto Mono字体。 - Hexworks
3个回答

6
在你的CSS中,你需要使用一个带有URL的font-face来指定字体。然后,在你的CSS元素中,你需要使用ttf文件中的字体名称,而不是字体文件本身的名称。例如,如果你在Windows中打开ttf文件,你会看到“Roboto Mono”。
@font-face {
    src: url('RobotoMono.ttf');
}

.column-header-label {
    -fx-label-padding: 0;
    -fx-text-overrun: clip;
    -fx-font-family: 'Roboto Mono';
}

4
提醒大家,为了让@font-face被识别,它应该在CSS中首先出现!请注意。 - smac89

2
你使用src属性声明了字体存在的位置:
src: url('RobotoMono.ttf');

这是一条指示,要在与CSS文件相同的文件夹中查找RobotoMono.ttf。如果您使用Maven创建了JavaFX应用程序,则样式文件应位于src/main/resources/styles中。因此,请确保项目的文件夹结构如下:

Projects folder structure


1

只需将字体添加到您的Java构建路径库中即可,例如在Eclipse中,您需要右键单击项目->属性->Java构建路径->添加JAR文件,然后添加您的ttf字体。 完成此操作后,您只需要在CSS中添加以下行

-fx-font-family: 'name of the font you have added to library without .tff';

请确保您的TTF字体文件在项目文件夹内。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接