import javax.swing.*; import java.awt.*; import java.awt.font.*; /* @test @(#)TestVS.java * @summary Verify two identical 'a's are rendered * @bug 8187100 * @ignore Requires a special font installed. */ public class VariationSelectorTest { // A font supporting Unicode variation selectors is required private static final Font FONT = new Font("DejaVu Sans", Font.PLAIN, 12); public static void main(String[] args) { SwingUtilities.invokeLater(() -> { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); frame.add(new MyComponent()); frame.setSize(200, 200); frame.setVisible(true); frame.setLocationRelativeTo(null); }); } private static class MyComponent extends JComponent { @Override protected void paintComponent(Graphics g) { Graphics2D g2d = (Graphics2D) g; FontRenderContext frc = g2d.getFontRenderContext(); String text = "a"; GlyphVector gv = FONT.layoutGlyphVector(frc, text.toCharArray(), 0, text.length(), Font.LAYOUT_LEFT_TO_RIGHT); g2d.drawGlyphVector(gv, 80, 50); String text2 = "a\ufe00"; GlyphVector gv2 = FONT.layoutGlyphVector(frc, text2.toCharArray(), 0, text2.length(), Font.LAYOUT_LEFT_TO_RIGHT); g2d.drawGlyphVector(gv2, 80, 100); } } }