我希望能够生成不同语言的文本图像。
为此,我正在使用以下代码:
BufferedImage bufferedImage = new BufferedImage(200, 60, BufferedImage.TYPE_INT_RGB);
Graphics graphics = bufferedImage.getGraphics();
graphics.setColor(Color.PINK);
graphics.setFont(new Font("Arial", Font.PLAIN, 12));
graphics.drawString("ट्रेल्स", 20, 40);
ImageIO.write(bufferedImage, "jpg", outputStream);
但是上述代码生成的图像是。
图像中的文本与
ट्रेल्स
略有不同。上述不匹配的原因在于
ट्रेल्स
的unicode字符为 \u091f\u094d\u0930\u0947\u0932\u094d\u0938
,如果我们将每个unicode数转换为其相应的字符,则得到与图像中完全相同的文本。所以我认为
graphics.drawString(...)
的工作是正确的。但由于输出结果与预期结果不符,那么如何解决这个问题呢?
任何关于
textToImage
api的指针也可以。
TextLayout
的draw
,但也不起作用。输出与Graphics
的drawString
相同。 - AmitArial
字体没有德瓦奈加里语的字形,所以你可能会得到一个没有字形组合替代物的后备字体。如果你直接使用一个已知好的字体(例如Windows下的Mangal
),会发生什么? - bobince