Пользовательский шрифт JavaFX не работает в некоторых ОС - PullRequest
0 голосов
/ 08 июня 2018

Я создал программное обеспечение, которое генерирует карты для определенной карточной игры.Я не изменял код некоторое время, потому что он всегда работал правильно.Однако недавно кто-то использовал его в Windows 7, и у него возникли некоторые проблемы (я тестировал программу только на Windows 10) Теперь я также протестировал его на Mac, и есть также некоторые проблемы.

Программа использует некоторыепользовательские шрифты (файлы .ttf), но они не показывают, как они должны работать в Windows 7 и MacOS.В окне 7 ничего из этого не отображается, однако, если я нажимаю кнопку, а затем перетаскиваю ее, отображается символ. В некоторых случаях символ отображается при наведении курсора (кнопка не имеет настраиваемой функции onDrag или настроек наведения) В MacOS некоторыесимволов из пользовательского шрифта не отображаются.

(тесты были выполнены с использованием java 8u172)

Как это должно выглядеть (Windows 10 64 бит)

Как это на самом деле выглядит в Windows 7 SP1, 64-битный

Как это на самом деле выглядит в MacOS High Sierra 10.13.5

Так выглядит сгенерированная карта, независимо от ОС

Я не совсем понимаю, почему шрифт не отображается должным образом в 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>
...