[XeTeX] misplaced combining diacritical marks 2

Jonathan Kew jfkthame at googlemail.com
Wed Sep 1 21:56:55 CEST 2010


On 1 Sep 2010, at 20:32, Khaled Hosny wrote:

> On Wed, Sep 01, 2010 at 08:03:03PM +0200, Alexander Schultheiß wrote:
>> Hey David,
>> 
>>> This is just not true.  The example I sent you works correctly on my
>>> machine; I deliberately included y-macron-acute which does not exist in
>>> precomposed form in Unicode.
>> 
>> I don't think they work correctly, in the sense that they are
>> positioned according to the anchor points.

I have not attempted to follow this thread closely, but I will just comment that xetex DOES normally use OpenType mark-positioning features as defined in GPOS tables. It does not "fake" anything regarding this, although it's possible that additional macro packages (such as xunicode) may attempt to "fake" characters or combinations that are not actually supported by the font in use -- or may interfere with the native operation of the font, if they try to redefine combining marks, etc.

Example to show the use of mark positioning using the Charis SIL font, which has extensive support for diacritics, handled using anchor points on the base and diacritic glyphs:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass{article}

\usepackage{fontspec}
\setmainfont{Charis SIL}

\begin{document}

\def\x#1{#1\char"304\char"308\char"303\char"302\char"301\relax}
\def\y#1{#1\char"301\char"302\char"303\char"308\char"304\relax}

Examples of diacritic mark positioning:

{\Large\x{a}\y{a} \x{b}\y{b} \x{c}\y{c} 
\x{L}\y{L} \x{M}\y{M} \x{N}\y{N}
\x{x}\y{x} \x{y}\y{y} \x{z}\y{z}}

{\Large\emph{\x{a}\y{a} \x{b}\y{b} \x{c}\y{c} 
\x{L}\y{L} \x{M}\y{M} \x{N}\y{N}
\x{x}\y{x} \x{y}\y{y} \x{z}\y{z}}}


\addfontfeature{RawFeature={-mark,-mkmk}}
Compare results with mark positioning disabled:

{\Large\x{a}\y{a} \x{b}\y{b} \x{c}\y{c} 
\x{L}\y{L} \x{M}\y{M} \x{N}\y{N}
\x{x}\y{x} \x{y}\y{y} \x{z}\y{z}}

{\Large\emph{\x{a}\y{a} \x{b}\y{b} \x{c}\y{c} 
\x{L}\y{L} \x{M}\y{M} \x{N}\y{N}
\x{x}\y{x} \x{y}\y{y} \x{z}\y{z}}}

\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%





More information about the XeTeX mailing list