Index: working_classlib/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/fontlib/FLTextRenderer.java =================================================================== --- working_classlib/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/fontlib/FLTextRenderer.java (revision 557591) +++ working_classlib/modules/awt/src/main/java/common/org/apache/harmony/awt/gl/font/fontlib/FLTextRenderer.java (working copy) @@ -14,27 +14,68 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.harmony.awt.gl.font.fontlib; import java.awt.Graphics2D; import java.awt.font.GlyphVector; +import java.awt.geom.Point2D; import org.apache.harmony.awt.gl.TextRenderer; public class FLTextRenderer extends TextRenderer { private static final FLTextRenderer inst = new FLTextRenderer(); + public int glyphIndex; + Point2D Pos; + public static FLTextRenderer getInstance() { return inst; } + + public void GlyphVectorDisplacement(GlyphVector gv,Graphics2D g2d, String str, float x, float y) { + int len=str.length(); + double alphax=0,alphay=0,per; + for(int i=0;i + per=gv.getGlyphOutline(i).getBounds2D().getX(); + per=per%1; + if(per > 0.5) + alphax = 1-per; + else if(per < 0.5) + alphax = -per; + else alphax = 0; + //displacement <-- y --> + per=gv.getGlyphOutline(i).getBounds2D().getY(); + per=per%1; + if(per > 0.5) + alphay = 1-per; + else if(per < 0.5) + alphay = -per; + else alphay = 0; + //-------------------------------------------------------------------------------*/ + Pos.setLocation(Pos.getX()+alphax, Pos.getY()+alphay); + gv.setGlyphPosition(i,Pos); + + } + } + + } + /* (non-Javadoc) * @see org.apache.harmony.awt.gl.TextRenderer#drawString(java.awt.Graphics2D, java.lang.String, float, float) */ @Override public void drawString(Graphics2D g2d, String str, float x, float y) { - g2d.fill(g2d.getFont().createGlyphVector(g2d.getFontRenderContext(), str).getOutline(x, y)); + GlyphVector gv = g2d.getFont().createGlyphVector(g2d.getFontRenderContext(), str); + GlyphVectorDisplacement(gv,g2d,str,x,y); + g2d.fill(gv.getOutline(x,y)); + } /* (non-Javadoc) @@ -43,6 +84,7 @@ @Override public void drawGlyphVector(Graphics2D g2d, GlyphVector gv, float x, float y) { g2d.fill(gv.getOutline(x,y)); + } }