Sie erhalten Glyphe umreißt Font.createGlyphVector
und GlyphVector.getGlyphOutline
verwenden.
Die folgende Methode ruft eine GlyphVector
für die angegebene String
ab und ruft ihre Umrisse ab, wobei ein AffineTransform
in diesem Prozess angewendet wird.
static Shape[] getGlyphShapes(Font font, String strGlyphs, AffineTransform transform) {
FontRenderContext frc = new FontRenderContext(null, true, true);
GlyphVector glyphs = font.createGlyphVector(frc, strGlyphs);
int count = glyphs.getNumGlyphs();
Shape[] shapes = new Shape[count];
for (int i = 0; i < count; i ++) {
// get transformed glyph shape
GeneralPath path = (GeneralPath) glyphs.getGlyphOutline(i);
shapes[i] = path.createTransformedShape(transform);
}
return shapes;
}
Standardmäßig sind die zurückgegebenen Glyphenformen der Schriftgröße 1, daher der AffineTransform
. Ein Beispiel wäre verwandeln:
AffineTransform transform = new AffineTransform();
transform.translate(-20, 20);
transform.scale(40, 40);
der jede Glyphe grob Zentrum sollte (was ich nehme an, Sie müssen) bei einer Schriftgröße von 40. Für eine genauere Zentrierung Sie GlyphMetrics
verwenden könnte, durch GlyphVector.getGlyphMetric
erhalten und Berechnen Sie die genaue Übersetzung, die Sie benötigen.