在 Java 中使用 AWT Graphics 绘制 Unicode/UTF-8 字符,例如“ಠ”

问题描述 投票:0回答:1

我正在尝试用这样的 unicode 画一张脸:

ಠ_ಠ

但是,它会生成矩形。

我尝试了以下方法:

BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_ARGB);
Graphics g = image.getGraphics();
Font font = new Font("Arial", Font.BOLD, FACE_SIZE);

g.setColor(FACE_COLOR);
g.setFont(font);
g.drawString("ಠ_ಠ", x, y);

我也尝试过以下方法:

g.drawString(new String("ಠ_ಠ".getBytes("UTF-8"), "UTF-8"), x, y);
g.drawString(StringEscapeUtils.unescapeJava("\\u0ca0\\u005f\\u0ca0"), x, y);

但是一切都产生了以下结果:

Image of the result of the previous methods

我也在 Linux、Windows 上尝试过,结果相同。更改字体没有帮助。

在我的 gradle 设置中,我确保具有以下内容:

compileJava.options.encoding = 'UTF-8'
tasks.withType( JavaCompile ) {
    options.encoding = 'UTF-8'
}

我知道 Arial 支持这些字符,因为我可以在图像编辑软件中绘制它们。

如果这可能有帮助,这是在 Spring Boot 项目中。

java fonts awt graphics2d truetype
1个回答
0
投票

使用为每个字符提供字形的字体。

© www.soinside.com 2019 - 2024. All rights reserved.