From: Asmus Freytag (firstname.lastname@example.org)
Date: Tue Nov 04 2008 - 02:35:45 CST
On 11/3/2008 11:54 PM, Kent Karlsson wrote:
> John Hudson wrote:
>> Kent Karlsson wrote:
>>> It does NOT cover the RTL case, as I wrote. There is not
>>> even a loophole (which I think is a bad approach anyway) in
>>> the bidi algorithm that would cover Old Hungarian as RTL
>>> overridden as LTR to even sometimes produce mirrored glyphs.
>> POI: there is an OpenType working group who are spec'ing new layout
>> features for LTR/RTL *glyph* mirroring, for inclusion in the
>> v1.6 of the
>> OT spec. Unicode provides for some mirroring at the character level,
>> while other mirroring must happen at the glyph level, which
>> implies font
>> features; and of course the result of glyph mirroring must not reverse
>> the result of character mirroring.
> I'm not sure what you mean by "character level mirroring" vs. "glyph
> mirroring" here.
> Even so, this is my take:
> The bidi algorithm sometimes specifies to mirror something, this
> something is on the way from character to glyph, but the bidi algorithm
> is specified on characters.
> While Unicode does not make this explicit, there is an expectation that
> "truly" paired symmetric-ish punctuation (parentheses, brackets, similar,
> but NOT quote marks) need to be mirrored by using the opposite character
> in the pair. Otherwise italics will look funny.
This is news to me. The bidi algorithm merely states which characters
should have an alternate, mirrored shape, to be used when the character
is rendered in the opposite direction, and which do not. How you handle
italics is up to your font and rendering system. Mirrored shapes, in
this sense, are not defined as geometrical mirror images, but the shapes
that are appropriate for the rendering in the other directionality.
That's usually the true mirror image, but in the case of slanted font
designs, that may not be true. So, contrary to what you write, I believe
that mirroring is always a glyph substitution, but not always a glyph
> Other characters to be mirrored, when the bidi algorithm says so, are
> expected to be glyph mirrored (there need not be a character that has
> an appropriate mirror glyph). Except for the loophole I mentioned before,
> and except for the parentheses/brackets/... mentioned above, these are
> for characters that have (or should have) "upright" glyphs even when
> surrounding text is italic.
> Note that the data file BidiMirroring.txt is for applications that
> cannot do glyph based mirroring (and for parentheses/brackets/...
> also when glyph based mirroring is available).
Correct, this file is simply list of "if my font doesn't have mirrorred
glyphs, is there a paired character code that I could use to effectively
get a mirror image of my current character's glyph". That's fallback
> When the bidi algorithm says not to mirror, the font is *not* to do
> mirroring (based on any bidi results). Otherwise there is something
> wrong. That is why I was talking about what the bidi algorithm says
> to mirror, and not to mirror, as well as the (ugly) loophole for
> LTR overridden to RTL (but, currently, no such loophole for RTL
> overridden as LTR).
Correct, that would be my understanding, too. This is really important,
because there are many characters which are not listed as mirrored under
bidi, but which nevertheless usually need to be replaced with a
character that is oriented the other way. Arrows are a prime example.
These characters are explicitly excepted, because some arrows may be
present in the document to indicate left-right directions in the
physical world, not relative to the text flow. These characters, the
author needs to specifically choose to match the desired directionality.
Some characters are funny in that not all of their constituent
components are mirrored (e.g. the digit in the cube root symbol). Many
of these characters are also not handled by implicit mirroring.
> This would be something handled by the font handling system (mirror
> the given glyph), NOT something that involves font features or GSUB
> at all. It's not clear how to handle italics for "loophole mirrored
> characters", but if it is just obliquing, maybe the angle of obliquing
> should be adjusted (or logically be done after mirroring).
>> I believe this approach will resolve the kind of glyph mirroring issues
>> Kent describes. Indeed, Old Hungarian came up in our discussions as an
>> example of a default RTL script that might require an <ltra> variant
>> GSUB feature.
> I would disagree. See above and messages I sent yesterday. Note that
> there is still no loophole (nor anything better), as yet, in the bidi
> algorithm that allows for mirroring of an RTL character's glyph when
> overridden to LTR.
Given the mandatory nature of the bidi algorithm, such a loophole should
either be created, or historical scripts should never be encoded with
default RTL directionality.
> Graphically mirroring (or turning, which seems to occur as well) of lines,
> or line segments, would apply to everything in a line (segment), and thus
> be entirely independent of any font data (features, GSUB, ...) as well.
> /kent k
>> John Hudson
This archive was generated by hypermail 2.1.5 : Tue Nov 04 2008 - 02:38:00 CST