#css #javafx #fonts
#css #javafx #шрифты
Вопрос:
В моем приложении Java FX есть текст как на английском, так и на иврите, я хочу использовать Roboto для английского текста и Noto без иврита для текста на иврите.
Код, который я придумал, работает не так, как описано ниже, Code:
// java
Parent root = new VBox() {{
getChildren().addAll(
new Label("THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG"),
new Label("the quick brown fox jumps over the lazy dog"),
new Label("השפן טעם ביס ואכל קצת גזר חד")
);
}};
primaryStage.setScene(new Scene(root) {{
getStylesheets().add(getClass().getResource("style.css").toExternalForm());
}});
primaryStage.show();
// style.css
@font-face {
src: url('Roboto-Regular.ttf');
}
@font-face {
src: url('NotoSansHebrew-Regular.ttf');
}
.root {
/* Attempt 1 - it only takes the first one */
-fx-font-family: "Roboto" "Noto Sans Hebrew";
/* Attempt 2 - it only takes the last one */
-fx-font-family: "Roboto";
-fx-font-family: "Noto Sans Hebrew";
}
Комментарии:
1. Вам нужно настроить таргетинг на реальных пользователей
Label
. Это можно сделать, присвоив всем английскимLabel
одному классу стилей, а всем ивритскимLabel
— другому классу стилей. Чтобы добавить класс стиля, используйтеNode.getStyleClass().add(...)
. Затем используйте классы стилей в файле CSS.2. Этот код является примером, в моем реальном приложении я не знаю, в каком
Node
из них есть какой язык.