Java 11の異体字対応
製品開発担当の大です。こんにちは。
少し前に「Java11でのAPI変更を雑に列挙」というブログ記事を読みました。その中で
ea20からフォント描画でユニコードのバリエーションセレクタが反映されるらしい。未確認。
と書かれていたので、雑ですが確認してみました。
検証用コード
public class Tekito { public static void main(String[] args) { JTextArea text = new JTextArea("[\u845B\uDB40\uDD00][\u845B\uDB40\uDD01]", 3, 20); text.setFont(new Font("游明朝", Font.PLAIN, 128)); JFrame f = new JFrame("異体字のテスト"); f.getContentPane().add(text); f.setSize(800, 300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
Java 8までの表示
Java8以前は、異体字セレクタの部分が×で表示されていました。
Java 9、10での表示
Java 9、10では異体字セレクタの部分は表示上は無視されています。
Java 11 (EA21) での表示
おお、11ではちゃんと表示されてますね!
チケット
たぶんこのへん: Wrong rendering of variation sequences
最後に
そんなことよりJava 11でNashornがDeprecatedだとか。ショック大きすぎますね(本文と全然関係ない)