-
Bug
-
Resolution: Duplicate
-
P4
-
8
-
windows 2012
-
x86_64
-
windows
(Reporting on behalf of https://github.com/linxingyun )
OpenJDK has bug on DBCS fonts’ support: it can’t support to render text with rotation for the fonts like: MingLiu, HeiT, MS PGothic, MS PMincho, Batang and Gulim.
Because I am not able to enter bug in the offical OpenJDK website, I am entering bug here to see if you could help to help to redirect this problem to a proper guy to handle it. Thanks a lot!
Below is the sample code to reproduce the problem:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class TestFontRender {
private static final String IMAGE_TYPE="png";
// You may need to change the filepath below in order to save the image in proper path.
private static final String IMAGE_FILEPATH="c:\fontRender_openjdk.png";
/**
* @param args
*/
public static void main(String[] args) {
TestFontRender code = new TestFontRender();
BufferedImage bufferImage = code.getImage();
code.saveImage(bufferImage, IMAGE_TYPE, IMAGE_FILEPATH);
}
public BufferedImage getImage() {
int width = 800;
int height = 600;
int degree = -90;
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
Color background = new Color(255, 255, 255);
g.setColor(background);
g.fillRect(0, 0, width, height);
g.setColor(getColor());
g.drawRect(0, 0, width - 1, height - 1);
Color textColor = new Color(255, 0, 0);
g.setColor(textColor);
//"MS PGothic" font
String text = "Height (日本平均)アイウ MS PGothic angle=0";
Font textFont = new Font("MS PGothic",Font.PLAIN,14);
g.setFont(textFont);
Graphics2D g2d_1 = (Graphics2D) g.create();
g2d_1.translate(20, 20);
g2d_1.drawString(text, 0, 0);
g2d_1.translate(20, 300);
g2d_1.rotate(degree * Math.PI / 180);
text = "Height (日本平均)アイウ MS PGothic angle=-90";
g2d_1.drawString(text, 0, 0);
//"MS PMincho" font
text = "Height (日本平均)アイウ MS PMincho angle=0";
textFont = new Font("MS PMincho",Font.PLAIN,14);
g.setFont(textFont);
Graphics2D g2d_2 = (Graphics2D) g.create();
g2d_2.translate(85, 55);
g2d_2.drawString(text, 0, 0);
g2d_2.translate(55, 300);
g2d_2.rotate(degree * Math.PI / 180);
text = "Height (日本平均)アイウ MS PMincho angle=-90";
g2d_2.drawString(text, 0, 0);
//"Gulim" font
text = "Height (Korea) Gulim angle=0";
textFont = new Font("Gulim",Font.PLAIN,14);
g.setFont(textFont);
Graphics2D g2d_3 = (Graphics2D) g.create();
g2d_3.translate(145, 85);
g2d_3.drawString(text, 0, 0);
g2d_3.translate(85, 300);
g2d_3.rotate(degree * Math.PI / 180);
text = "Height (Korea) Gulim angle=-90";
g2d_3.drawString(text, 0, 0);
//"HeiT" font
text = "Height (平均) HeiT angle=0";
textFont = new Font("HeiT",Font.PLAIN,14);
g.setFont(textFont);
Graphics2D g2d_4 = (Graphics2D) g.create();
g2d_4.translate(200, 115);
g2d_4.drawString(text, 0, 0);
g2d_4.translate(115, 300);
g2d_4.rotate(degree * Math.PI / 180);
text = "Height (平均) HeiT angle=-90";
g2d_4.drawString(text, 0, 0);
g.dispose();
return image;
}
private Color getColor() {
int R = (int) (Math.random() * 255);
int G = (int) (Math.random() * 255);
int B = (int) (Math.random() * 255);
return new Color(R, G, B);
}
public void saveImage(BufferedImage image, String format, String filePath) {
try {
ImageIO.write(image, format, new File(filePath));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
OpenJDK has bug on DBCS fonts’ support: it can’t support to render text with rotation for the fonts like: MingLiu, HeiT, MS PGothic, MS PMincho, Batang and Gulim.
Because I am not able to enter bug in the offical OpenJDK website, I am entering bug here to see if you could help to help to redirect this problem to a proper guy to handle it. Thanks a lot!
Below is the sample code to reproduce the problem:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class TestFontRender {
private static final String IMAGE_TYPE="png";
// You may need to change the filepath below in order to save the image in proper path.
private static final String IMAGE_FILEPATH="c:\fontRender_openjdk.png";
/**
* @param args
*/
public static void main(String[] args) {
TestFontRender code = new TestFontRender();
BufferedImage bufferImage = code.getImage();
code.saveImage(bufferImage, IMAGE_TYPE, IMAGE_FILEPATH);
}
public BufferedImage getImage() {
int width = 800;
int height = 600;
int degree = -90;
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
Color background = new Color(255, 255, 255);
g.setColor(background);
g.fillRect(0, 0, width, height);
g.setColor(getColor());
g.drawRect(0, 0, width - 1, height - 1);
Color textColor = new Color(255, 0, 0);
g.setColor(textColor);
//"MS PGothic" font
String text = "Height (日本平均)アイウ MS PGothic angle=0";
Font textFont = new Font("MS PGothic",Font.PLAIN,14);
g.setFont(textFont);
Graphics2D g2d_1 = (Graphics2D) g.create();
g2d_1.translate(20, 20);
g2d_1.drawString(text, 0, 0);
g2d_1.translate(20, 300);
g2d_1.rotate(degree * Math.PI / 180);
text = "Height (日本平均)アイウ MS PGothic angle=-90";
g2d_1.drawString(text, 0, 0);
//"MS PMincho" font
text = "Height (日本平均)アイウ MS PMincho angle=0";
textFont = new Font("MS PMincho",Font.PLAIN,14);
g.setFont(textFont);
Graphics2D g2d_2 = (Graphics2D) g.create();
g2d_2.translate(85, 55);
g2d_2.drawString(text, 0, 0);
g2d_2.translate(55, 300);
g2d_2.rotate(degree * Math.PI / 180);
text = "Height (日本平均)アイウ MS PMincho angle=-90";
g2d_2.drawString(text, 0, 0);
//"Gulim" font
text = "Height (Korea) Gulim angle=0";
textFont = new Font("Gulim",Font.PLAIN,14);
g.setFont(textFont);
Graphics2D g2d_3 = (Graphics2D) g.create();
g2d_3.translate(145, 85);
g2d_3.drawString(text, 0, 0);
g2d_3.translate(85, 300);
g2d_3.rotate(degree * Math.PI / 180);
text = "Height (Korea) Gulim angle=-90";
g2d_3.drawString(text, 0, 0);
//"HeiT" font
text = "Height (平均) HeiT angle=0";
textFont = new Font("HeiT",Font.PLAIN,14);
g.setFont(textFont);
Graphics2D g2d_4 = (Graphics2D) g.create();
g2d_4.translate(200, 115);
g2d_4.drawString(text, 0, 0);
g2d_4.translate(115, 300);
g2d_4.rotate(degree * Math.PI / 180);
text = "Height (平均) HeiT angle=-90";
g2d_4.drawString(text, 0, 0);
g.dispose();
return image;
}
private Color getColor() {
int R = (int) (Math.random() * 255);
int G = (int) (Math.random() * 255);
int B = (int) (Math.random() * 255);
return new Color(R, G, B);
}
public void saveImage(BufferedImage image, String format, String filePath) {
try {
ImageIO.write(image, format, new File(filePath));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
- duplicates
-
JDK-8204929 Fonts with embedded bitmaps are not always rotated
- Resolved