Java Graphics2D是否有最大字体大小?

时间:2011-01-20 13:49:56

标签: java graphics

我在Java中创建图像切片,并且需要创建非常大的文本(字体大小超过200,000 ...)但是,当字体大小超过某个阈值时,似乎是Java中的图形引擎(JDK1。 6.0.18)不再正确绘制字符串。 在我的Win7 / 64环境中,似乎我只能打印高达27915像素大小的Helvetica字符。

有解决方法吗?我怎样才能画出如此大的字符?难道我做错了什么?这是一个已知的限制吗?

示例应用程序:

    import java.awt.*;
    import java.awt.image.*;
    import java.io.*;
    import com.sun.image.codec.jpeg.*;

    public class FontTest {



public static void main(String[] args) throws Exception {
        BufferedImage image = new BufferedImage(1000,1000,BufferedImage.TYPE_INT_RGB);
        Graphics2D g = Zoomer.getGraphics(image);

        int fontsize = 27916;
        Font font = new Font("Helvetica",Font.PLAIN,fontsize);
        g.setFont(font);
        g.setColor(Color.YELLOW);

        g.drawString("Z", 5, 990);

        JPEGImageEncoder jpeg = JPEGCodec.createJPEGEncoder(new FileOutputStream(new File("image."+fontsize+".jpg"),false));
        JPEGEncodeParam param = jpeg.getDefaultJPEGEncodeParam(image);
        jpeg.encode(image);
        System.out.println("Ready with fontsize:"+fontsize);
    }

任何高达27915的图像都会正确显示Z的左下部分,但对于27915及更高版本,它会以某种方式向后显示。

错误图像的样本(左边是黄色,右边是i {o size=27,916

1 个答案:

答案 0 :(得分:0)

您使用的是哪个JDK版本?试用最新的JDK 6版本以及最新的JDK 7 beta版。 或者使用 Apache Batik