I think this fix is fine. In the other rasteriser cases we use
(T2K, freetype) we also flip the sign of the y advance as it is stored
as the image y advance. It looks like this was just missing here.
This change should then only affect the final glyph rendering.
-phil.
On 5/21/2013 12:40 PM, Sergey Bylokhov wrote:
Hello,
Please review the fix for jdk 8.
On OSX advanceY in the glyphInfo is inverted.
It is used to increment position when the glyph is drawn as part of a
string of text:
@see DrawGlyphList.c.setupBlitVector():
....
for (g=0; g<len; g++) {
ginfo = (GlyphInfo*)imagePtrs[g];
.....
FLOOR_ASSIGN(gbv->glyphs[g].y, y + ginfo->topLeftY);
.....
y += ginfo->advanceY;
}
advances are initialized in the CGGlyphImages.m via
JRSFontGetAdvancesForGlyphsAndStyle().
Note that JRSFontGetAdvancesForGlyphsAndStyle use "strike->fTx" and
the origin of this transform is relative to the bottom-left corner
baseline. So we should pass "strike->fAltTx" to the
JRSFontGetAdvancesForGlyphsAndStyle(Not sure is it ok or not) OR to
invert the received advance.height.
Bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7190349
Webrev can be found at: http://cr.openjdk.java.net/~serb/7190349/webrev.00
--
Best regards, Sergey.