0 返信 最新の回答 日時: Feb 13, 2015 6:54 AM ユーザー:user12308171

    Windows上のJavaFXで私用領域文字を表示したい

    user12308171

      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文字列として私用領域文字混在文字列を表現する方法は無いのでしょうか?