I have submitted https://bugs.openjdk.java.net/browse/JDK-8169202

Can you restart this thread with the proper format for a review request
as the subject

"RFR: 8169202: macos] Font substitution does not work for supplementary characters"

-phil.

On 11/03/2016 07:23 AM, Dmitry Batrak wrote:
Added an automated version of the test to the webrev - http://cr.openjdk.java.net/~avu/rfe_surrogates/webrev.01/ <http://cr.openjdk.java.net/%7Eavu/rfe_surrogates/webrev.01/>

Best regards,
Dmitry Batrak

On Tue, Nov 1, 2016 at 5:40 PM, Sergey Bylokhov <sergey.bylok...@oracle.com <mailto:sergey.bylok...@oracle.com>> wrote:

    Looks fine to me, but the jtreg test will be helpful.

    On 27.10.16 11:56, Dmitry Batrak wrote:

        Sure, here's the simplest test, that can be used for visual
        inspection:

        import javax.swing.*;
        import java.awt.*;

        public class SurrogatesFallbackTest {
            public static void main(String[] args) {
                SwingUtilities.invokeLater(() -> {
                    JFrame frame = new JFrame();
                    JLabel label = new JLabel(new
        String(Character.toChars(0x1d400))); // MATHEMATICAL BOLD
        CAPITAL A
                    label.setFont(new Font("Menlo", Font.PLAIN, 36)); //
        expected to fallback to STIXGeneral
                    frame.add(label);
                    frame.pack();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                    frame.setLocationRelativeTo(null);
                    frame.setVisible(true);
                });
            }
        }

        I can convert it to an automatic test (rendering to a bitmap and
        comparing the result to rendering of 'missing' glyph), and add
        it to the
        webrev, if that makes sense.

        Best regards,
        Dmitry Batrak

        On Thu, Oct 27, 2016 at 2:17 AM, Philip Race
        <philip.r...@oracle.com <mailto:philip.r...@oracle.com>
        <mailto:philip.r...@oracle.com
        <mailto:philip.r...@oracle.com>>> wrote:

            Hi,

            I can file a bug on this if I can't find one.
            If you can email me the test it will help even if it is
        not checked in.

            -phil.

            On 10/26/16, 6:28 AM, Dmitry Batrak wrote:

                Hello,

                I'd like to propose a patch to make automatic font
            substitution on
                macOS work for surrogate pairs.
                I have a Contributor status via agreement signed by
            JetBrains,
                hope someone can sponsor the patch.

                Currently, if requested font cannot render a Unicode
            character
                represented by a surrogate pair,
                no substitution is performed - Font.canDisplay will
            return false,
                and the character will be
                rendered as a 'missing' glyph. This behaviour doesn't
            violate any
                specification, but it looks like
                it can be easily improved, as underlying OS framework
            used under
                the hood does support surrogate pairs.

                The proposed change consists of two parts. First part
            is adjusting
                the code in CoreTextSupport.m
                to handle surrogate pairs while performing
            char-to-glyph mapping,
                by encoding non-displayable
                surrogate pairs using negative values of the
            codepoint, similar to
                how non-displayable BMP characters
                are encoded. Second part is fixing the rendering code (in
                CGGlyphImages.m), where wrong type was used
                to pass character values around, so that code for
            surrogate pairs
                handling, already present there,
                could work.

                I didn't include a test for this change, as it would
            depend on
                OS-specific font fallback mechanism
                and fonts installed, but I can create one that will
            work on a
                latest version of macOS with default
                fonts, if needed.

                Webrev for the fix is available at
            http://cr.openjdk.java.net/~avu/rfe_surrogates/webrev.00/
            <http://cr.openjdk.java.net/%7Eavu/rfe_surrogates/webrev.00/>
<http://cr.openjdk.java.net/%7Eavu/rfe_surrogates/webrev.00/
            <http://cr.openjdk.java.net/%7Eavu/rfe_surrogates/webrev.00/>>
                (kindly posted by my colleague, having access to
            cr.openjdk.java.net <http://cr.openjdk.java.net>
            <http://cr.openjdk.java.net>).

                To my knowledge, there's no ticket in OpenJDK issue
            tracker for
                the proposed enhancement.
                I can submit it via http://bugs.java.com/, if that's
            an obstacle.

                Best regards,
                Dmitry Batrak





        --
        Dmitry Batrak
        Senior Software Developer
        JetBrains
        http://www.jetbrains.com
        The Drive to Develop



-- Best regards, Sergey.




--
Dmitry Batrak
Senior Software Developer
JetBrains
http://www.jetbrains.com
The Drive to Develop

Reply via email to