BidiMirrored property and ancient scripts

Eli Zaretskii eliz at
Sun Jul 26 10:08:00 CDT 2015

> Date: Sat, 25 Jul 2015 22:15:40 +0100
> From: Richard Wordingham <richard.wordingham at>
> > > Mirroring is changing a glyph to suitable for reading in the other
> > > direction.
> >
> > Sorry, I disagree.
> >
> > > Note the following extract from BidiMirroring.txt in the
> > > Unicode Character Database:
> > >
> > > <quote>
> > > # The following characters have no appropriate mirroring character.
> > > # For these characters it is up to the rendering system
> > > # to provide mirrored glyphs.
> >
> > How's that a contradiction to what I said?
> U+2140 DOUBLE-STRUCK N-ARY SUMMATION gets mirrored, but its glyph is
> not replaced by any other character's glyph. Or are you claiming that
> left-to-right U+2140 and right-to-left U+2140 are two different
> characters?

I'm saying that "providing a mirrored glyph" entails coming up with a
character whose glyph can play that role, AFAIU.

If you are saying that the "rendering system" here is the shaping
engine using the rtlm OTF feature, then you are in fact saying that
the mirroring of these characters cannot be implemented with most
fonts in wide use today, and with most shaping engines.  That would be
a very strange claim, IMO, tantamount to saying that those characters
cannot, or don't need to, be mirrored at all in most use cases.

> > > > Thus, your reasons make no sense to me, because a character's
> > > > shape, any character's shape, be it L, R, AL, or anything else,
> > > > is immutable.
> > >
> > > So go back and reread.
> >
> > Did that; still no sense.
> Because you still seem not to understand the concept of mirroring.

I think you will fare much better, and actually stand a chance of
convincing you are right, if you assume your opponents do understand
the issues, and just happen to disagree about their interpretation, or
misinterpret what you write.

> It isn't just for characters that have a Bidi_Mirroring_Glyph
> property value other than <none>.

Only "in specialized contexts", like "historic scripts and associated
punctuation, private-use characters, and characters in mathematical
expressions" (I believe the latter is only happening in Arabic
context, if it ever does).  IOW, in extremely rare and marginal use
cases.  And all that is only in HL6, which is really a fire escape
meant for applications whose scope is beyond simple text.  That's a
far cry from boustrophedon, which was the trigger for most of this
exchange.  In all other cases:

  L4. A character is depicted by a mirrored glyph if and only if (a)
  the resolved directionality of that character is R, and (b) the
  Bidi_Mirrored property value of that character is Yes.

That's normative and unequivocal.

> > > > > However, one needs the UBA to sort out the rendering of the
> > > > > parentheses in the Hebrew text.
> > >
> > > > Not really, you can short-cut it, the same as in strictly
> > > > left-to-right text.
> > >
> > > It's the UBA that mandates that the opening and closing parentheses
> > > be rendered like right and left parentheses respectively rather
> > > than like left and right parentheses.
> >
> > Mirroring comes after layout in the UBA, as you pointed out, and the
> > short-cuts I mentioned are about layout, not about mirroring.
> So irrelevant.

No, not irrelevant.  You can sort out rendering of parentheses in such
text without applying the BPA, just by considering the parentheses as
neutrals.  That's one shortcut I alluded to.

> I take it we now agree that the right shape for the parentheses for the
> unidirectional right-to-left example is derived by the UBA.

The mirroring is dictated by the UBA, yes.  But that just delineates
the difference between boustrophedon and bidirectional text, the
latter being subject to the UBA, while the former isn't.

> > > > > Indeed, one may rely on the bidi algorithm to declare the Latin
> > > > > example unidirectional.
> > > >
> > > > One might, but to what purpose and goal?
> > >
> > > A right-to-left paragraph consisting of the two characters "(a"
> > > would be bidirectional and have a parenthesis on the right; a
> > > left-to-right paragraph with the same content would have a
> > > parenthesis on the left.
> If there is no higher-level protocol in effect, the 'first strong
> character' rule (Rules P2 and P3 of the UBA) declares that the
> paragraph will be a left-to-right paragraph and will look
> like "(a". Had it been declared a right-to-left paragraph by a
> higher-level protocol, it would look like "a)". Thus the UBA has a
> rôle even for unidirectional left-to-right text.

Once the paragraph direction is overridden by a higher-level protocol,
the text is no longer unidirectional.  Such overriding is equivalent
to enclosing the paragraph in RLE..PDF pair, which makes the text
bidirectional by definition.

More information about the Unicode mailing list