Re: Unicode >16 Bit JTextPane etc..
On 6/8/2013 9:16 PM, Jeff Higgins wrote:
textpane.setFont(new Font("Dialog", Font.PLAIN, 60));
textpane.setText("\uD835\uDCC0\uD835\uDC9C\uD835\uDC9E\uD835\uDC9F")
This ends up printing Cambria Math for the font name on my system.
class SmallDemo
{
private JFrame frame = new JFrame( "A Small Demo" );
private JTextPane textpane = new JTextPane();
private static final String TEST =
"\uD835\uDCC0\uD835\uDC9C\uD835\uDC9E\uD835\uDC9F";
public SmallDemo()
{
try {
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
Font[] allFonts =
GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
Font usingFont = null;
for( Font font : allFonts ) {
if( font.canDisplay( 120000 ) ) {
usingFont = new Font( font.getFontName(), Font.PLAIN, 30 );
textpane.setFont( usingFont );
break;
}
}
textpane.setText( TEST );
StyledDocument doc = textpane.getStyledDocument();
doc.insertString( doc.getLength(), usingFont.getFontName(), null);
frame.add( textpane );
frame.pack();
frame.setVisible( true );
} catch( BadLocationException ex ) {
Logger.getLogger( SmallDemo.class.getName() ).log(
Level.SEVERE, null,
ex );
}
}
public static void main( String[] args )
{
SwingUtilities.invokeLater( new Runnable()
{
@Override
public void run()
{
SmallDemo demo = new SmallDemo();
}
} );
}
}