JavaFX初心者です。
Label、TextFieldにserif文字列として私用領域文字が混在した文字列を表示したい。
色々試してみましたが、思い通りの表示とはなりませんでした。
下記抜粋のCSSとJavaFXソースでは、私用領域文字は表示されますが、それ以外の文字が
MS UIGochicで表示されます。
CSS
@font-face {
font-family:EUDC;
src:url(file:///E:/work/hoge.TTF);
}
@font-face {
font-family:EUDC;
unicode-range:'U+E000-F8FF';
src:url(file:///E:/work/EUDC26.tte);
}
.label {
-fx-font-family:EUDC;
-fx-font-size: 36pt;
}
test_javafx
public class Main extends Application {
@Override
public void start(Stage stage) {
FlowPane root = new FlowPane();
String constStr = "\u3042\u845B\uE001\uE002\uE003\uF8FE";
Scene scene = new Scene(root, 400, 200);
scene.getStylesheets().add("Hello/application.css");
stage.setScene(scene);
Label label = new Label(constStr);
TextField txField = new TextField(constStr);
TextField txField2 = new TextField(constStr);
root.getChildren().addAll(label,txField,txField2);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
HTMLであれば、CSSの@font-faceの記述で、複数フォントリソースが、仮想単一リソース
と見做されると認識しています。
残念ながらJavaFXのCSSParserはそのような解釈を行ってくれないようです。
それならば、CSSに個々のフォントフェースとして、@font-faceを記述し、-fx-font-familyで、
各々のFontfaceを列記したいのですが、CSSリファレンスの制限事項に記載されている通り
先頭に記載した分だけが読み取られるようです。
serif文字列として私用領域文字混在文字列を表現する方法は無いのでしょうか?