# [XeTeX] Overriding directionality and mirrored shapes

David J. Perry hospes.primus at verizon.net
Sun Sep 17 21:26:04 CEST 2017

The OpenType spec says that when a layout engine encounters a situation
where mirrored glyphs are required, it should automatically apply the
<rtla> or <rtlm> features (assuming they exist in the font). LibreOffice
and TextEdit / Nisus Writer (latter Mac only) do this. See the "Simple
RLO Test" screen shot.  (BTW: I attached the screen shots.  Does this
list allow images in the body of a message?)

XeLaTeX does not. It correctly places the characters RTL after inserting
a right to left override (RLO, U+202E), but the shapes are not mirrored.
See the minimal example below and the screen shot taken from the output
PDF. The same font was used to generate both of the screen shots. (If
you wish to try this for yourself, you will need a font that includes
both the Old Italic block of Unicode and the appropriate OT features. I
will share the one I’m making if anybody is really interested.)

Also, inserting a space character or a command such as \hspace breaks
the effect of the RLO. I’m not completely surprised by this, given how
TeX operates with runs of text, but I wish it wouldn’t.

Xe(La)TeX has always been my go-to software for testing OT features that
other software can’t deal with. I’ve been able to get weird things like
localized features for ancient languages to work; no problem in XeTeX,
you declare the script and the language and the features work. So I’m
disappointed that it doesn’t flip the characters. Am I missing something
obvious?

Also, before anyone asks: I am familiar with the bidi package. It’s
common for scholars to insert short RTL texts, one or a few words, in a
document that is otherwise LTR. In such a situation there is no need for
the advanced facilities that bidi provides, such as getting whole
paragraphs to work RTL and so forth. So I hoped I wouldn’t have to use
it in such situations. (I assume it would automatically mirror the
characters; yes?)

MINIMAL EXAMPLE (Note: unless the font you are using to view this has
the Old Italic characters, it will look wrong.)

% !TEX TS-program = xelatex
% !TEX encoding = UTF-8
\documentclass[12pt]{article}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{xltxtra}
\setmainfont{Times New Roman}

\begin{document}

We are going to test the Old Italic range of Unicode.

\fontspec{Italica Vetus} %use any font that contains the Old Italic
characters and the <rtla> feature.

\medskip
\space{.7in}𐌀𐌁𐌂𐌃𐌄𐌅𐌆𐌇𐌈𐌉𐌊𐌋𐌌𐌍𐌎𐌏𐌐

+RLO\hspace{.25in}\char"202E𐌀𐌁𐌂𐌃𐌄𐌅𐌆𐌇𐌈𐌉𐌊𐌋𐌌𐌍𐌎𐌏𐌐

+RLO\hspace{.25in}\char"202E𐌀𐌁𐌂𐌃𐌄𐌅𐌆𐌇\hspace{.25in}𐌈𐌉𐌊𐌋𐌌𐌍𐌎𐌏𐌐
%this breaks the run

\medskip
Now back to left to right text.

\end{document}

-------------- next part --------------
A non-text attachment was scrubbed...
Name: Simple RLO test.png
Type: image/png
Size: 10503 bytes
Desc: not available
URL: <http://tug.org/pipermail/xetex/attachments/20170917/49ebc670/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Minimal example scnshot.png
Type: image/png
Size: 29149 bytes
Desc: not available
URL: <http://tug.org/pipermail/xetex/attachments/20170917/49ebc670/attachment-0003.png>