JavaFX自定义字体在某些操作系统

时间:2018-06-07 21:33:20

标签: java css javafx fxml

我制作了一款为某款纸牌游戏制作卡片的软件。 我暂时没有修改代码,因为它始终正常工作。 然而,最近有人在Windows 7中使用它并且他遇到了一些问题(我只在Windows 10上测试过该程序) 现在我在Mac上测试它也存在一些问题。

该程序使用一些自定义字体(.ttf文件),但它们并未显示它们应如何在Windows 7和MacOS中执行。 在窗口7中没有显示,但是如果我按下按钮然后我拖动它,则显示符号,在某些情况下,符号显示悬停时(按钮没有自定义onDrag功能或悬停设置) 在MacOS中,自定义字体中的某些字符未显示。

(测试使用java 8u172完成)

How should it Look (Windows 10 64 bits)

How it actually looks in Windows 7 SP1, 64-bit

How it actually looks in MacOS High Sierra 10.13.5

This is how the generated card looks like, regardless of the OS

我真的不知道为什么在Windows 7和MacOS中没有正确显示字体,但它在Windows 10中看起来很正常。 但是,无论操作系统如何,生成的卡都会加载字体并显示它没有任何问题。

虽然,当我加载字体来生成卡片时,我使用java代码加载它们,而不是CSS。我不知道这是否会影响,虽然我无法解释它如何根据操作系统采取不同的行动。

CSS和TTF文件位于项目源中的同一个包中

CSS Root.css

@font-face {
    font-family: 'JBarrett';
    src: local('JBARRETT.ttf');
}

@font-face {
    font-family: 'Danmaku';
    src: local('MPlantin_Danmaku.ttf');
}

#Title {
    -fx-font-family: "JBarrett";
}

#Description {
    -fx-font-family: "Danmaku";
}

#SymbolButton {
    -fx-font-family: "Danmaku";
    -fx-border-color: transparent;
    -fx-background-color: transparent;
    -fx-font-size: 16px;
}

DeckTextArea.css

.text-area {
    text-area-background:  #D9E1F0;
}

.text-area .content {
    -fx-background-color: text-area-background;
}

FXML

<Button id="SymbolButton" alignment="CENTER" mnemonicParsing="false" onAction="#character_insertSymbol" text="=">
    <font>
        <Font name="MPlantin_Danmaku" size="16.0" />
    </font>
</Button>
<TextArea id="Description" fx:id="cardDesc_txtPart1" prefHeight="200.0" prefWidth="250.0" style="-fx-background-color: #D9E1F0;" stylesheets="@CSS/DeckTextArea.css" wrapText="true">
    <font>
        <Font name="MPlantin_Danmaku" size="12.0" />
    </font>
</TextArea>

0 个答案:

没有答案