On Thu, 22 Apr 2021 09:21:20 GMT, Toshio Nakamura <tnakam...@openjdk.org> wrote:
> Hi, > > Could you review the fix? > When non-English characters were printed from JTable on MacOS, > CTextPipe.doDrawGlyphs was called by OSXSurfaceData.drawGlyphs. However, > CTextPipe seems not support glyph with slot number of composite fonts. > > The slot data mask of GlyphVector is 0xff000000. In my environment, Japanese > font was loaded at slot 4, and glyph data is like [0x40003e5]. Then, > unexpected glyph was drawn. > > This patch checks slot data of each character. If slot data exists, it will > branch to GlyphVector's drawing path. > > Well, I couldn't create automatic test for this fix. This method seems to be > called for printing only. I appreciate any advice. > Tested java/awt and javax/swing on MacOS BigSur, and there was no regression. > > Regards, > Toshio Nakamura The immediately next method in this file, drawGlyphVector(..) surely would have the same problem ? And then the drawChars method too ? Does this not in fact affect all code points for which the slot != 0 ? Do we really want to print all code points from slot > 0 as shapes ? And if this code isn't expecting to handle composite fonts, how did we get here with one ? Or maybe the problem is that the printing path code needs to handle this downstream not upstream ? ------------- PR: https://git.openjdk.java.net/jdk/pull/3619