--- /dev/null 2018-04-25 08:07:56.000000000 -0700 +++ new/test/jdk/java/awt/font/TextLayout/VariationSelectorTest.java 2018-04-25 08:07:56.000000000 -0700 @@ -0,0 +1,39 @@ +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); + } + } +} +