JavaFX CSS 字体系列未应用于 Xubuntu 16.04 中的标签控件

     2023-03-06     302

关键词:

【中文标题】JavaFX CSS 字体系列未应用于 Xubuntu 16.04 中的标签控件【英文标题】:JavaFX CSS font family doesn't get applied on Label control in Xubuntu 16.04 【发布时间】:2020-01-07 16:51:44 【问题描述】:

问题

大家好,我已经设置了以下 JavaFX CSS 来处理 Label 控件以显示我的计算器应用程序的总和。

.label-sumtotal 
  -fx-font-family: "Noto Sans CJK SC Bold", Arial, sans-serif;
  -fx-text-fill: color-crimson;
  -fx-font-size: 32pt;
  -fx-font-weight: bold;

这是它在 Windows 和 Xubuntu 14.04

上的正确显示方式

这就是它在 Xubuntu 16.04

上的外观错误


到目前为止我在 Xubuntu 16.04 上测试过的内容

我更改为 Xubuntu 16.04 包含的另一个字体系列, 然而Label 仍然没有改变它的字体系列,也没有改变它的 字体粗细。

但是当我将控件从 Label 更改为 Text 而不触摸 任何 CSS 代码,然后以某种方式识别字体系列并 已申请。


我的问题

如何让Label 控件在Xubuntu 16.04 上显示字体系列?我不想使用Text 控件,因为它没有Label 那样的某些格式化功能。

【问题讨论】:

JavaFX CSS reference guide 声明:“JavaFX CSS 不支持 -fx-font-family 属性中以逗号分隔的字体系列名称。不支持指定字体时的可选行高参数。” .因此,也许尝试这样做会使系统感到困惑。 另外,color-crimson 不是有效颜色,它应该只是 crimson 至于深红色,我已经在 CSS 中声明它像这样color-crimson: #dc143c;。因此我可以在 CSS 的其他部分重用color-crimson 至于“-fx-font-family 属性中以逗号分隔的字体系列名称”,我删除了其他字体,只保留了一个。然而仍然没有任何改进。我想知道 JavaFX 是如何以及在哪里获得其默认字体系列的,也许默认值已经不断覆盖我的。 运行这个:System.out.println(String.join("\n", Font.getFamilies())); 找出可用的字体系列,如果你想明确知道它是如何确定这些的,请阅读 JavaFX 源代码(据我所知,它没有在任何地方记录和实现将取决于平台)。 【参考方案1】:

我没有 Ubuntu 系统,但您可以尝试以下使用从 Web 加载的 Noto Sans SC Bold 字体(在 Mac 上适用于我)来设置标签样式。我在 Mac 上的输出与您说在 Windows 和 Xubunto 14.04 上正确的输出相同。

Noto Sans SC Bold 的 Google 网络字体参考:

https://fonts.google.com/?query=noto+sans+sc&selection.family=Noto+Sans+SC:700

解决方案是从 Google 加载网络字体,而不是依赖应用或操作系统预先打包的字体。

从网页加载的字体版本指定为Noto+Sans+SC:700,所以字体已经加粗了,所以我没有在css中指定粗体,而是指定了一个" -fx-font-family 的 Noto Sans SC Bold" 值。您仍然可以拥有-fx-font-weight: bold;,然后您可能最终会使用双粗体字体,一次来自字体本身,然后再次来自粗细设置。在这种情况下,我必须在家族中使用“粗体”一词,否则将找不到它(这与 Google 在标准 HTML CSS 中使用网络字体的说明相反,它不需要“粗体”以名称)。

您还可以从 Google 下载字体为 .ttc 文件,并使用以下指定的解决方案从本地资源加载字体:

How to embed .ttf fonts is JavaFx 2.2?

但是,我运行的 JavaFX 版本早于该功能所需的最低版本 9,因此我没有尝试使用嵌入字体。

我知道,很可能,您的未正确显示字体的 Xubuntu 系统必须已经在某个地方拥有它(否则在使用 Text 而不是 Label 时它将无法正确显示字体)。但是,在您描述的情况下,我不知道如何让它正确地为标签选择本地操作系统字体,这就是为什么我建议尝试使用 webfont 或嵌入字体。

示例 CSS

.label-sumtotal 
    -fx-font-family: "Noto Sans SC Bold";
    -fx-text-fill: crimson;
    -fx-font-size: 32pt;

网页字体示例应用

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class NotoFontApp extends Application 

    @Override
    public void start(Stage stage) throws Exception 
        Label label = new Label("5,40\u20AC");
        label.getStyleClass().add("label-sumtotal");

        Pane layout = new StackPane(label);
        layout.setPadding(new Insets(10));
        Scene scene = new Scene(layout);
        scene.getStylesheets().add(
                NotoFontApp.class.getResource("font.css").toURI().toURL().toExternalForm()
        );
        scene.getStylesheets().add(
                "https://fonts.googleapis.com/css?family=Noto+Sans+SC:700&display=swap"
        );

        stage.setScene(scene);
        stage.show();
    

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

【讨论】:

您周到而全面的回答给我留下了深刻的印象。我将尝试按照您的建议将其用作 webfont 并回复我的结果。嵌入字体是毫无疑问的,因为它会使我已经很大的应用程序 (150MB) 的大小再增加 10%。

自定义字体未显示在字体系列列表中

】自定义字体未显示在字体系列列表中【英文标题】:CustomFontsnotshowingonfontfamilylist【发布时间】:2020-06-1014:16:10【问题描述】:我在macOSCatalina上使用Swift5和Xcode11.4.1。直到今天,我在应用自定义字体时都没有遇到任何问题。我... 查看详情

R Shiny 服务器未呈现正确的 ggplot 字体系列

】RShiny服务器未呈现正确的ggplot字体系列【英文标题】:RShinyservernotrenderingcorrectggplotfontfamily【发布时间】:2015-10-2920:19:14【问题描述】:我正在尝试将漂亮的字体应用于在Shiny应用程序中呈现的ggplot。使用family="[fontname]"在RStudio... 查看详情

未使用字体系列 Open Sans

】未使用字体系列OpenSans【英文标题】:FontFamilyOpenSansnotbeingused【发布时间】:2014-05-1910:30:12【问题描述】:我在我的应用程序中使用Google\'sOpenSansFont。我已经按照说明定义了样式表:<linkhref=\'http://fonts.googleapis.com/css?family=Open... 查看详情

如何将全局字体应用于整个 HTML 文档

】如何将全局字体应用于整个HTML文档【英文标题】:HowtoApplyglobalfonttowholeHTMLdocument【发布时间】:2011-10-2422:36:03【问题描述】:我有一个包含一些文本和格式的HTML页面。我想让它具有相同的字体系列和相同的文本大小,忽略文... 查看详情

CSS字体系列不适用于IE11

】CSS字体系列不适用于IE11【英文标题】:CSSfontfamilynotworkingForIE11【发布时间】:2018-06-0917:16:12【问题描述】:我有一个IE11浏览器的问题,它只适用于代码sn-p,它适用于Chrome和Firefox,但相同的字体在IE11中不起作用。.auction-bidspan... 查看详情

如何将 lower_bound 应用于一系列未排序的向量元素?

】如何将lower_bound应用于一系列未排序的向量元素?【英文标题】:Howdoiapplylower_boundtoarangeofunsortedvectorelements?【发布时间】:2020-10-0106:54:49【问题描述】:我有一个整数向量scores=10,23,29,77,8,43,56,3连同一个号码predict=42和startindex=2... 查看详情

未应用字体未引发错误

】未应用字体未引发错误【英文标题】:typefacenotappliednoerrorthrown【发布时间】:2016-08-2715:18:12【问题描述】:我尝试将字体应用于textviews和editTexts,但字体静默失败,日志中没有错误或异常。字体没有变化,显示android默认字体... 查看详情

设置 JavaFX TableView 单元格的字体颜色?

】设置JavaFXTableView单元格的字体颜色?【英文标题】:SettingfontcolorofJavaFXTableViewCells?【发布时间】:2011-10-2308:03:38【问题描述】:在我的Java桌面应用程序中,我有一个包含3列的JavaFX表。我想将第三列的字体颜色设置为红色。我... 查看详情

字体在 HTML 页面中未正确显示

】字体在HTML页面中未正确显示【英文标题】:FontnotshowingproperlyinHTMLpage【发布时间】:2015-12-1304:13:28【问题描述】:我正在使用两种字体系列,1.“Opensans”2.Colvetica。我正面临这些字体的这种问题。1)我在CSS文件中使用像这样的... 查看详情

CSS 样式未应用于 Gtk 小部件

】CSS样式未应用于Gtk小部件【英文标题】:CSSstylesarenotbeingappliedonaGtkwidget【发布时间】:2021-03-2516:54:20【问题描述】:***上的另一个用户在使用CSS设计Gtk应用程序时遇到了一些问题。我找到了部分问题的解决方案,但对于一个我... 查看详情

使用 CSS 将单个字体应用于整个网站

】使用CSS将单个字体应用于整个网站【英文标题】:ApplyingasinglefonttoanentirewebsitewithCSS【发布时间】:2012-04-1923:11:48【问题描述】:我想在整个网站上使用一种名为“Algerian”的字体。因此,我需要更改所有HTML标签,并且我不想... 查看详情

iOS 10:CSS 样式未应用于类更改

】iOS10:CSS样式未应用于类更改【英文标题】:iOS10:CSSstylesnotbeingappliedonclasschange【发布时间】:2017-03-0905:55:45【问题描述】:我正在使用ionic和angular创建适用于Android和iOS的应用程序。在android上一切正常。iOS是问题(当然)。我... 查看详情

CSS 优先规则未正确应用于输入框的宽度

】CSS优先规则未正确应用于输入框的宽度【英文标题】:CSSPrecedenceRulesarenotbeingappliedproperlyontheWidthofaninputbox【发布时间】:2014-01-2505:32:42【问题描述】:我对输入框的CSS优先级有疑问。正在应用96%的宽度,而根据优先规则应应用... 查看详情

css字体

CSS字体有几下几类:字体系列、字体风格、字体大小、字体粗细、字体变量1.字体系列一般软件都会自带常规字体,如宋体、微软雅黑等...通常在输入代码时,要多些几个字体,如果浏览器没有找到第一个字体,则会往后找,直... 查看详情

Netbeans 未正确执行 JavaFX 应用程序

】Netbeans未正确执行JavaFX应用程序【英文标题】:NetbeansnotexecutingJavaFXapplicationproperly【发布时间】:2015-11-1023:42:12【问题描述】:我开始在Netbeans上使用javaFX应用程序并尝试示例代码。我面临的问题是,当我从Netbeans运行代码时,... 查看详情

CSS 未应用于部署在 IIS 上的 ASP.NET MVC 应用程序

】CSS未应用于部署在IIS上的ASP.NETMVC应用程序【英文标题】:CSSnotbeingappliedforASP.NETMVCappdeployedonIIS【发布时间】:2014-07-2219:01:06【问题描述】:Environment:VisualStudio2013ASP.NETMVC5Windows8.1(bothdevanddeploymentserver)我的应用程序使用localhost在V... 查看详情

CSS 未应用于未经身份验证的 ASP.NET 页面

】CSS未应用于未经身份验证的ASP.NET页面【英文标题】:CSSnotbeingappliedonnonauthenticatedASP.NETpage【发布时间】:2010-09-0812:12:17【问题描述】:在开发(实时运行)时,我们网站的页面在用户通过身份验证(登录)之前不会选择正确的... 查看详情

Nativescript Angular Lifecycle 挂钩未将 css 类应用于动态组件

】NativescriptAngularLifecycle挂钩未将css类应用于动态组件【英文标题】:NativescriptAngularLifecyclehooksnotapplyingcssclassestodynamiccomponents【发布时间】:2019-10-2610:25:24【问题描述】:当组件被动态添加到页面时,从类继承的样式信息不会在... 查看详情