%%^^A%%  fontspec-doc-xetex.tex -- part of FONTSPEC <latex3.github.io/fontspec>

\documentclass[a4paper]{l3doc}
\usepackage{fontspec-doc-style}
\showexamplesfalse
\begin{document}

\part{Fonts and features with \XeTeX}
\label{sec:xetex-features}

\section{\XeTeX-only font features}

The features described here are available for any font
selected by \pkg{fontspec}.

\subsection{Mapping}
\label{sec:mapping}

The \feat{Mapping} feature enables a \XeTeX\ text-mapping scheme, with an example shown in \exref{mapping}.

\begin{Xexample}{mapping}{\XeTeX's \feat{Mapping} feature.}
  \fontspec{texgyrepagella-regular.otf}[Mapping=tex-text]
  ``!`A small amount of---text!''
\end{Xexample}

Only one mapping can be active at a time and a second call to \feat{Mapping}
will override the first.
Using the |tex-text| mapping is also equivalent to writing |Ligatures=TeX|.
The use of the latter syntax is recommended for better compatibility with
\LuaTeX\ documents.


\subsection{Different font technologies: \AAT, OpenType, and Graphite}\label{sec:renderer-xetex}

\textbf{Note that from 2020 it appears that \XeTeX\ can no longer support \AAT\ fonts in \MacOSX.}

\XeTeX\ supports three rendering technologies for typesetting, selected with
the \feat{Renderer} font feature. The first, \opt{AAT}, is
that provided only by \MacOSX.
The second, \opt{OpenType}, is an open source OpenType interpreter.
It provides greater support for OpenType features, notably contextual arrangement, over \opt{AAT}.
The third is \opt{Graphite}, which is an alternative to OpenType with particular features for less-common languages and the capability for more powerful font options.
Features for \opt{OpenType} have already been discussed in \vref{sec:opentype-features};
\opt{Graphite} and \opt{AAT} features are discussed later in \vref{sec:graphite-features} and \vref{sec:aat-features}.

Unless you have a particular need, the \feat{Renderer} feature is rarely explicitly required: for OpenType
fonts, the \opt{OpenType} renderer is used automatically, and for \AAT\ fonts,
\opt{AAT} is chosen by default. Some fonts, however, will contain font tables
for multiple rendering technologies, such as the Hiragino Japanese fonts
distributed with \MacOSX, and in these cases one over the other may be preferred.

Among some other font features only available through a specific renderer,
\opt{OpenType} provides for the \feat{Script} and \feat{Language} features, which allow
different font behaviour for different alphabets and languages; see \vref{sec:ot}
for the description of these features. {\em Because these font features can
change which features are able to be selected for the font instance, they are selected
by \pkg{fontspec} before all others and will automatically and without warning
select the \opt{OpenType} renderer.}


\subsection{Vertical typesetting}

\XeTeX\ provides for vertical typesetting simply with the ability to rotate
the individual glyphs as a font is used for typesetting:
\begin{Verbatim}
  \def\verttext{共産主義者は}
  \fontspec{Hiragino Mincho Pro}
  \verttext

  \fontspec{Hiragino Mincho Pro}[Renderer=AAT,Vertical=RotatedGlyphs]
  \rotatebox{-90}{\verttext}% requires the graphicx package
\end{Verbatim}

No actual provision is made for typesetting top-to-bottom
languages; for an example of how to do this, see the vertical Chinese
example provided in the \XeTeX\ documentation.


\section{The Graphite renderer}
\label{sec:graphite-features}

Since the Graphite renderer is designed for less common scripts and languages, usually with
specific or unique requirements, Graphite features are not standard across fonts.

Currently \pkg{fontspec} does not support a convenient interface to select Graphite font
features and all selection must be done via `raw' font feature selection.

Here's an example:
\begin{Verbatim}
  \fontspec{Charis SIL}[
    Renderer=Graphite,
    RawFeature={Uppercase Eng alternates=Large eng on baseline}]
  Ŋ
\end{Verbatim}

Here's another:
\begin{Verbatim}
\fontspec{AwamiNastaliq-Regular.ttf}[Renderer=Graphite] ^^^^06b5
\addfontfeature{RawFeature={Lam with V=V over bowl}}    ^^^^06b5
\end{Verbatim}



\section{\MacOSX's \AAT\ fonts}
\label{sec:aat-features}

\begin{quote}\itshape
\textbf{Warning!}
\XeTeX's implementation on \MacOSX\ is currently in a state of flux and the information contained below may well be wrong from 2013 onwards.
There is a good chance that the features described in this section will not be available any more as \XeTeX's completes its transition to a cross-platform--only application.
All examples in this section have now been removed.
\end{quote}

\MacOSX's font technology began life before the ubiquitous-OpenType era
and revolved around the Apple-invented `\AAT' font format. This format
had some advantages (and other disadvantages) but it never became widely
popular in the font world.

Nonetheless, this is the font format that was first supported by \XeTeX\
(due to its pedigree on \MacOSX\ in the first place) and was the first
font format supported by \pkg{fontspec}. A number of fonts distributed with
\MacOSX\ are still in the \AAT\ format, such as `Skia'.

\subsection{Ligatures}

\feat{Ligatures} refer to the replacement of two separate characters
with a specially drawn glyph for functional or \ae sthetic reasons.
For \AAT\ fonts, you may choose from any combination of \opt{Required},
\opt{Common}, \opt{Rare} (or \opt{Discretionary}), \opt{Logos}, \opt{Rebus},
\opt{Diphthong}, \opt{Squared}, \opt{AbbrevSquared}, and \opt{Icelandic}.

Some other Apple \AAT\ fonts have those `Rare' ligatures contained in
the \opt{Icelandic} feature. Notice also that the old \TeX\ trick of
splitting up a ligature with an empty brace pair does not work in
\XeTeX; you must use a 0\,pt kern or \cs{hbox} (\eg, \cs{null}) to
split the characters up if you do not want a ligature to be performed (the usual examples for when this might be desired are words like `shelf\null full').

\subsection{Letters} \label{sec:aat-letters}
The \opt{Letters} feature specifies how the letters in the current font
will look. For \AAT\ fonts, you may choose from \opt{Normal},
\opt{Uppercase}, \opt{Lowercase}, \opt{SmallCaps}, and
\opt{InitialCaps}.


\subsection{Numbers}
The \feat{Numbers} feature defines how numbers will look in the
selected font. For \AAT\ fonts, they may be a
combination of \opt{Lining} or \opt{OldStyle} and \opt{Proportional} or
\opt{Monospaced} (the latter is good for tabular material). The synonyms
\opt{Uppercase} and \opt{Lowercase} are equivalent to \opt{Lining} and
\opt{OldStyle}, respectively. The differences have been shown previously
in \vref{sec:addfontfeatures}.

\subsection{Contextuals} \label{sec:contextuals}
This feature refers to glyph substitution that vary by their position;
things like contextual swashes are implemented here.
The options for \AAT\ fonts are
\opt{WordInitial}, \opt{WordFinal}, \opt{LineInitial},
\opt{LineFinal}, and \opt{Inner} (sometimes called `non-final'). As
non-exclusive selectors, like the ligatures, you can turn them off
by prefixing their name with \opt{No}.

\subsection{Vertical position}
The \feat{VerticalPosition} feature is used to access things like
subscript (\opt{Inferior}) and superscript (\opt{Superior}) numbers and
letters (and a small amount of punctuation, sometimes).
The \opt{Ordinal} option is (supposed to be)
contextually sensitive to only raise characters that appear directly
after a number.

The \pkg{realscripts} package redefines the \cmd\textsubscript\ and
\cmd\textsuperscript\ commands to use the above font features,
including for use in footnote labels.

\subsection{Fractions}
Many fonts come with the capability to typeset various forms of
fractional material. This is accessed in \pkg{fontspec} with the
\feat{Fractions} feature, which may be turned \opt{On} or \opt{Off}
in both \AAT\ and OpenType fonts.

In \AAT\ fonts, the `fraction slash' or solidus character, is
to be used to create fractions. When \feat{Fractions} are turned
\opt{On}, then only pre-drawn fractions will be used.

Using the \opt{Diagonal} option (\AAT\ only), the font will attempt
to create the fraction from superscript and subscript
characters.

Some (Asian fonts predominantly) also provide for the
\opt{Alternate} feature.

\subsection{Variants}
The \feat{Variant} feature takes a single numerical input for
choosing different alphabetic shapes.
See \vref{sec:newfeatures} for a way to assign names to variants,
which should be done on a per-font basis.

\subsection{Alternates}
Selection of \feat{Alternate}s again must be done numerically.
See \vref{sec:newfeatures} for a way to assign names to alternates,
which should be done on a per-font basis.


\subsection{Style}
The options of the \feat{Style} feature
are defined in \AAT\ as one of the following: \opt{Display},
\opt{Engraved}, \opt{IlluminatedCaps}, \opt{Italic},
\opt{Ruby},\footnotemark\ \opt{TallCaps}, or \opt{Titling}.
\footnotetext{`Ruby' refers to a small optical size, used in
Japanese typography for annotations.}

Typical examples for these features are shown in \ref{sec:ot-feat-style}.

\subsection{CJK shape}
There have been many standards for how CJK ideographic
glyphs are `supposed' to look. Some fonts will contain many alternate
glyphs in order to be able to display these glyphs
correctly in whichever form is appropriate. Both \AAT\ and OpenType
fonts support the following \feat{CJKShape} options:
\opt{Traditional}, \opt{Simplified}, \opt{JIS1978}, \opt{JIS1983},
\opt{JIS1990}, and \opt{Expert}. OpenType also supports the \opt{NLC} option.

\subsection{Character width}
See \vref{sec:CharacterWidth} for relevant examples; the features are
the same between OpenType and \AAT\ fonts.
\AAT\ also allows \feat{CharacterWidth}|=|\opt{Default} to return to
the original font settings.

\subsection{Diacritics}
Diacritics are marks, such as the acute accent or the tilde, applied to letters; they usually indicate a change in pronunciation.
In Arabic scripts, diacritics are used to indicate vowels.
You may either choose
to \opt{Show}, \opt{Hide} or \opt{Decompose} them in \AAT\ fonts.
The \opt{Hide} option is for scripts such as Arabic which may be
displayed either with or without vowel markings. E.g.,
\verb|\fontspec[Diacritics=Hide]{...}|

Some older fonts distributed with \MacOSX\ included `|O/|' \etc\ as shorthand for writing `\O' under the label of the \feat{Diacritics} feature. If you come across such fonts, you'll
want to turn this feature off (imagine typing |hello/goodbye| and
getting `hell\o goodbye' instead!) by decomposing the two characters
in the diacritic into the ones you actually
want. I recommend using
the proper \LaTeX\ input conventions for obtaining such characters
instead.


\subsection{Annotation}
Various Asian fonts are equipped with a more extensive range of
numbers and numerals in different forms. These are accessed through
the \feat{Annotation} feature with the following
options: \opt{Off},
\opt{Box}, \opt{RoundedBox}, \opt{Circle}, \opt{BlackCircle},
\opt{Parenthesis}, \opt{Period}, \opt{RomanNumerals}, \opt{Diamond},
\opt{BlackSquare}, \opt{BlackRoundSquare}, and \opt{DoubleCircle}.

\end{document}

% /©
% ------------------------------------------------
% The FONTSPEC package  <latex3.github.io/fontspec>
% ------------------------------------------------
% Copyright  2022-2025  The LaTeX project,  LPPL "maintainer"
% Copyright  2004-2022  Will Robertson
% Copyright  2009-2015  Khaled Hosny
% Copyright  2013       Philipp Gesang
% Copyright  2013-2016  Joseph Wright
% ------------------------------------------------
% This package is free software and may be redistributed and/or modified under
% the conditions of the LaTeX Project Public License, version 1.3c or higher
% (your choice): <http://www.latex-project.org/lppl/>.
% ------------------------------------------------
% ©/
