-
Bug
-
Resolution: Unresolved
-
P3
-
9, 10, 11, 12
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
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
- duplicates
-
JDK-8274719 TextLayout does not properly compute size or paint Soft Hyphen character
- Closed
- relates to
-
JDK-6446472 Handle SHY as described in http://www.unicode.org/reports/tr14/index.html#SoftHy
- Closed
- links to
-
Review(master) openjdk/jdk/22670