12489


Java
GUI(SwingかJavaFx)で、GUIアプリケーションを作ろうと思っています。下調べとして、簡単なメモ帳（SwingならJTextAreaを貼りつけただけ）をWindows7や8で動かしてみたところ、大半のケースで外字が表示できないことが分かりました。

具体的に表示できたのは「Swingでフォントを指定しない場合」だけで、他の場合（JavaFxや、Swingでもフォント指定した場合）は、外字が「□」のように化けてしまいます。

おそらくフォント指定すると、フォントのフォールバックがかからなくなると思うのですが、何か対策をご存じの方はおられますか？外字表示は、とりあえずWindowsで可能なら構いません（ソフトとしてはLinuxでも動かしたいのですが、外字は出なくても諦めます）。


CC BY-SA 3.0
2015-07-19T10:50:57.640
12481
2015-08-17T02:46:20.937
2015-07-19T10:54:05.173
5337
10588
question
java swing javafx
Java SwingかJavaFxで、コントロールにフォントを指定しつつ外字を使う方法は？


私の場合、Swing でも JavaFX でも、標準の方法ではフォールバックの機能が見つからなかったため、あらかじめアプリの定義として使用するフォント
(ファミリー名) を羅列しておき、表示したい文字列の文字を 1 文字づつ java.awt.Font#canDisplay
メソッドでテストして、表示可能なフォントを検索して表示させてることを試みてゐます。 主に、漢文などの旧漢字を表示するための対策です。  
無論一つの文字ごとにフォントを指定するのはオブジェクトの無駄使ひなので、連続して同じフォントを使用できるものはできるだけ複数の文字で一つのフォント指定をさせるようにするといふ、やや面倒な処理をさせてゐます。このため、テキストの表示だけでえらく時間がかかったりしてゐます。

何かより良い方法があればよいのですが。

WebView 系のコンポーネントで HTML の CSS の階層的なフォント指定をするといふのもやってはゐます。


CC BY-SA 3.0
2015-07-19T17:47:08.310
12489
2015-07-19T18:01:47.610
2015-07-19T18:01:47.610
4381
4381
12481
answer


Windowsでの外字表示は、Swingは、SystemDefaultEUDCFontが表示されますが、FXは表示されないようです

JavaFX CSSを利用することで外字表示は可能です  
<http://docs.oracle.com/javase/8/javafx/api/javafx/scene/doc-
files/cssref.html#introatrules>

CSSで外字フォントファイルを指定してあげると、その中で定義されている文字は表示されます  
制限事項にも記述されていますが、複数の物理フォントを、単一の論理フォントとして扱うことは出来ないようです


CC BY-SA 3.0
2015-08-17T02:46:20.937
14506
2015-08-17T02:46:20.937
10953
12481
answer