Fwd: UAX#50 conformance: Is it possible to update existing fonts without causing damage to existing non-CSS applications?

---------- Forwarded message ---------
From: Taro Yamamoto <tyamamot@adobe.com>
Date: 2019年12月12日(木) 16:35
Subject: Re: UAX#50 conformance: Is it possible to update existing fonts
without causing damage to existing non-CSS applications?
To: fantasai <fantasai@inkedblade.net>
Cc: Florian Rivoal <florian@rivoal.net>, MURATA Makoto <
eb2m-mrt@asahi-net.or.jp>, Nat McCully <nmccully@adobe.com>


All,

I made some modifications to the UAX50 process that I tried to depict
previously, and updated it as follows:
I hope this is more correct and easier to read.

FYI

--Taro

=====
How to process a Unicode Character according to UAX50 (in the ‘mixed’ mode):

IF a Unicode character represented by the arrow shape here (→) tentatively,
has the UAX50 vertical posture ‘U’:
        IF the font has the ‘vert’ feature:
                The ‘vert’ feature is always applied by the application and
gets an output glyph:
                IF the glyph is included in the ‘vert’ feature:
                        IF the ‘vert’ feature treats it as a ‘Tr’ glyph,
and outputs a “pseudo-rotated” glyph ↓:
                                It will be incompatible with UAX50, as the
expected output has its Upright shape →.
                                Go to 999.
                        ELSE:
                                The output result will be compaible with
UAX50.
                                Some design-dependent glyph shape
adjustment for the vertical mode might be applied though).
                                The application uses the output glyph in
the Upright posture for the vertical writing mode →.
                ELSE:
                        The application outputs the horizontal Upright
glyph as is. →
        ELSE:
                The application outputs the horizontal Upright glyph as is.
→
ELIF the character → has the UAX50 vertical posture ‘Tu':
        IF the font has the ‘vert’ feature:
                The ‘vert’ feature is always applied by the application and
gets an output glyph:
                IF the glyph is included in the ‘vert’ feature:
                        IF the ‘vert’ feature treats the character as a
‘Tr’ glyph, and outputs a "pseudo-rotated” glyph ↓:
                                It will Be Incompatible with UAX50, because
the expected output is its upright shape →.
                                Go to 999.
                        ELSE:
                                The output will be compatible with UAX50.
                                (with some adjustment to the glyph design,
typically, about its positioning, needed by the Japanese orthographic and
typographic convention).
                                The application uses the output glyph in
the Upright posture for the vertical writing mode,
                ELSE:
                        The application outputs the horizontal Upright
glyph as is, but it may fail to represent the expected glyph shape of ‘Tu’,
because it cannot be obtained from the font. →
        ELSE:
                The application outputs the horizontal Upright glyph as is,
but it may fail to represent the expected glyph shape of ‘Tu’, because it
cannot be obtained from the font. →
ELIF the character → has the UAX50 vertical posture ‘Tr':
        IF the font has the ‘vert’ feature:
                The ‘vert’ feature is always applied by the application to
get the output glyph:
                IF the glyph is included in the ‘vert’ feature:
                        IF the ‘vert’ feature treats the character not as a
‘Tr’ glyph, and the output glyph does not have the “pseudo-rotated” effect:
                                It may be incompatible with uax50, because
the expected output is a "pseudo-rotated" shape ↓, but the output glyph is
different from it. →.
                                Go to 999.
                        ELSE:
                                The application does not rotate the
horizontal Upright glyph, but uses the output glyph of the ‘vert’ feature. ↓
                                The output result will be compatible with
UAX50. ↓
                                The application uses the output glyph in
the “pseudo-rotated” posture for the vertical composition. ↓
                ELSE:
                        The application handles the horizontal Upright
glyph by itself, possibly by rotating the horizontal Upright glyph, but it
may fail to represent the expected glyph shape of ‘Tr’, because it cannot
be obtained from the font. ↓
        ELSE:
                The application handles the horizontal Upright glyph by
itself, possibly by rotating the horizontal Upright glyph, but it may fail
to represent the expected glyph shape of ‘Tr’ because it cannot be obtained
from the font. ↓
ELIF the character → has the UAX50 vertical posture ‘R':
        IF the font has the ‘vert’ feature:
                The ‘vert’ feature must not be applied by the application.
                Any applications that apply the ‘vert’ feature to
characters with the UAX50 vertical posture ‘R’ will be regarded as UAX50
incompatible applications.
                Go to 999.
        IF the font has the ‘vrtr’ feature:
                The ‘vtrt’ feature is always applied by the application to
get the expected glyph before rotation.
                IF the glyph is included in the ‘vtrt’ feature:
                        The application gets the output glyph, and rotates
it for use in the vertical writing mode. ↓
                ELSE:
                        The application rotates the horizontal upright
glyph for use in the vertical writing mode. ↓
        ELSE:
                The application rotates the horizontal upright glyph for
use in the vertical writing mode. ↓
END

999:
        An UAX50 incompatibility error.
====



-- 
Regards,
Makoto

Received on Thursday, 12 December 2019 07:44:18 UTC