John Hudson wrote:
> It might be a good idea if someone explained to us font designers
> exactly what is required of us. Some mirrored forms such as the
> parentheses, are being handled in character processing, not glyph
> processing, and I have yet to see any set of requirements (e.g. in
> Microsoft's Arabic or Hebrew OpenType font specs) for font layout
> features to address any additional mirror glyph behavior.
I am actually working on such a layout feature for OpenType (see at the
end of this message for a complete description).
I believe that the current mirrored and mirrored glyph properties are
useful only when no help can be obtained from the font; otherwise, the
resolved directionality should be provided to the font, which should
then select the appropriate shape for each and every character,
regardless of the mirrored and mirrored glyph properties.
Mirrored glyph encourages application developers to insert a step in the
rendering process, at the character level, to replace occurrences of
U+0028 in rtl contexts by U+0029 (and similarly for the others). The
first problem is that the font is not given any clue that this happened;
in other words, the font designer does not have the opportunity to treat
U+0028 in a rtl context and U+0029 in a ltr context differently; in some
designs that have non symmetric shapes, this could be nice. Second, this
machinery fails entirely for characters that do not have a mirrored
glyph (such as square root). Mirrored glyph is fundamentally something
that belongs to the font, not to the character.
Mirrored is also problematic. It's only use is to trigger the selection
of an alternate glyph, so it is really speaking about glyphs. We admit
that the selection of a small cap or uncase or petite cap or regular or
swash form is not part of the character stream; what makes the selection
of a shape appropriate for rtl or ltr context any different? in
particular, why should we rule out the use of an alternate shape for A
based on the directionality?
One possible objection to my assertions is that the font could trigger
the shape changes based on the script/language of the text, and
therefore not need the directionality. However, that amounts to saying
that we do not need directionality overrides, so it cannot be right.
Comments welcome,
Eric.
Tag: 'rtla'
Friendly name: Right-to-left alternates
Function: A number of Unicode characters are rendered by different
shapes depending on the directional context in which they appear. For
example, the character U+0028 LEFT PARENTHESIS is interpreted by the
Unicode standard as an opening parenthesis and it appears as “(” in
left-to-right contexts, and as “)” in right-to-left contexts (this is
described on page 66 of the Unicode Standard, version 3.0). The 'rtla'
feature is used access the shape appropriate for a right-to-left context.
Example: The 'rtla' feature replaces the glyph “(” by the glyph “)”.
Recommended implementation: substitution feature. Since this feature is
a glyph selection feature, it should probably be performed early in the
shaping process. At least all the glyphs mapped from characters with the
mirrored property should have a replacement.
Application interface: the layout application applies the Unicode bidi
algorithm to the character string to display, and maps the resulting
character string to glyphs via the cmap. It activates the 'rtla' feature
on glyphs that correspond to characters with an odd resolved level. It
is important to note that all such glyphs should have the 'rtla'
feature, not just those that correspond to characters with mirrored
property. The motivation is that the font designer may want additional
characters to assume different shapes (e.g. U+201C LEFT DOUBLE QUOTATION
MARK).
UI suggestion: none.
Script/language sensitivity: none.
Feature interaction: This feature may be used in combination with other
features.
This archive was generated by hypermail 2.1.2 : Thu Mar 28 2002 - 12:24:27 EST