if (((gv.getLayoutFlags() & GlyphVector.FLAG_HAS_TRANSFORMS) != 0)){
for (int i=0; i < gv.getNumGlyphs(); i++){
Glyph gl = ((CommonGlyphVector)gv).vector[i];
if (gl.getPointWidth()==0) {
continue;
}
char chr = gl.getChar();
AffineTransform glyphAT = gv.getGlyphTransform(i);
if ((glyphAT == null) || glyphAT.isIdentity()){
chars[count] = chr;
int index = i * 2;
int ind = count * 2;
positions[ind] = ((CommonGlyphVector)gv).visualPositions[index];
positions[ind + 1] = ((CommonGlyphVector)gv).visualPositions[index+1];
count++;
continue;
}
if (glyphAT.getType() == AffineTransform.TYPE_TRANSLATION){
chars[count] = chr;
int index = i * 2;
int ind = count * 2;
positions[ind] = ((CommonGlyphVector)gv).visualPositions[index] +
glyphAT.getTranslateX();
positions[ind + 1] = ((CommonGlyphVector)gv).visualPositions[index+1] +
glyphAT.getTranslateY();
count++;
continue;
}
at.transform(positions, 0, positions, 0, count);
status = NativeFont.gdiPlusDrawDriverChars(graphicsInfo,
chars,
count,
font,
positions,
NativeFont.DriverStringOptionsCmapLookup,
fontMatrix);
if (status != 0 && debugOutput){
// awt.err.02=GDIPlus DrawDriverString error status = {0}
System.err.println(Messages.getString("awt.err.02", status)); //$NON-NLS-1$
}
count = 0;
AffineTransform at1 = new AffineTransform(glyphAT);
at1.concatenate(fontAT);
at1.getMatrix(matrix);
Point2D pos = gv.getGlyphPosition(i);
status = NativeFont.gdiPlusDrawDriverChar(graphicsInfo,
chr,
font,
(float)(x + pos.getX()),
(float)(y + pos.getY()),
NativeFont.DriverStringOptionsCmapLookup,
matrix);
if (status != 0 && debugOutput){
// awt.err.02=GDIPlus DrawDriverString error status = {0}
System.err.println(Messages.getString("awt.err.02", status)); //$NON-NLS-1$
}
}
if (count != 0){
at.transform(positions, 0, positions, 0, count);
status = NativeFont.gdiPlusDrawDriverChars(graphicsInfo,
chars,
count,
font,
positions,
NativeFont.DriverStringOptionsCmapLookup,
fontMatrix);
if (status != 0 && debugOutput){
// awt.err.02=GDIPlus DrawDriverString error status = {0}
System.err.println(Messages.getString("awt.err.02", status)); //$NON-NLS-1$
}
}
} else {
for (int i=0; i < len ; i++){
Glyph gl = ((CommonGlyphVector)gv).vector[i];
if (gl.getPointWidth()==0) {
continue;
}
chars[count] = gl.getChar();
int index = i * 2;
int ind = count * 2;
positions[ind] = ((CommonGlyphVector)gv).visualPositions[index];
positions[ind + 1] = ((CommonGlyphVector)gv).visualPositions[index+1];
count++;