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 566646) +++ working_classlib\modules\awt\src\main\java\common\org\apache\harmony\awt\gl\font\fontlib\FLTextRenderer.java (working copy) @@ -14,27 +14,69 @@ * 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.Rectangle2D; +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 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 + bounds = gv.getGlyphOutline(i).getBounds2D(); + per=bounds.getX(); + per=per%1; + if(per > 0.5) + alphax = 1-per; + else if(per < 0.5) + alphax = -per; + else alphax = 0; + //displacement <-- y --> + per=bounds.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 +85,7 @@ @Override public void drawGlyphVector(Graphics2D g2d, GlyphVector gv, float x, float y) { g2d.fill(gv.getOutline(x,y)); + } }