-
Type:
Bug
-
Status: Open
-
Priority:
P3
-
Resolution: Unresolved
-
Affects Version/s: 9, 10, 11, 12
-
Fix Version/s: tbd
-
Component/s: client-libs
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