RFR: 8240756: [macos] SwingSet2:TableDemo:Printed Japanese characters were garbled [v4]

Sergey Bylokhov serb at openjdk.java.net
Sat Feb 19 00:46:57 UTC 2022


On Thu, 6 Jan 2022 02:49:17 GMT, Toshio Nakamura <tnakamura at 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.
>
> Toshio Nakamura has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains ten additional commits since the last revision:
> 
>  - Revised according to review comments
>  - Merge branch 'master' into 8240756
>  - 8240756: [macos] SwingSet2:TableDemo:Printed Japanese characters were garbled
>  - revert previous proposal
>  - Merge branch 'master' into 8240756
>  - 2nd proposal
>  - Revert previous change
>  - Merge branch 'master' into 8240756
>    merge master
>  - 8240756: [macos] SwingSet2:TableDemo:Printed Japanese characters were garbled

src/java.desktop/macosx/classes/sun/lwawt/macosx/CTextPipe.java line 107:

> 105: 
> 106:     private GlyphVector getGlyphVectorWithRange(final Font font, final GlyphVector gV, int start, int count) {
> 107:         final int length = gV.getNumGlyphs();

length is not needed?

src/java.desktop/macosx/classes/sun/lwawt/macosx/CTextPipe.java line 156:

> 154:                 int slot = (gV.getGlyphCode(start) &
> 155:                             CompositeGlyphMapper.SLOTMASK) >> 24;
> 156:                 sg2d.setFont(getSlotFont(gV.getFont(), slot));

Do we need to change the font for each glyph or we should do that only if the slot was changed? Or it is a common situation that each glyph will have its own slot?

-------------

PR: https://git.openjdk.java.net/jdk/pull/3619



More information about the client-libs-dev mailing list