在java中绘制文本与大纲

Kam*_*Kam 5 java fonts swing arabic graphics2d

我在Java中使用graphcis2d,目前正在使用它将文本绘制到bufferedImage中

Font font1 = new Font("Arial", Font.PLAIN, 120);
g2d.setFont(font1);
FontMetrics fm1 = g2d.getFontMetrics(font1);     
g2d.drawString(s[1], width/2-fm1.stringWidth(s[1])/2, height/4-70);
Run Code Online (Sandbox Code Playgroud)

我想用不同的颜色轮廓绘制这个文本.

GlyphVector gv = font1.createGlyphVector(g2d.getFontRenderContext(), s[1]);
Shape shape = gv.getOutline();
g2d.setStroke(new BasicStroke(4.0f));
g2d.translate(width/2-fm1.stringWidth(s[1])/2, height/4-70);
g2d.draw(shape);        
Run Code Online (Sandbox Code Playgroud)

使用这种方法的问题是,我正在使用阿拉伯字符并使用GlyphVector反转顺序,并且不会使字母彼此流动.

有人可以向我解释如何用一种颜色呈现阿拉伯文本并与另一种颜色形成轮廓吗?

下面是我将要使用的文本示例:الرحمن

Ted*_*opp 2

一种技巧是用轮廓颜色多次绘制文本,在 +/- x 和 +/- y 方向上通过轮廓宽度改变位置,然后在标称位置处绘制前景色。它并不完美,但只要轮廓相对于字母的笔划宽度不是太粗,它看起来就会相当不错。