JDK 25 |
---|
25 b10Fixed |
Causes :
|
|
Causes :
|
|
Duplicate :
|
|
Relates :
|
|
Relates :
|
ADDITIONAL SYSTEM INFORMATION : Java 9 or 10 (did not test Java 11 ea) A DESCRIPTION OF THE PROBLEM : If kerning is enabled for a java.awt.Font instance, soft hyphens are not painted and the width of them is measured as 0 in Java 9+. REGRESSION : Last worked in version 8u181 STEPS TO FOLLOW TO REPRODUCE THE PROBLEM : Create an AWT font with enabled kerning. Get width of a soft hyphen or try to paint it. EXPECTED VERSUS ACTUAL BEHAVIOR : EXPECTED - Soft hyphens should be painted and width should be greater than 0. ACTUAL - Soft hyphens are not painted and measured width is 0. ---------- BEGIN SOURCE ---------- import java.awt.Font; import java.awt.font.FontRenderContext; import java.awt.font.TextAttribute; import java.util.Collections; public class Worker { public static void main(String[] args) throws Exception { String SOFT_HYPHEN = Character.toString((char)173); FontRenderContext frc = new FontRenderContext(null, false, true); Font font = new Font("Arial",0,16); // on non-windows system use propriate system font name Font kerningFont = font.deriveFont(Collections.singletonMap(TextAttribute.KERNING, TextAttribute.KERNING_ON)); System.out.println(font.getStringBounds(SOFT_HYPHEN, frc).getWidth()); System.out.println(kerningFont.getStringBounds(SOFT_HYPHEN, frc).getWidth()); //Should be same as above but is 0 in Java 9+ } } ---------- END SOURCE ---------- CUSTOMER SUBMITTED WORKAROUND : Measure and paint soft hyphens with alternative instance of java.awt.Font. FREQUENCY : always
|