-
Bug
-
Resolution: Duplicate
-
P4
-
None
-
1.4.0
-
None
-
sparc
-
solaris_7
On Solaris 7, merlin-beta crashes when rasterising a font loaded through
the Font.createFont API.
This is probably nothing to do with createFont(), its more likely a bug in T2K
that this font happens to trip over.
On NT the problem manifests not as a crash, but drawString just shows the
missing glyph character.
The same program and font works fine on 1.3 so its likely a bug in the hinting
code.
I've attached the test program and the TrueType font which caused the problem.
Here's the Solaris 7 stack dump from dbx.
t@16 (l@8) signal BUS (invalid address alignment) in fnt_PushSomeBytes at line 1135 in file "Fnt.c"
1135 CHECK_PUSH( gs, stack, GETBYTE( instr ));
(/opt/SUNWspro/bin/../WS5.0/bin/sparcv9/dbx) where
current thread: t@16
=>[1] fnt_PushSomeBytes(gs = 0xf4500370, count = 11), line 1135 in "Fnt.c"
[2] fnt_NPUSHB(gs = 0xf4500370), line 1181 in "Fnt.c"
[3] fnt_InnerExecute(gs = 0xf4500370, ptr = 0x25bed4 "@^L^U^T^Q^H^G^F^E^D^C^B^A", eptr = 0x25bfb5 "Z\xf0\xab"), line 681 in "FntUtilities.c"
[4] fnt_Execute(elements = 0xf4500484, globalGS = 0x25c5b4, ptr = 0x25bed4 "@^L^U^T^Q^H^G^F^E^D^C^B^A", eptr = 0x25bfb5 "Z\xf0\xab", TraceFunc = (nil), context = 0x25af14, hasStyleCoord = '\0', hasVariantCVT = '\0', hintingACompositGlyph = '\0'), line 831 in "FntUtilities.c"
[5] RunFontProgram(key = 0xf450063c, traceFunc = (nil)), line 183 in "InterpreterGlue.c"
[6] CreateGlyphElement(glyphIndex = 36, anOutline = 0x2660b8, t2kGlyph = 0x257dd4, key = 0xf450063c, useHints = '\001'), line 62 in "HintGlyph.c"
[7] TTScalerHintGlyph(theGlyphT2K = 0x257dd4, aT2KScaler = 0x25c014, scHintPtrVoid = 0xf4500760, applyStyle = 1), line 282 in "HintGlyph.c"
[8] T2K_RenderGlyphInternal(t = 0x25c014, code = 36, xFracPenDelta = '\0', yFracPenDelta = '\0', greyScaleLevel = '\0', cmd = '\v', hintingComposite = 0), line 1258 in "t2k.c"
[9] T2K_RenderGlyph(t = 0x25c014, code = 36, xFracPenDelta = '\0', yFracPenDelta = '\0', greyScaleLevel = '\0', cmd = '\v', errCode = 0xf4500918), line 1735 in "t2k.c"
[10] t2kScalerContext::GenerateMetricsWithImage(this = 0x25a480, glyphID = 36U, glyph = 0x25de40, advance = 0x25de54), line 539 in "t2kScalerContext.cpp"
[11] hsGGlyphStrike::GetMetricsWithImage(this = 0x25a3e0, index = 36U, glyph = 0xf4500a80, advance = 0xf4500a78, refcheck = 0xf4500a97 ""), line 320 in "hsGGlyphCache.cpp"
[12] Strike::getMetricsWithImage(this = 0x257e38, glyphCode = 36, glyphRef = STRUCT, advXY = STRUCT, refcheck = 0xf4500a97 ""), line 259 in "Strike.cpp"
[13] GlyphVector::positionAndGetImages(this = 0x256d38, x = 106.5, y = 125.5), line 763 in "GlyphVector.cpp"
[14] Java_sun_awt_font_GlyphList_setupStringData(env = 0x255180, gList = 0xf4500c1c, string = 0xf4500c18, font = 0xf4500c14, x = 106.0, y = 125.0, renderMat = 0xf4500c08, isAA = '\0', useFract = '\0'), line 83 in "GlyphList.cpp"
the Font.createFont API.
This is probably nothing to do with createFont(), its more likely a bug in T2K
that this font happens to trip over.
On NT the problem manifests not as a crash, but drawString just shows the
missing glyph character.
The same program and font works fine on 1.3 so its likely a bug in the hinting
code.
I've attached the test program and the TrueType font which caused the problem.
Here's the Solaris 7 stack dump from dbx.
t@16 (l@8) signal BUS (invalid address alignment) in fnt_PushSomeBytes at line 1135 in file "Fnt.c"
1135 CHECK_PUSH( gs, stack, GETBYTE( instr ));
(/opt/SUNWspro/bin/../WS5.0/bin/sparcv9/dbx) where
current thread: t@16
=>[1] fnt_PushSomeBytes(gs = 0xf4500370, count = 11), line 1135 in "Fnt.c"
[2] fnt_NPUSHB(gs = 0xf4500370), line 1181 in "Fnt.c"
[3] fnt_InnerExecute(gs = 0xf4500370, ptr = 0x25bed4 "@^L^U^T^Q^H^G^F^E^D^C^B^A", eptr = 0x25bfb5 "Z\xf0\xab"), line 681 in "FntUtilities.c"
[4] fnt_Execute(elements = 0xf4500484, globalGS = 0x25c5b4, ptr = 0x25bed4 "@^L^U^T^Q^H^G^F^E^D^C^B^A", eptr = 0x25bfb5 "Z\xf0\xab", TraceFunc = (nil), context = 0x25af14, hasStyleCoord = '\0', hasVariantCVT = '\0', hintingACompositGlyph = '\0'), line 831 in "FntUtilities.c"
[5] RunFontProgram(key = 0xf450063c, traceFunc = (nil)), line 183 in "InterpreterGlue.c"
[6] CreateGlyphElement(glyphIndex = 36, anOutline = 0x2660b8, t2kGlyph = 0x257dd4, key = 0xf450063c, useHints = '\001'), line 62 in "HintGlyph.c"
[7] TTScalerHintGlyph(theGlyphT2K = 0x257dd4, aT2KScaler = 0x25c014, scHintPtrVoid = 0xf4500760, applyStyle = 1), line 282 in "HintGlyph.c"
[8] T2K_RenderGlyphInternal(t = 0x25c014, code = 36, xFracPenDelta = '\0', yFracPenDelta = '\0', greyScaleLevel = '\0', cmd = '\v', hintingComposite = 0), line 1258 in "t2k.c"
[9] T2K_RenderGlyph(t = 0x25c014, code = 36, xFracPenDelta = '\0', yFracPenDelta = '\0', greyScaleLevel = '\0', cmd = '\v', errCode = 0xf4500918), line 1735 in "t2k.c"
[10] t2kScalerContext::GenerateMetricsWithImage(this = 0x25a480, glyphID = 36U, glyph = 0x25de40, advance = 0x25de54), line 539 in "t2kScalerContext.cpp"
[11] hsGGlyphStrike::GetMetricsWithImage(this = 0x25a3e0, index = 36U, glyph = 0xf4500a80, advance = 0xf4500a78, refcheck = 0xf4500a97 ""), line 320 in "hsGGlyphCache.cpp"
[12] Strike::getMetricsWithImage(this = 0x257e38, glyphCode = 36, glyphRef = STRUCT, advXY = STRUCT, refcheck = 0xf4500a97 ""), line 259 in "Strike.cpp"
[13] GlyphVector::positionAndGetImages(this = 0x256d38, x = 106.5, y = 125.5), line 763 in "GlyphVector.cpp"
[14] Java_sun_awt_font_GlyphList_setupStringData(env = 0x255180, gList = 0xf4500c1c, string = 0xf4500c18, font = 0xf4500c14, x = 106.0, y = 125.0, renderMat = 0xf4500c08, isAA = '\0', useFract = '\0'), line 83 in "GlyphList.cpp"
- duplicates
-
JDK-4755211 Java2D font scaler has memory alignment bug in TrueType hinting code.
-
- Resolved
-