BidiMirrored property and ancient scripts (Was Re: Plain text custom fraction input)

Eli Zaretskii eliz at
Sat Jul 25 04:52:53 CDT 2015

> Date: Sat, 25 Jul 2015 10:11:02 +0100
> From: Richard Wordingham <richard.wordingham at>
> On Sat, 25 Jul 2015 10:51:19 +0300
> Eli Zaretskii <eliz at> wrote:
> > > Reread the Bidi algorithm, especially
> > > and
> > >
> > > 
> > > In principle, I could have a higher-level protocol that mirrors
> > > lamedh on Wednesdays, but I must follow the rules for parentheses. 
> > 
> > I don't see how this is related.  What HL6 describes is something that
> > should make sense.  For example, Emacs uses '/' as a kind of
> > "mirrored" '\', when it needs to indicate that a line in an R2L
> > paragraph is continued on the next screen line.
> HL6 reads:
> "Certain characters that do not have the Bidi_Mirrored property can also
> be depicted by a mirrored glyph in specialized contexts. Such contexts
> include, but are not limited to, historic scripts and associated
> punctuation, private-use characters, and characters in mathematical
> expressions. (See Section 7, Mirroring.) These characters are those
> that fit at least one of the following conditions:
> 1) Characters with a resolved directionality of R
> 2) Characters with a resolved directionality of L and whose
> bidirectional type is R or AL"


> The logic of my statement is as follows:
> a) 'Specialised contexts' is undefined; 'specialised context' may
> therefore include 'whenever I see fit'.

No.  HLn clauses are for implementations that use their specialized
logic on top of the UBA-mandated behavior.  That logic must make
sense, in the context of the implemented functionality.  "Whenever I
see fit" doesn't fulfill that requirement, certainly not when the
implementation has anything to do with presenting human-readable text.

> b) The bidirectional type of lamedh is 'R', and it will always have
> a resolved directionality.  The resolved directionalities are 'L' and
> 'R'.

But it doesn't have a mirrored glyph, at least not in most fonts.

> c) Therefore I may choose to mirror all lamedhs on Wednesdays.

If your implementation's purpose is to illustrate random permutations
of glyphs, or artificially scrambling the text appearance, maybe.  But
if the implementation's purpose is to present a legible text using
that character in some modern script, then no, it makes no sense and
would be perceived as a bug.  Although it'd probably be rendered "not
guilty for lack of evidence" in a court of UBA law.

> Similarly, an arrow with a resolved directionality of R may be mirrored
> if a higher level protocol so dictates.

Again, you'd have to present a protocol that makes sense in the
context of the specific implementation.  Otherwise, it's a bug.

> The issue lies with the wording of condition (1).  One might expect it
> to apply only to characters with a bidirectional type of L.

I see no reason to restrict this to L characters.  I'd be interested
to hear your rationale for that.

> My surmise is that it attempts to address text whose directionality
> is not known before rendering.

Indeed, UBA mirroring is only relevant to neutral characters.

> The most obvious example would be where an application is laying out
> boustrophedon text in.

I don't think so.  I agree with those who maintain that boustrophedon
is unidirectional text, and so out of scope for the UBA.

More information about the Unicode mailing list