2011-09-19 6 views
5

pracuję z graphcis2d w Javie i obecnie używam tego wyciągnąć tekst do BufferedImagetekst Rysunek z zarysem w java

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); 

Chcę zwrócić ten tekst w innym kolorze konturu.

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);   

Problem z tą metodą, która działa, jest to, że pracuję ze znakami arabskimi i korzystania GlyphVector odwraca kolejność i nie czyni litery płynąć ze sobą.

Czy ktoś może mi wyjaśnić, jak renderować tekst arabski w jednym kolorze i mieć kontur z innym?

Herezje próbka tekstu chciałbym używać: الرحمن

Odpowiedz

1

Jeden trick jest zwrócenie tekst kilka razy w kolorze konspektu, zmieniając pozycję o szerokości konturu w +/- xi +/- y kierunki, a następnie narysuj na pierwszym planie kolor w nominalnej pozycji. Nie jest idealny, ale wygląda dość dobrze, pod warunkiem, że kontur nie jest zbyt gruby w odniesieniu do szerokości liter.

+0

widzę czarne plamy na granicy. – Sorter

+1

@Sorter - Przykro to słyszeć. Bez żadnych szczegółów na temat tego, co robisz lub co dokładnie widzisz, nie mogę zgadnąć, dlaczego tak jest. Tak jak powiedziałem, ta metoda "nie jest idealna". –

2

Spróbuj użyć

layoutGlyphVector(FontRenderContext frc, char[] text, int start, int limit, int flags) 

zamiast createGlyphVector