undefect. CWE-407 — 63 sites patched across 27 ecosystems
Authors: russell@unturf.com · brackishbert@gmail.com · foxhop.net · TimeHexOn.com Patches, unit tests, benchmarks, whitepaper, and outreach briefs. Public domain — no copyright claimed. Use freely.
This commit is contained in:
commit
0a580b313d
70422 changed files with 17213626 additions and 0 deletions
65
test/jdk/java/awt/font/TextLayout/VariationSelectorTest.java
Normal file
65
test/jdk/java/awt/font/TextLayout/VariationSelectorTest.java
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
/* @test
|
||||
* @summary Verify two identical 'a's are rendered
|
||||
* @bug 8187100
|
||||
* @ignore Requires a special font installed.
|
||||
*/
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.WindowConstants;
|
||||
import java.awt.Font;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.font.FontRenderContext;
|
||||
import java.awt.font.GlyphVector;
|
||||
|
||||
public class VariationSelectorTest {
|
||||
// A font supporting Unicode variation selectors is required
|
||||
// At least DejaVu 2.20 from 2007
|
||||
private static final Font FONT = new Font("DejaVu Sans", Font.PLAIN, 12);
|
||||
|
||||
public static void main(String[] args) {
|
||||
final String fontName = FONT.getFontName();
|
||||
if (!fontName.equals("DejaVuSans")) {
|
||||
System.err.println("*** Warning: Font DejaVuSans not installed.");
|
||||
System.err.println("*** Using font: " + fontName);
|
||||
}
|
||||
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);
|
||||
System.out.println("'a'=" + gv.getNumGlyphs());
|
||||
g2d.drawString("=" + gv.getNumGlyphs() + " ('a')", 100, 50);
|
||||
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);
|
||||
System.out.println("'a'+VS=" + gv2.getNumGlyphs());
|
||||
g2d.drawString("=" + gv2.getNumGlyphs() + " ('a'+VS)", 100, 100);
|
||||
if ((gv.getNumGlyphs() == 1) && (gv2.getNumGlyphs() == 1)) {
|
||||
System.out.println("PASS");
|
||||
g2d.drawString("PASS", 10, 15);
|
||||
} else {
|
||||
System.err.println("FAIL");
|
||||
g2d.drawString("FAIL", 10, 15);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue