summaryrefslogtreecommitdiff
path: root/info/xetexref/xetex-reference.tex
diff options
context:
space:
mode:
Diffstat (limited to 'info/xetexref/xetex-reference.tex')
-rw-r--r--info/xetexref/xetex-reference.tex309
1 files changed, 226 insertions, 83 deletions
diff --git a/info/xetexref/xetex-reference.tex b/info/xetexref/xetex-reference.tex
index 2c6cc2661e..ae859e3b32 100644
--- a/info/xetexref/xetex-reference.tex
+++ b/info/xetexref/xetex-reference.tex
@@ -4,7 +4,7 @@
% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
@@ -19,12 +19,17 @@
\title{The \xetex reference guide\\\url{https://ctan.org/pkg/xetexref}}
\author{Will Robertson \and Khaled Hosny \and Karl Berry}
-\date{\VERSION}
+\date{\today}
\suppressfontnotfounderror=1
+\tracinglostchars=1
\makeatletter
\def\@dotsep{999}
+\makeatother
+
+\usepackage{refstyle} % must load before unicode-math with 2023 LaTeX.
+% https://tex.stackexchange.com/questions/675145
\usepackage{fontspec,unicode-math}
\setmainfont{texgyrepagella}[
@@ -43,13 +48,13 @@
BoldItalicFont = *-bolditalic ,
Scale=MatchLowercase
]
-\setmonofont{inconsolata}[
+\iffalse \setmonofont{inconsolata}[
Scale=MatchLowercase,
StylisticSet=3, % <- straight quotes
- AutoFakeSlant=.2]
+ AutoFakeSlant=.2]\fi
\setmathfont{texgyrepagella-math.otf}
-\usepackage{calc,fancyvrb,hyperref,refstyle,varioref,xcolor,hologo,xspace}
+\usepackage{calc,fancyvrb,hyperref,varioref,xcolor,hologo,xspace}
\usepackage{geometry}
%\geometry{screen,margin=3cm}
@@ -88,9 +93,9 @@
\edef\|{|}
\DefineShortVerb{\|}
\newcommand\xarg[1]{$\langle\hbox{\rmfamily\itshape #1}\rangle$}
-\let\meta\xarg
\def\<#1>{\xarg{#1}}
\newcommand\oarg[1]{\texttt{[\,#1\,]}}
+\newcommand\barg[1]{\mbox{{\tt\char`\{\,}#1\,{\tt\char`\}}}}% braced arg
\newcommand\desc[1]{\par\noindent\ignorespaces#1\par}
\def\endcmd{%
\end{minipage}
@@ -103,25 +108,39 @@
\newlength\exampleindent
\setlength\exampleindent{1em}
+\newenvironment{examplenooutput}
+ {\wlog{^^Jstarting examplenooutput at line \the\inputlineno}
+ \VerbatimEnvironment
+ \begin{VerbatimOut}{\examplefilename}}
+ {\end{VerbatimOut}
+ \def\typesetoutput{[No output for the example, since no AAT or
+ Graphite fonts are available.}
+ \typesetexample}
+
\newenvironment{example}
- {\VerbatimEnvironment
+ {\wlog{^^Jstarting example at line \the\inputlineno}
+ \VerbatimEnvironment
\begin{VerbatimOut}{\examplefilename}}
{\end{VerbatimOut}
+ \def\typesetoutput{\color[rgb]{0.7,0,0}\input\examplefilename\relax}%
\typesetexample}
+
\newcommand\typesetexample{%
\begin{trivlist}\item[]
\vrule
\hspace{\exampleindent}
\begin{minipage}{\linewidth-\exampleindent-\exampleindent}
+ \hfuzz=24pt % italic small caps example has overfull line
\textit{Example:}\par
\vspace{0.4\baselineskip}
\BVerbatimInput[fontsize=\small]{\examplefilename}\par
\vspace{0.4\baselineskip}
- \color[rgb]{0.7,0,0}\input\examplefilename\relax
+ \typesetoutput
\end{minipage}\par
\end{trivlist}}
+
\let\strong\textbf
\newcommand\hlink[2]{\href{#1}{#2}\footnote{\url{#1}}}
@@ -145,19 +164,21 @@
\section*{Introduction}
-This document serves to summarise additional features of \xetex without
-being so much as a ‘users’ guide. Much of the functionality
-addressed here is provided in abstracted form in various \latex
-packages and \context modules.
+This document serves as a reference for additional features of \xetex.
+It is not a users' guide. Much of the functionality addressed here is
+provided in abstracted form in various \latex packages and \context
+modules.
-The descriptions here should be a fairly exhaustive list of the new
-primitives and features of \xetex. Descriptions are still rather
-aenemic, however.
+The descriptions here are intended to be a reasonably complete, though
+terse, list of the new primitives and features of \xetex.
+
+For contributions (very welcome!), bug reports, etc., see links from
+the CTAN package page: \url{https://ctan.org/pkg/xetexref}.
\section*{License}
This work, is distributed under the terms of the LaTeX Project Public License
-(\url{http://www.latex-project.org/lppl.txt}).
+(\url{https://www.latex-project.org/lppl.txt}).
This basically means you are free to re-distribute this file as you
wish; you may also make changes to this file or use its contents for
@@ -283,7 +304,7 @@ The following \xarg{font options} control which `renderer' \xetex uses to interf
\item[/AAT] Explicitly use the AAT renderer (Mac~OS~X only).
\item[/OT] Explicitly use the OpenType renderer (new in 0.9999).
\item[/GR] Explicitly use the Graphite renderer.%
- \footnote{\url{http://scripts.sil.org/cms/scripts/page.php?site_id=projects&item_id=graphite_home}}
+ \footnote{\raggedright \url{https://scripts.sil.org/cms/scripts/page.php?site_id=projects&item_id=graphite_home}}
\item[/ICU] Explicitly use the OpenType renderer (deprecated since 0.9999).
\end{optdesc}
@@ -292,7 +313,7 @@ The following \xarg{font options} control which `renderer' \xetex uses to interf
The \xarg{font features} is a comma or semi-colon separated list
activating or deactivating various OpenType, Graphite, or AAT font
-features, which will vary by font. In contrast to font options,
+features; these vary by font. In contrast to font options,
features work whether the font is selected by file name or through the
operating system.
@@ -302,21 +323,20 @@ font (see comments at the top of each).
\subsubsection{Font features specific to OpenType, Graphite, or AAT}
-OpenType font features are usually chosen with
-\hlink{http://www.microsoft.com/typography/otspec/featuretags.htm}{standard
-tags}. They may be either comma- or semicolon-separated, and prefixed
-with a |+| to turn them on and a |-| to turn them off, optionally followed
-by |=| and a 0-based index for selecting alternates from multiple
-alternates features (ignored for |-| prefixed tags).
+OpenType font features are usually specified with
+\hlink{https://www.microsoft.com/typography/otspec/featuretags.htm}{standard
+tags} in the \cs{font} command. They may be either comma- or
+semicolon-separated, and prefixed with a |+| to turn them on and a |-|
+to turn them off, optionally followed by |=| and a 0-based index for
+selecting alternates from multiple alternates features (ignored for |-|
+prefixed tags).
\begin{example}
\font\liber="[LinLibertine_RI.otf]/I=5:+smcp" at 12pt
\liber This is the OpenType font Linux Libertine in italic with small caps.
\end{example}
-Varying depending on the language and script in use (see
-\secref[vref]{script}), a small number of OpenType features, if they
-exist, may be activated by default.
+OpenType features can be activated by default:
\begin{example}
\font\antt="[AntykwaTorunska-Regular.otf]" at 12pt \antt 0
@@ -329,12 +349,12 @@ exist, may be activated by default.
AAT font features and Graphite font features are specified by strings
within each font rather than standardised tags. Therefore, even
-equivalent features between different fonts can have different names.
+equivalent features can and do have different names in different fonts.
-\begin{example}
-\font\gra="[CharisSIL-R.ttf]/GR:Small Caps=True" at 12pt
+\begin{examplenooutput}
+\font\gra="[CharisSIL-Regular.ttf]/GR:Small Caps=True" at 12pt
\gra This is the Graphite font Charis SIL with small caps.
-\end{example}
+\end{examplenooutput}
\subsubsection{Features for all fonts}
@@ -346,7 +366,7 @@ Triple pair of hex values to specify the colour in RGB space, with an
optional value for the transparency.
\begin{example}
-\font\9="[lmsans10-regular]:color=0000FF,mapping=tex-text"
+\font\9="[lmsans10-regular.otf]:color=0000FF,mapping=tex-text"
\9 A sans blue quoted em-dash: ``---''.
\end{example}
@@ -379,10 +399,10 @@ size.
\subsubsection{OpenType script and language support}\seclabel{script}
-OpenType font features (and font behaviour) can vary by
-\hlink{http://www.microsoft.com/typography/otspec/scripttags.htm}{script}
+OpenType font features (and font behavior) can vary by
+\hlink{https://www.microsoft.com/typography/otspec/scripttags.htm}{script}
(‘alphabet’) and by
-\hlink{http://www.microsoft.com/typography/otspec/languagetags.htm}{language}.
+\hlink{https://www.microsoft.com/typography/otspec/languagetags.htm}{language}.
These are selected with four and three letter tags, respectively.
\begin{optdesc}
@@ -431,8 +451,8 @@ Enables glyph rotation in the output so vertical typesetting can be performed.
\texttt{\fontname#1} is rendered by
\ifcase\XeTeXfonttype#1\TeX\or AAT\or OpenType\or Graphite\fi.\par}
\font\1="cmr10"
-\font\2="[CharisSIL-R.ttf]"
-\font\3="[CharisSIL-R.ttf]/OT"
+\font\2="[CharisSIL-Regular.ttf]"
+\font\3="[CharisSIL-Regular.ttf]/OT"
\whattype\1 \whattype\2 \whattype\3
\end{example}
@@ -447,7 +467,7 @@ Enables glyph rotation in the output so vertical typesetting can be performed.
\endcmd
\begin{example}
-\font\1="[CharisSIL-R.ttf]"\1
+\font\1="[CharisSIL-Regular.ttf]"\1
The first character in Charis SIL is: "\char\XeTeXfirstfontchar\1"
and the last character is: "\char\XeTeXlastfontchar\1".
\end{example}
@@ -488,7 +508,7 @@ font.}
\endcmd
\begin{example}
-\font\1="[CharisSIL-R.ttf]"\1
+\font\1="[CharisSIL-Regular.ttf]"\1
The glyph slot in Charis SIL for the Yen symbol is:
\the\XeTeXglyphindex"yen" . % font-specific glyph name
Or: \the\XeTeXcharglyph"00A5. % unicode character slot
@@ -536,7 +556,7 @@ these two dimensions.}
#1}
\noindent
-\font\x="[CharisSIL-I.ttf]" at 24pt \x
+\font\x="[CharisSIL-Italic.ttf]" at 24pt \x
\shadebbox{A} \shadebbox{W} \shadebbox{a} \shadebbox{f}
\shadebbox{;} \shadebbox{*} \shadebbox{=}
\end{example}
@@ -604,6 +624,9 @@ for better copy/paste and search in PDF viewers.}
\subsection{AAT and Graphite fonts}
+These commands apply to AAT and Graphite fonts; for other kinds of
+fonts, they produce an error.
+
\subsubsection{Features}
\cmd|\XeTeXcountfeatures|
@@ -635,18 +658,18 @@ exclusive (can only take a single selector).}
\xarg{font}
\xarg{feature name}
\desc{This command provides a method to query whether a feature name
-corresponds to a feature contained in the font. It represents an integer
+corresponds to a feature contained in the font. It returns an integer
corresponding to the feature number used to access the feature
numerically. If the feature does not exist, the integer is
\texttt{-1}. Also see \cs{XeTeXfindselectorbyname}.}
\endcmd
-\begin{example}
-\font\1="[CharisSIL-R.ttf]/GR" at 10pt
+\begin{examplenooutput}
+\font\1="[CharisSIL-Regular.ttf]/GR" at 10pt
\def\featname{Uppercase Eng alternates}
The feature ‘\featname’ has index
\the\XeTeXfindfeaturebyname\1 "\featname"\relax
-\end{example}
+\end{examplenooutput}
\subsubsection{Feature selectors}
@@ -681,14 +704,13 @@ feature of a \xarg{font}.}
of a font is on by default.}
\endcmd
-
\cmd|\XeTeXfindselectorbyname|
\xarg{font}
\xarg{feature name}
\xarg{selector name}
\desc{This command provides a method to query whether a feature selector
name corresponds to a selector of a specific feature contained in the
-font. It represents an integer corresponding to the selector number used
+font. It returns an integer corresponding to the selector number used
to access the feature selector numerically. If the feature selector does
not exist, the integer is \texttt{-1}.
@@ -698,8 +720,8 @@ below). Alternatively, they can be used as a means of checking whether a
feature/selector exists before attempting to use it.}
\endcmd
-\begin{example}
-\font\1="[CharisSIL-R.ttf]/GR" at 10pt
+\begin{examplenooutput}
+\font\1="[CharisSIL-Regular.ttf]/GR" at 10pt
\def\featname{Uppercase Eng alternates}
\newcount\featcount
\featcount=\XeTeXfindfeaturebyname\1 "\featname"\relax
@@ -709,11 +731,11 @@ feature/selector exists before attempting to use it.}
\seleccount=\XeTeXfindselectorbyname\1 \featcount "\selecname"\relax
The feature selector ‘\selecname’ has index \the\seleccount
-\font\2="[CharisSIL-R.ttf]/GR:\featname=\selecname" at 10pt
-\font\3="[CharisSIL-R.ttf]/GR:\the\featcount=\the\seleccount" at 10pt
+\font\2="[CharisSIL-Regular.ttf]/GR:\featname=\selecname" at 10pt
+\font\3="[CharisSIL-Regular.ttf]/GR:\the\featcount=\the\seleccount" at 10pt
Activating the feature: \1 Ŋ \2 Ŋ \3 Ŋ
-\end{example}
+\end{examplenooutput}
\subsubsection{Variation axes}
@@ -878,9 +900,19 @@ optional keyword:\medskip
\section{Characters}
+\cmd|\char|
+\xarg{number}
+\desc{This and related \TeX\ primitives have been extended to take any
+16-bit number, that is, up to 65536. As usual, hex digits must be
+specific in uppercase: \cs{char"FF}, not \cs{char"ff}.}
+\endcmd
+
\cmd|\Uchar|
\xarg{number}
-\desc{Expands to a character token with specified slot \meta{number} (range 0 to 1,114,111) with category code 12. While it looks superficially like the \TeX\ primitive \cs{char}, \cs{Uchar} is an expandable operation.}
+\desc{Expands to a character token with specified slot \xarg{number}
+(range 0 to 1,114,111) with category code 12. While it looks
+superficially like the \TeX\ primitive \cs{char}, \cs{Uchar} is an
+expandable operation.}
\endcmd
\begin{example}
@@ -892,8 +924,9 @@ optional keyword:\medskip
\cmd|\Ucharcat|
\xarg{number}
\xarg{catcode}
-\desc{Expands to a character token with slot \meta{number} and \meta{catcode} specified.
-The values allowed for \meta{catcode} are: 1--4, 6--8 and 10--13.}
+\desc{Expands to a character token with slot \xarg{number} and
+\xarg{catcode} specified. The values allowed for \xarg{catcode} are:
+1--4, 6--8 and 10--13.}
\endcmd
\begin{example}
@@ -976,10 +1009,10 @@ aAa A a B aBa BB
\section{Encodings}
\cmd|\XeTeXinputnormalization|
-\xarg{Integer}
+\xarg{integer}
\desc{Specify whether \xetex is to perform normalisation on the input
text and, if so, what type of normalisation to use. See
-\url{http://unicode.org/reports/tr15/} for a description of Unicode
+\url{https://unicode.org/reports/tr15/} for a description of Unicode
normalisation. The \<Integer> value can be:\medskip
\begin{optdesc}
\item[0] (default) do not perform normalisation.
@@ -991,40 +1024,40 @@ normalisation. The \<Integer> value can be:\medskip
\endcmd
\cmd|\XeTeXinputencoding|
-\xarg{Charset name}
+\xarg{charset name}
\desc{Defines the input encoding of the following text.}
\endcmd
\cmd|\XeTeXdefaultencoding|
-\xarg{Charset name}
+\xarg{charset name}
\desc{Defines the input encoding of subsequent files to be read.}
\endcmd
\section{Line breaking}
\cmd|\XeTeXdashbreakstate|
-\xarg{Integer}
+\xarg{integer}
\desc{Specify whether line breaks after en- and em-dashes are
allowed. Off, 0, by default.}
\endcmd
\cmd|\XeTeXlinebreaklocale|
-\xarg{Locale ID}
+\xarg{locale-id}
\desc{Defines how to break lines for multilingual text.}
\endcmd
\cmd|\XeTeXlinebreakskip|
-\xarg{Glue}
+\xarg{glue}
\desc{Inter-character linebreak stretch}
\endcmd
\cmd|\XeTeXlinebreakpenalty|
-\xarg{Integer}
+\xarg{integer}
\desc{Inter-character linebreak penalty}
\endcmd
\cmd|\XeTeXupwardsmode|
-\xarg{Integer}
+\xarg{integer}
\desc{If greater than zero, successive lines of text (and rules, boxes,
etc.) will be stacked upwards instead of downwards.}
\endcmd
@@ -1074,7 +1107,7 @@ circle) and the rotation is counterclockwise. The syntax of
\| \<coerced dimen> \| \<internal dimen>\\
\<normal decimal> $\to$ \<normal integer> \| \<decimal constant>
\end{quote}
-A \xarg{coerced dimen} or \xarg{internal dimen} is interpreted as number
+A \xarg{coerced dimen} or \xarg{internal dimen} is interpreted as a number
with unit ‘|pt|’. For example, for a rotation specified with a dimension
\cs{testdim},
\begin{itemize}
@@ -1082,17 +1115,17 @@ with unit ‘|pt|’. For example, for a rotation specified with a dimension
\item \verb|\testdim=1in | is 72.27\textdegree, and
\item \verb|\testdim=100sp| is (100/65536)\textdegree.
\end{itemize}
-In all cases the resulting decimal number for rotation $x$ must be
+In all cases, the final decimal number for rotation $x$ must be
within the limits $-16384 < x < 16384$.
The \cs{XeTeXpdffile} command takes one more optional argument for
specifying to which ‘box’ the PDF should be cropped before inserting
-it (the second optional argument listed in thes syntax of
+it (the second optional argument listed in the syntax of
\cs{XeTeXpdffile} above). The PDF standard defines a number of
(rectangular) bounding boxes that may be specified for various
purposes. These are described in the PDF Standard\footnote{Adobe
Systems Incorporated, 2008:\\
-\url{http://www.adobe.com/devnet/acrobat/pdfs/PDF32000_2008.pdf}} and
+\url{https://adobe.com/devnet/acrobat/pdfs/PDF32000_2008.pdf}} and
summarised below.
\begin{quote}
\begin{description}[style=nextline,leftmargin=1.5cm]
@@ -1148,7 +1181,13 @@ the specified \xarg{font} to $n/1000$\,em. $n$ is clipped to $\pm1000$.}
\endcmd
-\section{Cross-compatibility with \pdftex and/or \luatex}
+\section{Cross-compatibility with other \TeX\ engines}
+
+All of the major (non-frozen) \TeX\ engines support most of the
+functionality described in this section, in one way or another, so that
+macro formats (e.g., \LaTeX) can make use of it. Please see the
+pdf\TeX{} manual for details (where all these primitive names begin with
+\verb|\pdf...|).
\subsection{Geometry}
@@ -1182,8 +1221,8 @@ the specified \xarg{font} to $n/1000$\,em. $n$ is clipped to $\pm1000$.}
but it is still expandable.}
\endcmd
-\cmd|\ifincsname...(\else...)\fi|
-\desc{\tex conditional to branch true if the expansion occurs within
+\cmd|\ifincsname...[\else...]\fi|
+\desc{\tex conditional, true if the expansion occurs within
\texttt{\char`\\csname ... \char`\\endcsname}.}
\endcmd
@@ -1193,12 +1232,26 @@ but it is still expandable.}
\x/\csname\x\endcsname
\end{example}
-\cmd|\ifprimitive| \xarg{control sequence} |...(\else...)\fi|
+\cmd|\ifprimitive| \xarg{control sequence} |...[\else...]\fi|
\desc{\tex conditional to test if a control sequence is a primitive
which still has its primitive meaning, \ie, has not been redefined or
undefined.}
\endcmd
+\cmd|\partokencontext|
+\xarg{integer}
+\desc{Specifies the cases in which \cs{par}, or the given
+\cs{partokenname} (see next) is internally emitted. The default is zero,
+yielding the standard behavior. See the \pdftex\ manual for more.}
+\endcmd
+
+\cmd|\partokenname|
+\xarg{control sequence}
+\desc{By default, \TeX\ emits a control sequence \cs{par} at blank lines
+and other situations. This command changes the name of what is emitted
+to the given control sequence. See the \pdftex\ manual for more.}
+\endcmd
+
\cmd|\primitive|
\xarg{control sequence}
\desc{This command executes the primitive meaning of the following control
@@ -1220,6 +1273,23 @@ greater) in which a subset of commands only are allowed.}
Shell escape \ifnum\shellescape>0 is \else is not \fi enabled.
\end{example}
+\cmd|\showstream|
+\xarg{integer}
+\desc{If this primitive parameter has a value corresponding to an open output
+stream (which has been opened with \cs{openout}), then any
+\cs{show}, \cs{showthe}, \cs{showbox} or \cs{showlists}
+commands do not write output to the terminal, but instead write to only
+the referenced output stream, as if they were written with
+\cs{immediate}\cs{write}.}
+\endcmd
+
+\cmd|\special shipout |
+\xarg{token list}
+\desc{With the additional ``keyword'' \texttt{shipout}, expansion of the
+\xarg{token listr} is delayed until \cs{shipout}, like
+non-\cs{immediate}\cs{write}.}
+\endcmd
+
\cmd|\strcmp|
\xarg{arg one}
\xarg{arg two}
@@ -1242,13 +1312,22 @@ Therefore, |\a| is greater than |\z|: \strcmp{\a}{\z}
Also note that catcodes are ignored: \strcmp{b}{\b}
\end{example}
+\cmd|\tracingstacklevels|
+\xarg{integer}
+\desc{If this integer parameter is positive, and \cs{tracingmacros}
+is also positive, a prefix indicating the macro expansion depth
+is output on each relevant log line (e.g., \texttt{\char`\~..}\ at depth~2).
+Also, macro logging is truncated at a depth $\ge$ the parameter value.}
+\endcmd
+
\subsection{Randomness}
\cmd|\normaldeviate|
\xarg{number}
\desc{Generate a normally-distributed random integer with a mean of $0$ and
standard deviation $65\,536$. That is, about $68$\% of the time, the result
-will be between $−65\,536$ and $65\,536$ (one standard deviation away from
+will be between $−65\,536$ and $65\,536$ (one standard
+deviation away from
the mean). About $95\%$ of results will be within two standard deviations, and
$99.7$\% within three.}
\endcmd
@@ -1269,6 +1348,26 @@ sequences of semi-randoms at a later moment.}
(inclusive) and ⟨number⟩ (exclusive).}
\endcmd
+\cmd|SOURCE_DATE_EPOCH|
+(environment variable)
+\desc{If this environment variable is set, its value is used as the current
+time in seconds since the usual Unix ``epoch'': the beginning of
+1970-01-01, UTC. Negative or non-integer values cause a fatal error.
+Thus, a value of \texttt{32} would result in a \texttt{/CreationDate} and
+\texttt{/ModDate} values of \texttt{19700101000032Z}. This is useful for
+reproducible builds of documents.}
+\endcmd
+
+\cmd|FORCE_SOURCE_DATE|
+(environment variable)
+\par\noindent % no \desc because of _'s
+If this is set to~\texttt{1}, \xetex's time-related primitives are also
+initialized from the value of \verb|SOURCE_DATE_EPOCH|. These primitives
+are \cs{year}, \cs{month}, \cs{day}, and \cs{time}. If
+\verb|SOURCE_DATE_EPOCH| is not set, setting \verb|FORCE_SOURCE_DATE|
+has no effect. (See the \pdftex\ manual for pathological cases.)
+\endcmd
+
\subsection{Timing}
\cmd|\elapsedtime|
@@ -1283,48 +1382,82 @@ $2^{31} − 1$ will be returned.}
\desc{Reset the internal timer to $0$.}
\endcmd
-\subsection{File queries}
+\subsection{File handling}
\cmd|\filedump|
\texttt{[offset]} \xarg{number}
\texttt{[length]} \xarg{number}
-\xarg{file}
+\barg{\xarg{filename}}
\desc{Expands to a hexadecimal dump of the contents of the file, starting
from position zero and extending to the end of the file unless either an
offset or length are given.}
\endcmd
\cmd|\filemoddate|
-\xarg{file name}
+\barg{\xarg{filename}}
\desc{Expands to the date the file was last modified in the format
\texttt{D:YYYYMMDDHHMMSS+ZZZZ} as a string.}
\endcmd
\cmd|\filesize|
-\xarg{file name}
+\barg{\xarg{filename}}
\desc{Expands to the size of the file in bytes.}
\endcmd
\cmd|\mdfivesum|
-\texttt{[file]}
-\xarg{text}
-\desc{Expands to the MD5 sum of the \meta{text}, or if the \texttt{file}
-keyword is given, the MD5 sum of the file contents.}
+\oarg{file}
+\barg{\xarg{text}}
+\desc{Expands to the MD5 sum of the \xarg{text}, or if the \texttt{file}
+keyword is given, the MD5 sum of the contents of the file named \xarg{text}.}
+\endcmd
+
+\cmd|\input|
+\barg{\xarg{filename}}
+\desc{As of \TeX~Live 2020, the \cs{input} primitive in all \TeX\
+engines, including \xetex, now also accepts a group-delimited filename
+argument, as a system-dependent extension, as in
+\cs{input\barg{foo.tex}}. The usage of \cs{input} with a standard
+space/token-delimited filename is completely unchanged.
+
+This group-delimited argument was previously implemented in \luatex; now
+it is available in all engines. ASCII double quote characters
+(\texttt{"}) are removed from the filename, but it is otherwise left
+unchanged after tokenization.
+
+This extension is unlike most others in that it affects a primitive in
+standard \TeX\ (\cs{input}), rather than being related to a new
+primitive, command line option, etc. This is allowed because additional
+methods of recognizing filenames are explicitly mentioned in
+\texttt{tex.web} as acceptable system-dependent extensions.
+
+Incidentally, this does not directly affect \LaTeX's \cs{input} command
+(which takes a group-delimited argument), as that is a macro
+redefinition of the \cs{input} primitive.}
\endcmd
\subsection{Fonts}
\cmd|\pdfmapfile|
-\xarg{map spec}
+\barg{\xarg{map file}}
\desc{Defined in \texttt{xe(la)tex.ini} to place a whatsit special for \texttt{xdvipdfmx} to set a font map file. See the \pdftex user manual for full details.}
\endcmd
\cmd|\pdfmapline|
-\xarg{line from map spec}
+\barg{\xarg{line from map file}}
\desc{Defined in \texttt{xe(la)tex.ini} to place a whatsit special for \texttt{xdvipdfmx} to set up a font map. See the \pdftex user manual for full details.}
\endcmd
+\cmd|\tracinglostchars|
+\xarg{integer}
+\desc{When set to 3 or larger, a character missing from a font provokes
+a full error, not just a diagnostic message (perhaps only in the log
+file, depending on \texttt{\char`\\tracingonline}. Also, the missing
+character code is always reported in hex, two digits for normal \TeX\
+fonts or \texttt{U+....} format for system fonts, in addition to its ASCII
+character, if printable.}
+\endcmd
+
\cmd|\suppressfontnotfounderror|
\xarg{integer}
\desc{When set to zero (default) if a font is loaded that cannot be
@@ -1342,6 +1475,17 @@ suppressed and the font control sequence being defined is set to
\end{example}
\endcmd
+\subsection{Invoking \xetex}
+
+\xetex\ has many command line options. They are almost all inherited
+from the common framework for \TeX\ engines as implemented in Web2C
+(its manual is available at \url{https://tug.org/web2c}).
+
+The main exceptions are \verb|-no-pdf|, which tells \xetex\ to output
+its XDV (extended DVI) without further processing, and
+\verb|-output-driver=|\xarg{cmd}, which processes the XDV output with
+\xarg{cmd}; the default is \texttt{xdvipdfmx}.
+
\section{Engine version}
@@ -1360,5 +1504,4 @@ The \xetex version used to typeset this document is:
\the\XeTeXversion\XeTeXrevision
\end{example}
-
\end{document}