【问题标题】:Howto embed font variants in JavaFX如何在 JavaFX 中嵌入字体变体
【发布时间】:2015-07-16 17:24:51
【问题描述】:

我需要在带有一些变体(粗体、斜体等)的 JavaFX 项目中嵌入本地 .ttf 文件,但 css 解析器似乎不支持 @font-face 声明中的字体属性:

@font-face {
    font-family: 'Open Sans', sans-serif;
    src: url('fonts/OpenSans-Regular.ttf');
}
@font-face {
    font-family: 'Open Sans', sans-serif;
    src: url('fonts/OpenSans-Bold.ttf');
    font-weight: bold;
}
@font-face {
    font-family: 'Open Sans', sans-serif;
    src: url('fonts/OpenSans-ExtraBoldItalic.ttf');
    font-style: italic;
}

警告:CSS 解析错误 jar:file:/home/test/dist/run736633436/test.jar!/it/test/vending/css/application.css: Unexpected TOKEN [:] at [8,15] mag 06, 2015 3:40:15 PM com.sun.javafx.css.parser.CSSParser fontFace 警告:CSS 错误 解析 jar:file:/home/test/dist/run736633436/test.jar!/it/test/vending/css/application.css: [13,14] 处意外的 TOKEN [:]

我怎样才能做到这一点?

==编辑==


请注意,解析器会抱怨 font-weight: bold;font-style: italic; 规则。

【问题讨论】:

  • font-family 应该具有您要在所有 css 文件中使用的字体系列的名称。您要使用的字体系列应该具有唯一的名称,例如 OpenSansRegularOpenSansBoldOpenSansBoldItalic。虽然我不确定这是否正是问题所在,因为您的 CSS 错误并没有说明太多,但值得一试。
  • @ItachiUchiha 不,定义不同的系列并不重要:解析器仍然抱怨 font-weight: bold;font-style: italic;乙>。使用多个具有不同字体属性的相同字体系列实际上是正确的;请参阅w3schools - 至少谈到 css3。

标签: css javafx javafx-8


【解决方案1】:

我想我找到了解决办法。尝试将font-weightfont-style 属性与src 属性交换。在您的情况下,您的 css 看起来像:

@font-face {
    font-family: 'Open Sans', sans-serif;
    src: url('fonts/OpenSans-Regular.ttf');
}
@font-face {
    font-family: 'Open Sans', sans-serif;
    font-weight: bold;
    src: url('fonts/OpenSans-Bold.ttf');
}
@font-face {
    font-family: 'Open Sans', sans-serif;
    font-style: italic;
    src: url('fonts/OpenSans-ExtraBoldItalic.ttf');
}

我遇到了同样的问题,交换属性就可以了。我不知道为什么会这样,但它似乎解决了这个问题。

【讨论】:

    猜你喜欢
    • 2019-03-15
    • 2013-05-27
    • 1970-01-01
    • 2020-07-29
    • 2015-07-26
    • 2011-02-28
    • 2013-03-17
    • 2023-04-04
    相关资源
    最近更新 更多