Creating Solarly Multilingual Documents
Using Unicode, OpenType, and XETEXDavid J. Perry
September 11, 2010
Version 1.6
is is a work in progress. Please send comments or corrections to:hospes02@solarsfonts.net.
Abstractis document is intended for people who are new to TEX and/or to XETEX
and who have a particular need to prepare multilingual, Unicode-based documents that take advantage of OpenType features.
• Sections 1–3 provide the information that new users need to understandwhat TEX is all about and that will help them decide whether they wish
to learn TEX. ese sections will also be useful to anyone new to TEX
even if Unicode and OpenType support are not important.
• Sections 4 and 5 provide guidance on geing started with TEX, using the
TEXworks development environment.
• Sections 6 and 7 plus the Appendices show how to take advantage of theadvanced Unicode and OpenType features available in XETEX.
ere is mu information available online about TEX. Some of it is overly
complex for beginners; at the same time, it is hard to ﬁnd guidance about using
Unicode and OpenType with XETEX. is article is by no means a complete
guide to TEX, but aer reading it users should be able to get a basic document
working using the TEXworks environment and know how to access OpenType
features. ey can then use other resources to learn more about TEX in general;
some suggestions for this are provided.
ose experienced with TEX but new to XETEX, Unicode, and OpenTypecan consult Sections 6 and 7 plus the Appendix on fontspec, while skipping
the other sections.

1is article was prepared using TEXworks. Body text is set in Linux Libertine, an excellent open-source font by Philipp H. Poll, available from http://linuxlibertine.sourceforge.net/. Names of LATEX paages are in Linux Biolinum, a sans-serif companion to Linux Libertine, and and code samples are
in DejaVu Sans Mono.
Copyright ©2010 by David J. Perry.
is document may be freely redistributed, provided that it is not altered.
e most recent version of this document can always be obtained fromhttp://scholarsfonts.net.
Information in this article is provided to help users ﬁnd appropriate ways
to prepare their documents. It is the responsibility of ea user to evaluate any
product mentioned to see whether it is suitable for his or her needs. Although
great care has been taken in the preparation of this information, it is provided“as is” and without warranty of any kind. In no event shall David J. Perrybe liable for diﬃculties with or damage to any computer system or data ﬁlecaused by use of any product or procedure mentioned in this article.

2

Contents
1

Why TEX?

52

e most important thing to understand5

3More useful things to know

94

Setting Up the Soware
4.1 For Windows . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 For Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 For Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . .

12
12
12
13

5

Learning TEX works and LATEX
5.1 Document Basics . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Typeseing and Error Correction . . . . . . . . . . . . . . . .
5.3 Learning LATEX . . . . . . . . . . . . . . . . . . . . . . . . . .

13
13
14
17

6

Creating Multilingual Text
6.1 Entering Unicode Text . . . . . . . . . . . . . . . . . . . . . .
6.2 Old Habits Die Hard . . . . . . . . . . . . . . . . . . . . . . .
6.3 Using polyglossia for Additional Language Support . . . . . .
6.4 Creating Right to Le Text . . . . . . . . . . . . . . . . . . .
6.4.1 Using polyglossia for RTL . . . . . . . . . . . . . . .
6.4.2 Using bidi by itself . . . . . . . . . . . . . . . . . . .
6.4.3 Special Issues with Unicode’s Old Italic Characters . .

18
18
20
20
22
22
23
24

7

Using Fonts and OpenType Features
7.1 LATEX Font Basics . . . . . . . . . . . . . . . . . . . . . . . . .
7.2 About fontspec . . . . . . . . . . . . . . . . . . . . . . . . . .
7.3 fontspec commands . . . . . . . . . . . . . . . . . . . . . . .
7.4 Learning More . . . . . . . . . . . . . . . . . . . . . . . . . .

24
24
26
26
28

A Appendix: Fontspec and OpenType Features

29

B Appendix: fontspec Command Summary
B.1 Basic Format . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.2 Additional Commands . . . . . . . . . . . . . . . . . . . . . .
B.3 Associating Fonts with Scripts or Languages . . . . . . . . . .
B.4 Features Applicable to Any Font . . . . . . . . . . . . . . . .
B.5 Font-Dependent Features . . . . . . . . . . . . . . . . . . . .
B.6 Yet More Commands . . . . . . . . . . . . . . . . . . . . . . .

33
33
33
34
35
36
36

C Appendix: Some Sample Code
C.1 A Basic Document . . . . . . . . . . . . . . . . . . . . . . . .
C.2 A Multilingual Sample . . . . . . . . . . . . . . . . . . . . . .

37
37
39

3

D Appendix: Fonts with OpenType Features

41

E Appendix: Some Traditional TEX Keystrokes

43

List of Figures
1
2
3
4
5
6

e TEXworks environment. . . . . . . . . . . . . . . . . . . .
A larger view of the editor window. . . . . . . . . . . . . . .
TEXworks’s File / New from Template . . . dialog. . . . . . . .
A basic TEXworks document. . . . . . . . . . . . . . . . . . .
Choosing the appropriate processor before typeseing. . . . .
Loading hyphenation ﬁles. . . . . . . . . . . . . . . . . . . . .

In this document, names of TEX add-on paages are printed in asans-serif font, and code snippets (what you would actually typein your editor) are in monospaced type. Blue text indicates a
cliable link to a location within the document, while green text
is used for external URLs, whi are also cliable.

Important Note:is article assumes that you are familiar with Unicode and smart
font tenology su as OpenType and AAT. If you are not, see
the reference in the ﬁrst paragraph on page 5 for a source of information.

.

4

7
8
14
15
16
21

1

Why TEX?

Building on the foundation of Unicode, OpenType fonts provide an abundanceof features that make it possible to create high-quality typography in many
languages. In addition, some of these features are important to solars inﬁelds in as classics, medieval studies, biblical studies, and linguistics. If you
need basic information about Unicode and OpenType, particularly regarding
the role that OpenType can play in solarship, see my book about document
preparation for solars. It provides pointers to many other sources in addition
to the information provided in the book itself. Details about the book areavailable from http://scholarsfonts.net.
As of September 2010, Windows users who want to take advantage of theseadvanced OpenType features have limited options. (e situation with Mac
OS X is mu beer.1 ) ese options include the commercial desktop publishing programs ark Express and Adobe InDesign and the open source
typeseing language TEX and its extension XETEX. Scribus, the open source
desktop publishing app, does not yet support OT features for advanced typography. Microso Word 2007 supports a limited number of OpenType features,and Word 2010 a few more, but not enough to make them useful for manysolarly needs.
ark and InDesign provide very good support for OpenType features, butthey are expensive even if one qualiﬁes for academic pricing. Some people alsoprefer, for philosophical reasons, to use and support open source soware. TEX
is an open-source typeseing language designed speciﬁcally to produce highquality documents; it is widely used in mathematics but is less well known inother academic ﬁelds. XETEX is a version of TEX that can take advantage ofUnicode and OpenType features, providing an alternative to the commercial
products, but installing and learning this soware can be intimidating. isdocument reﬂects my own experiences as a relative newcomer to TEX and isdesigned to help others who wish to try it. Note that this is not a complete
tutorial on TEX; there are already many su resources available, as discussed
below. is document focuses on what beginners who require Unicode and
OpenType support need to know. Because Unicode and OpenType are relative
newcomers to the TEX world, this information is not so easy to come by.

2

e most important thing to understandTEX and its extensions are a typeseing language, not a word processor su asmany of us use daily. It does not employ a graphical interface that gives an onscreen representation of the ﬁnal product. is means that instead of selecting
a word and typing -B or cliing a “Boldface” buon, the user must type
in commands while editing the document. en the source code is run througha processor that produces the formaed output; nowadays, this will probably
1

Mac and Linux users should see the note on page 115

be a PDF ﬁle. Su systems were used on standalone typeseers prior to thepersonal computer era and were created for early PCs before Windows and
Mac OS made development of  2 programs su as InDesign possible.
ere are some advantages to the TEX approa. It is designed to help users
write well-structured documents by using tags su as \section and \subsection. It also separates, to a large extent, the content from the ﬁnal design. TEX
utilizes document classes, whi are predeﬁned layouts that specify su features as margins, headers and footers, font sizes, and so on. ere are manyof these available for diﬀerent types of documents su as articles, books, etc.
One can customize a document class or write a new one, but many users ﬁndthat a document class prepared by a knowledgeable designer produces very
good results, perhaps beer than they could produce on their own using aword processor. Finally, it should be noted that while word processors havegoen more and more bloated, TEX is still small and eﬃcient, even though
it can do everything the word processors can. A MiKTEX download is about
83 megabytes, whi includes many extra paages and their documentation;
the actual ﬁles needed to compile a document are very mu smaller. Compare this with the 500+ megabytes needed for a typical word processor. Because TEX source code is composed exclusively of plain text, these ﬁles arealso very small, compared to those produced by most of today’s word processors. A TEX installation and some source ﬁles can easily ﬁt onto a ﬂash
drive. For more about the history of TEX and all the beneﬁts of using it, see
http://www.ctan.org/what_is_tex.html.
e screen shot in Figure 1 below shows a typical editing session using the
TEXworks development environment, with the source code on the le and theoutput in  format displayed on the right.
Figure 2 (page 8) shows a larger view of a TEXworks editing window. e
TEX typeseing commands are colored, and at the boom of the window appears a panel (with green text) displaying the messages that the compiler generates when it processes the source code. ese messages can very useful in
traing down errors in your source code. Some people are put oﬀ by thepresence of the many tags that one must enter in TEX source code. is isvery diﬀerent from a  program and does take some geing used to.
If the tags bother you and take the focus oﬀ your writing, I suggest using afamiliar word processor to write and edit; don’t waste time with fancy formaing since that will be done later in TEX. Once the text is ﬁnished, copy it
and paste it into TEXworks (or whatever editor you use). is will remove any
formaing you applied in the word processor. Or save the ﬁle as plain text
and open it directly in TEXworks. You can then add the TEX tags and typeset
the document. As you get more experienced, you’ll probably ﬁnd it’s faster to
add the tags as you go along, and perhaps you will ﬁnd them less distracting.
Despite the need to shi to a new paradigm, people who need sophisticated typography—particularly via OpenType features—should at least consider
2

What You See Is What You Get

6

Figure 1: e TEXworks environment.
XETEX, given the cost of commercial products and la of alternatives.
ere are also converters available that can ange existing documents
into TEX and vice versa; one good one for Microso Word can be found at
http://kebrt.webz.cz/programs/word-to-latex/. OpenOﬃce Writer (ver. 3.0 or
higher) has a built-in converter (File > Export . . . > LaTeX2e). Standalone converters for OpenOﬃce are also available; see http://writer2latex.sourceforge.
net/. Su converters are certainly not perfect, but they can be helpful for
beginners or for those who have already invested mu time in producing a
document in Word or OpenOﬃce format.
TEX is very powerful. Once you learn how, you can simplify your work invarious ways and produce some eﬀects that are diﬃcult or impossible even insophisticated word processors. TEX and XETEX most deﬁnitely have a learning
curve. e good news is that it is not diﬃcult to get simple text (i.e., text that
contains mostly plain paragraphs) working right. But once you start using
additional features su as tables, things get a lot triier. You should approa
TEX as you would any other piece of soware that requires signiﬁcant eﬀort
to learn. But you will be rewarded with superb-looking documents that takeadvantage of the most up to date “smart font” tenology.
Furthermore, TEX has been around a long time and is widely used by academics and by specialized publishing houses. is, combined with the factthat users can customize TEX by creating paages (extensions to TEX for spe-

7

Figure 2: A larger view of the editor window.

8

ciﬁc purposes), means that there is some support for solarly writing with
TEX that you will not ﬁnd with a word processor. For example, there are twopaages available that aid in the creation of critical editions of text; complicated numbering semes and apparatus criticus are mu easier to handle
with these paages.3

3

More useful things to know
• TEX was developed by Donald Knuth in the late 1970s speciﬁcally fortypeseing books, particularly mathematical ones. It therefore long predates the development of Windows and Mac OS and also Unicode and
TrueType/OpenType fonts. e “X” in TEX is pronounced as in Scotish lo or German Bu. For more history, see the Wikipedia entry at
http://en.wikipedia.org/wiki/TeX.
• Many mathematicians use TEX as a standard tool, but it is less widelyused in other areas. If you need help with TEX, a math colleague may
be a good resource—although he or she may not know anything about
the multilingual aspects of TEX.
• TEX is available on Windows, Unix, and Mac OS, whi may be important for those who need cross-platform compatibility.
• Over the years three new versions of TEX have been created, building on
the original work of Donald Knuth. e various “dialects” of TEX may
be summarized as follows:– TEX: the original, oen referred to as “plain” TEX; very powerfultypeseing but not terribly user-friendly and restricted to the oldcode pages of 256 aracters (i.e., no Unicode)– LATEX: a more user-friendly version of TEX, containing many commands (macros) that allow users to do things easily that would require complicated programming in plain TEX. LATEX itself has been
supplemented with many paages that oﬀer additional functionality in relatively easy to use form. LATEX is currently in its second
version, referred to as LATEX2ϵ. Most LATEX commands and paages
are compatible with XETEX.
– XETEX: Unicode-based TEX plus the ability to use fonts already installed in the user’s system; not particularly user-friendly in its
native form and so supplemented with paages su as fontspec.
e combination of XETEX plus commands and paages originally wrien for LATEX is referred to as XELATEX, whi is what mostreaders of this document will end up using.

3

e paages are ednotes and ledmac; the former is perhaps easier to use. For more information,
see http://www.webdesign-bu.de/uwe_lueck/critedltx.html .

9

– ConTEXt is another version, somewhat similar to LATEX in that it
is intended to be more user-friendly. Some claim it is beer at
typeseing, but the oice is really a maer of preference and individual needs. ConTEXt is less widely used than LATEX, so I suggestthat beginners focus on learning the laer since there is more help
available.

• You may have trouble doing certain things or think they can’t be donein TEX. Before giving up, see if someone has wrien a paage that will
do what you need. For example, TEX provides a tabular environmentthat allows you to create simple tables. But this environment can’t breaktables across pages, print a header row at the top of ea page of a multipage table, use color in tables, and do many other things you might want.
e paages longtable and colortbl enable you to do them. e need tolook for additional paages makes using TEX a bit messier than using
a standalone application; it’s just part of the learning curve. e bestplace to look for paages not included with your distribution of TEX isin the CTAN repository (see page 17).
• Unicode support in TEX is relatively new; it began in 2004 when Jonathan
Kew released the XETEX paage, about whi more will be said below.
From the beginning, TEX users could enter the aracters needed forEuropean languages, and later on paages were created to handle otherscripts su as Arabic. But these older systems are not Unicode-based
and should not be used now for serious multilingual work. Mu ofthe information that you can ﬁnd online about TEX may be outdated,particularly in regard to support for languages other than English.
• XETEX includes support for OpenType features and AAT features.
• Prior to XETEX, users could not directly use fonts installed in their operating system. TEX comes with a few fonts, the Computer Modern family designed by Donald Knuth as part of the original TEX system. ese
fonts, used by default in TEX, have a rather light look to them and it isoen possible to recognize a document produced with TEX just by thelook of these fonts. It is possible to add other fonts to a TEX installation,
but this requires mu additional work. Until XETEX, la of support
for Unicode and system fonts made TEX an inappropriate oice for thegrowing number of people who require Unicode-based soware.
• At a minimum, you will need three things:– A version of TEX, referred to as a distribution; in particular, youneed XETEX if you want to use Unicode and your installed systemfonts. A distribution includes many popular paages in addition
to the basic TEX typeseing engine.
– An editor to create the source code; there are editors speciﬁcallydesigned for this task, although any plain text editor can be used
as long as it is Unicode-based.

10

– A way to view and print the output ﬁles; there are various ways
to do this, some of whi require Ghostscript and GSview (opensource equivalents to Adobe’s PostScript language and Reader soware).

• ere are programs designed to help the beginner get working with TEX
as easily as possible. In particular, beginners should take advantage of
one of the integrated development environments that aid users in installing TEX, entering and correcting the source code, and producing theﬁnal output within one application. At the time this was wrien, theonly su environment on Windows that can handle Unicode and OpenType on Windows is TEXworks, so I will assume that is the environmentthat you are using. TEXworks is also available for Linux and OS X, and I
recommend it on those platforms also, but most Mac and Linux editors
are Unicode-capable so you have more oices than on Windows.4
In short, if you are ready to try TEX, you need to do four things:• Download and install the soware.
• Learn your way around TEXworks (or whatever editor you are using).
• Start learning LATEX, whi will enable you to create basic documents.
• Use XETEX-speciﬁc features to control font selection and apply OpenType features.
N  M  L UUp to this point the discussion about TEX has been quite general and applies to everybody. From this point forward most of the examples will comefrom Windows. Everything should (theoretically) apply to XETEX when running under Linux. But I do not have a Linux maine or the expertise to test;comments from Linux folks are welcome. Linux users who want to get TEX
should obtain the TEXLive distribution from http://tug.org/texlive/.
I will give as mu information as I can to help Mac users, although I have
not had time to try everything on both platforms. I suggest MacTEX as the best
distribution for Mac users; see http://www.tug.org/mactex/2009/, whi wascurrent at the time this was wrien, although a 2010 version will be posted atsome point.
ere is one caution that must be observed by Mac users who want tocreate cross-platform documents. Avoid doing things with AAT fonts that will4
For the sake of completeness, I will mention some other good Windows soware for beginners
that I have found, but whi does not yet support Unicode and OpenType; su paages may begood oices in the future if they are upgraded. e ProTeX paage at http://tug.org/protext/ installs
MiKTEX along with TEXnicCenter, a good integrated environment. However, version 1 of TEXnicCenter
does not support Unicode; version 2, now under development, will do so. TEXmaker, http://www.
xm1math.net/texmaker/index.html, is a good editor that works with Unicode, but it does not yet know
anything about XETEX. WinEdt, http://www.winedt.com/, is designed to work with MiKTEX, but has
extremely limited Unicode support.

11not translate well when implemented with OpenType. e way to do this, if
you are not an expert on AAT and OT, is to sti to fontspec and polyglossia for
selecting fonts and features and for multilingual support, respectively; thesepaages are discussed in detail below. e fontspec manual clearly identiﬁes
those items (a small number) that are applicable only to Mac OS X. Also, use
fonts that are available for all platforms (see Appendix D for font information.)
If you do this, your Mac-generated XETEX documents should work well on
Linux or Windows.

4

Setting Up the Soware

e following assumes that your computer system is Unicode-based and thatyou already have things set up to enter text in whatever languages you require.

4.1 For Windows• Obtain a TEX distribution. I suggest MiKTEX, but see the third bullet
below for an alternative. Download and install MiKTEX from http://
miktex.org/. MiKTEX is a widely used distribution of TEX on Windows;
it includes XETEX and many other paages you need. MiKTEX includes
a convenient installer. It also has an excellent feature that tells you if adocument requires a missing paage and downloads and installs it foryou (with your permission, of course).
• MiKTEX puts a program group in Windows’s Start menu. You won’t
have to do mu with MiKTEX once it’s installed since most of your work
will be done in TEXworks (or whatever editor you use). If you wish, you
can use the icons in this program group to e for updated paages,
ange some MiKTEX options, and consult the MiKTEX manual and FAQ.
• e TEXLive distribution, available from http://tug.org/texlive/, is theother option for Windows users. My personal experience is that MiKTEX
is easier for beginners, but certainly many people do use TEXLive.
• Both MiKTEX and TEXLive now include the TEXworks editor, whi I use
and will demonstrate in this article. You can also visit http://www.tug.
org/texworks/, whi provides a link to the downloads at Google Code(for the tenically inclined). Just unzip all the ﬁles in the same directoryand doublecli on the TEXworks icon to start the program (there is no
installer program).

4.2 For Linux• You want to use the TEXLive distribution: http://tug.org/texlive/.

124.3 For Mac OS X
• e best distribution is MacTEX, whi is TEXLive with some Mac-speciﬁc
additions. See http://tug.org/mactex/. Note that this is a very large
download, and there are some options for smaller downloads available;
read the notes on the web page carefully. If you get the BasicTEX version, be sure to read hp://www.uoregon.edu/ ko/BasicTeX.pdf, whi
gives necessary installation instructions. In addition to the distribution,
the MacTEX page also has some good information for beginners.
• MacTEX includes the both the TEXShop editor and TEXworks. e laer
is similar to TEXShop but is cross-platform and includes some updated
features.

5

Learning TEX works and LATEX

5.1 Document Basics
e “Short manual for TeXworks” by Alain Delmoe, available from http://www.leliseron.org/texworks/ is the place to start. I will mention only a few
things to supplement this manual.
Every TEX document has two essential parts, the preamble and the body.
e preamble contains seings that aﬀect the document as a whole (these
are not printed in the ﬁnal output). One can use TEXworks to process sourcecode that is wrien using any of the variants of TEX (plain TEX, XETEX, LATEX,ConTEXt, etc., as described in section 3). e short sample document shownin section 3.2 of the “Short Manual” is designed to work with LATEX, and its
preamble contains a couple of lines that should be revised if one wants to use
the advanced font selection features of XELATEX. To create a basic documentfor XELATEX, oose File/New from Template… and you will see the window
shown in Figure 3.
Choose the article-fontspec.tex template and a new document will be created that looks like Figure 4. Note the use of the % aracter to separate theactual commands from comments. Note also the curly braets { } that enclose
options for the various commands. ese are very important; to avoid error
messages, don’t accidentally delete one or add one too many. e baslasharacter \ before ea command is also essential. If the text in the editor is
too small, enlarge it or ange to a more legible font using the Format>Font
command (this aﬀects what you see in the editor, not what appears in the ﬁnal
output). To make your oice the default whenever you start TEXworks, set it
using the Edit/Preferences dialog.
e preamble begins with the \documentclass command. Every TEX document must include this. For this example we will use the article class, whi
is designed (as its name implies) for writing articles of the sort that appear inacademic journals. Following the \documentclass command you ﬁnd several
examples of the \usepackage command. is command tells TEX to include

13

Figure 3: TEXworks’s File / New from Template . . . dialog.
the paages that you need to use when it compiles the document. If you use
a command that depends on having a particular paage loaded and the paage is not given in the preamble, you will get error messages. For XETEX documents, always use the fontspec, xunicode, and xlxtra paages. e graphicx
paage is needed if you want to include any graphics; you can remove it
otherwise.
Unless you have the font Charis SIL on your system, ange the \setmainfont to something more appropriate. If you are in the US, just delete (or comment out using %) the \geometry paage, since TEX defaults to US leer size
paper.
e body of the document is located between the \begin{document} and\end{document} commands. (ese two commands, along with the initial\documentclass, are the absolute minimum required to set up a TEX document.) Type whatever you want here to create your ﬁrst document.

5.2 Typesetting and Error Correction
Aer you enter some text, you will want to see how the results will look. It
is extremely important to oose the right processor before you typeset (TEXworks’s term for compiling) the source code. If you include a XETEX-speciﬁc
command but typeset with LATEX, you will get error messages. Open the pulldown menu shown in Figure 5 and select XELATEX. is allows you to use bothcommon LATEX paages and commands, along with XETEX-speciﬁc things like
fontspec. (If your document contains only LATEX, it is still OK to typeset it withXELATEX.) en cli on the buon to typeset your document. You can set thedefault typeseing option in Edit/Preferences . . . via the Typeseing tab, andI recommend that you do so; that way you can just type  when you areready to view the results. You can also add a line at the very beginning of the

14

Figure 4: A basic TEXworks document.

15

Figure 5: Choosing the appropriate processor before typeseing.
ﬁle to identify the typeseing program to be used for a particular job; this line
is shown in Figure 5 (commented out but still processed by TEXworks).
If typeseing mathematics (one of TEX’s traditional strengths) is important
to you, note the following. As of July 2010, Unicode math fonts are available,
but they are relatively new and not as stable as the traditional TEX math fonts.
Some people prefer to sti to the traditional math fonts and typeset using
LATEX. But if you need the Unicode support (aside from math) and other things
that XETEX provides, you can typeset with XELATEX but instruct the program
to use the older TEX math fonts. See Chapter 7 for informatiion about using
fontspec to do this.
You will probably see some errors displayed in the lower pane of the editor.
is can be one of the frustrating things for beginners with TEX; sometimes it’s
not clear what’s wrong or how to ﬁx it. Don’t forget that every group introduced by a curly brace must be closed by one. Also, some of the errors that are
generated don’t really aﬀect the ﬁnal output. It does no harm to hit 
when you are presented with a question mark during compilation. If possible,
the process will continue, and you will either see the result of the error or ﬁnd
out that it’s an insigniﬁcant error. e TEXworks editor displays line numbers
at the lower right, and you can use the command  to jump to a given
line in order to ﬁx an error when one is identiﬁed during compilation. One
useful thing to keep in mind about errors: start by ﬁxing the ﬁrst one, since anerror near the beginning of a document may generate others that will vanishaer the oﬀending ﬁrst one is ﬁxed.
You cannot yet print the  ﬁle from TEXworks’s output panel; instead,
you must open the  in Adobe Reader or another  viewer, then print.
is will be ﬁxed in a future version.
You can now use the “Short Manual” to learn more about using the TEXworks’s editor, su as how to use the auto-completion feature to save time

16

when typing TEX commands, and mu more.

5.3 Learning LATEX
e remainder of this document will deal speciﬁcally with how to use fonts
and OpenType features. You will need to learn more about LATEX in order
to use TEX eﬀectively. Just keep in mind that mu of the information you
ﬁnd about using languages other than English is pre-Unicode. Here are someresources for further study:• e Not So Short Introduction to LATEX2e, by Tobias Oetiker and others.
is widely used introduction is included with many distributions ofTEX, including MiKTEX, so you probably have it. (One annoyance withMiKTEX is that it creates a folder for itself in C:\Program Files and thenadds a great many subfolders and sub-subfolders, making it hard to ﬁnd
the documentation that is in fact provided. Do a sear for “lshort” tolocate this document.)• LATEX, by Wikibooks contributors; available in PDF or HTML from http://en.wikibooks.org/wiki/LaTeX. is is relatively new and quite useful,I ﬁnd.
• Formaing Information: A beginner’s introduction to typeseing withLATEX by Peter Flynn, available at http://mirror.cps.cmich.edu/ctan/info/
beginlatex/html. Another good online tutorial.
• “Geing Started with LATEX” by David Wilkins, http://www.maths.tcd.
ie/~dwilkins/LaTeXPrimer/GSWLaTeX.pdf; a bit old, but still useful).
• LATEX for Word Processor Users by Guido Gonzato is helpful for newcomers because it shows the LATEX equivalents for common word processor commands. It is distributed with MiKTEX or can be downloaded
separately from here: ftp://tug.ctan.org/pub/tex-archive/info/latex4wp/
latex4wp.pdf.
• ere are several printed books that tea LATEX; a good one is A Guide to
LaTeX by Helmut Kopka and Patri W. Daly (Addison-Wesley; fourth
edition 2003). ere is also e LATEX Companion by Frank Mielba,Miel Goosens, and other contributors (Addison-Wesley; second edition 2004). It is somewhat more detailed than the book by Kopka andDaly, particularly in its discussions of various LATEX paages.
• A useful two-page summary of LATEX commands is available at http://www.stdout.org/~winston/latex/latexsheet.pdf
e best place to go for further help is CTAN, the Comprehensive TEX Arive
Network, at http://tug.ctan.org/. ere is lots of helpful stuﬀ here, including the essential TEX catalog online, http://www.ctan.org/tex-archive/help/
Catalogue/bytopic.html, where you can ﬁnd many additional paages andtheir documentation along with additional tutorials. Another good source17

of assistance is the LATEX Community forum at http://www.latex-community.
org/.

6

Creating Multilingual Text

6.1 Entering Unicode Text
Since XETEX is Unicode-based, you can enter standard Unicode text in theway to whi you are accustomed. E.g., if you have Windows set up to handle Greek (among other languages) with a polytonic keyboard, you can swit
from Latin script to Greek by using the icon in the system tray (or 
) as you usually do. For aracters not accessible via any keyboard, you
can use the XETEX command \char”XXXX; that is, \char followed by a double quote mark and a case sensitive hexadecimal number (four digits, or ﬁve
for aracters beyond the BMP; 02DF works but 02df does not). Or copy thearacter using a utility su as BabelMap or Windows’s Character Map (BMP
only) and paste it into your source code. If you regularly use Unicode aracters not on any keyboard, it is easy to create customized keyboards using
Microso’s Keyboard Layout Creator (Windows) or Ukelele (OS X). If you
need more information about how to enter aracters or about combining
marks (discussed in the next paragraph), see my book Document Preparation
for Classical Languages at http://scholarsfonts.net.
A word should be said about the paage xunicode, whi you probably
want to load when working with multilingual text.5 is paage handles theuse of combining accent marks. If you enter a combining accent, xunicode
will substitute the equivalent precomposed aracter if one exists in Unicode
and is included in the font being used. With most soware today, the precomposed forms give beer-looking results since many applications do not
position combining marks well, at least not in all cases. It also allows one
to enter aracters from the International Phonetic Alphabet (IPA) using the
TIPA keystrokes. Some examples will clarify the various ways to get accented
aracters.
Precomposed example: e-acute (é)• type it directly using a keyboard that provides e-acute, su as the USInternational keyboard in Windows• type \’e . is is a traditional TEX command for entering an acute accent
over a vowel.
• enter ‘e’ followed by a combining acute. To get this aracter:– use a special keyboard that supports combining marks5

e xltxtra paage automatically loads both xunicode and fontspec, so there is no need to loadthem separately. If you need to specify an option when loading fontspec, don’t worry; the paage
will only get loaded once even if both it and xltxtra are loaded in the preamble.

18

– copy and paste it from a utility su as Character Map or BabelMap– use the XETEX command \char”0301

In all cases except the last, your output ﬁle will contain the aracter
U+00E9,      ; xunicode has taken care of anging the given text into the appropriate precomposed Unicode aracter. Combining marks entered using \char” plus hexadecimal digits, however, are notanged into precomposed forms.6
Most people will prefer the ﬁrst option (typing the aracter directly) if it isavailable, since it lets you see the actual aracter in your source ﬁle. However,
all three work equally well. e traditional TEX commands for accent marks
are particularly convenient for those who have been working with them for along time. In addition, they are useful for marks that are usually not supported
by keyboards, su as the macron (\=) and the breve (\u), or for aractersthat you enter only infrequently. Anyone who regularly types in Spanish,for instance, would certainly want to install a keyboard that provides easy
access to the necessary aracters. Someone who on rare occasions types a
Spanish word with accents or inverted question marks might be satisﬁed withthe older TEX conventions. A list of the traditional TEX keystrokes for accents,
aracters, and common symbols is given in Appendix E.
Example requiring combining marks: y̆• e combination y-breve does not exist in Unicode in precomposed
form, so the only way to enter it is with U+0306,  .
• Enter a ‘y’ followed by a combining breve.
– Enter this aracter directly if you have a special keyboard that
supports combining marks.
– Copy and paste it from a utility su as BabelMap, Character Map(Windows) or Character Palee (OS X) .
– Enter it with the command \char”0306.

• How well the combination looks on the page will depend on the fontin use. Some fonts are designed to position combining marks well overmost base aracters, while with other fonts the accent may be oﬀ-center
or, in the case of capital leers, not raised high enough. For example, on
my system the Georgia font does not handle the y-breve combination
well: Georgia y̆.
• If you must use combining marks in a font where they don’t all work
well, you can manually kern them. When I give the command y\kern4pt\char”0306 while working with Georgia, I get a mu beer result:y̆. e \kern command, when followed by a negative value, moves the6

If you are creating a PDF to be printed and it looks good, you don’t need to worry about exactly
what aracters are in the output ﬁle. However, if the text may be reused for other purposes later, thisinformation may be important.

19

following aracter closer to the previous one.7 If you need to use su
a combination many times in your document, you can deﬁne a custom
command for it, su as the following:\newcommand{\ybr}{y\kern-4pt\char”0306}

whi will produce a y-breve every time you enter \ybr.

6.2 Old Habits Die HardIf you look at pre-XETEX tutorials or templates, you may be told to add thefollowing to the preamble:\usepackage[utf8]{inputenc}\usepackage[T1]{fontenc}

e ﬁrst of these is not needed when compiling documents with XELATEX, since
XETEXdefaults to UTF-8.8 e fontenc paage, whi speciﬁes whether thefonts in a document use the original TEX aracter set or an updated one established in 1990, is also unnecessary since XETEX automatically uses Unicode
fonts.

6.3 Using polyglossia for Additional Language Support
You can enter Unicode text as explained above. However, complete support fora given language may require other things, su as rules about hyphenation,
punctuation, date format, and numeral format. Older versions of TEX useda paage called babel to support various languages. Ignore any info aboutbabel you ﬁnd and instead add the newer polyglossia paage (provided aspart of MiKTEX and other distributions) to your preamble.9 Using polyglossia
you can do a number of things, su as set a default language, enable various
additional languages, associate particular fonts with scripts, and more.
e essential steps are:• Use the MiKTEX Options control to make sure that the hyphenation ﬁlesfor the language(s) you need will be loaded. From the Start menu, go to
All Programs > MiKTEX 2.7 > Seings, then oose the Languages tab
and cli in the appropriate eboxes. See the screenshot in Figure 6.
• Load the paage polyglossia in the preamble.
• Deﬁne the default language and any others that you need.
• Associate fonts with particular scripts and languages, as needed.
7

Don’t put a space between the base leer and the following combining mark, or you will have tokern by a very large amount to ba up over the blank space.
8
UTF-8, short for Unicode Transformation Format-eight bit, is one of several formats that enable
Unicode aracters to be stored eﬃciently in data ﬁles. For details about the various UTFs, look on
the Unicode website, www.unicode.org.
9
If you ever read the log ﬁle that is created when you typeset a document, you may notice areference to hyphenation paerns with babel. Don’t worry about that.

20Figure 6: Loading hyphenation ﬁles.
• Put large amounts of text inside an environment deﬁned by \begin{language} and \end{language}, where language is one of the languages
you have deﬁned.
• For small bits of text, you can use the command \textlanguage{ … };put the text you want in the speciﬁed language inside the curly braets.
See the sample code in the second half of Appendix C (Section 10.2). Notethat hyphenation ﬁles for Latin and ancient Greek are not loaded by default,
so add them if you wish to typeset this sample. For more details, including
the options available for various languages, see the polyglossia documentation; it is not diﬃcult. Read polyglossia.pdf or compile polyglossia.tex; also
open the ﬁle examples.tex found in the polyglossia folder to study the header.
One thing to note: §2.1 of polyglossia.pdf says “You can determine the default
language… ” whi almost sounds like seing a default language is optional. In fact, you need to set the default language in order for things to work
properly.
Note that you do not have to use polyglossia if you don’t need the special features it provides. e opening of the Odyssey, printed below, appears
just ﬁne, since the lines of poetry avoid any need for hyphenation and the de-21

fault font used for this document contains Unicode Greek aracters as well
as Latin:Ἄνδρα μοι ἔννεπε, μοῦσα, πολύτροπον, ὃς μάλα πολλὰ
πλάγχθη, ἐπεὶ Τροίης ἱερὸν πτολίεθρον ἔπερσεν:πολλῶν δ᾽ ἀνθρώπων ἴδεν ἄστεα καὶ νόον ἔγνω,πολλὰ δ᾽ ὅ γ᾽ ἐν πόντῳ πάθεν ἄλγεα ὃν κατὰ θυμόν,ἀρνύμενος ἥν τε ψυχὴν καὶ νόστον ἑταίρων.
(e source code for this document does load polyglossia, but I did not put\begin{greek} and \end{greek} tags around these lines, so they get no special treatment.)
I think that polyglossia provides the easiest and most consistent way touse diﬀerent languages in XETEX, and I deﬁnitely recommend it for beginners.
If you oose not to use polyglossia, you may need to take one additional stepwhen dealing with complex scripts. If you ﬁnd that the correct aracters arepresent in your text but are not shaped properly, make sure that your specify
the script when you give a fontspec command, like this:\fontspec[script=devanagari]{Code2000}

where the name of the script you are using is given as an option between
square braets. is will enable the proper shaping. (Don’t do this if you areusing a native AAT font on Mac OS X.)

6.4 Creating Right to Le Text
You should not have trouble entering right-to-le text if you already have yourcomputer set up to use Hebrew, Arabic, or another of the right to le scriptsthat are supported in Unicode. (If you have not yet set up that capability, youneed to do so before using RTL text in XETEX.) e following examples willuse Hebrew, but the same principles will apply to Arabic, Syriac, etc.

6.4.1

Using polyglossia for RTL

Using polyglossia lets you do three things easily:• swit language and script with one command and automatically activate the OpenType shaping features needed for the language• associate fonts with particular scripts or languages• access other options (calendar style, numeral style, locales for Arabic)
General information about polyglossia is found beginning on page 20 above.
See that section for directions on loading polyglossia and associating scripts
or languages with particular fonts.
For small amounts of right-to-le text within a le-to-right environment(or vice versa), use the command \textlanguage{ … } , replacing languagewith the language you want and puing the desired text between the curlybraets. For full paragraphs, put your right-to-le text inside an environment22

(\begin{Hebrew} . . . \end{Hebrew}). Either of these methods gets words
in RTL text to appear in the correct order, and using the environment will getyour paragraphs aligning properly at the right (not le) margin.
polyglossia calls an associated paage bidi. Make sure that you have themost recent version of bidi, at the time this was wrien, the current version
was 1.1.4c, whi resolves a number of issues from earlier versions. If you
work extensively with any language that uses RTL text, you should download
the bidi manual from CTAN; it is easy to read and provides mu more information that I can include in this short tutorial. Originally wrien by François
Charee, bidi is now maintained by Vafa Khalighi who has done mu toimprove and extend this important paage.

6.4.2

Using bidi by itself

If you do not need any of the special features that polyglossia provides elsewhere in your document, you can load the bidi paage directly in your preamble (and omit polyglossia). If using bidi by itself, note the following:• Be sure to load bidi aer all other paages, except xunicode whi
should come aer bidi. (bidi will generate an error message if you loadpaages in the wrong order.) If your document is mostly or entirely
RTL, use the [RTLdocument] option when loading the paage — thisautomatically sets you up for RLT typeseing.
• You must declare the script when using a fontspec command. For instance, to swit from your Latin-script font to the Seherazade fontfor Arabic, enter this:\fontspec[script=arabic]{Scheherazade}If you don’t do so, the Arabic leers will appear but in the wrong forms(word-initial forms, word-ﬁnal forms, etc. will not be implemented). On
Mac OS X, declare the script if using a Windows-style TrueType/OpenType
font; this activates the ICU renderer automatically. If using a native
AAT font, do not specify the script.
• bidi provides both commands (\setRTL and \setLTR) and an environment \begin{RTL} . . . \end{RTL} for direction switing. Of course,
you should reverse the order of these commands if appropriate.
• For small amounts of text (a few words), use the commands \RLE{ }and \LRE{ }10• See the bidi documentation for complete information about whi LATEX
paages bidi supports and about additional options not covered here
(footnotes, multiple columns, and other things).1110ose who are familiar with the Unicode bidirectional algorithm can easily remember these are
Right to Le Embedding and vice versa.
11
Due to limitations of XETEX, bidi doesn’t work with the color or xcolor paages if you need tocolor text that takes up more than one line (use xecolour for longer segments).

23

6.4.3Special Issues with Unicode’s Old Italic Characters

e Old Italic aracters are used both for LTR and RTL languages. Unicode
decided to deﬁne them as strongly LTR, whi means that you must take some
additional steps if you wish to use them to display an inscription in right to le
order. You must put a special Unicode aracter called    
, U+202E, before ea word when using bidi. e RLO forces aracters to
behave in the directionality opposite to that whi is inherent in them; in thiscase the strongly LTR arcters will appear as RTL. For one word, enter the
RLO followed by the Old Italic aracters. For more than one word, you mustsurround the text with \RLE{ } or use the \setRTL command (to avoid the
problem of words appearing in inverse order) AND precede ea individual
word with a RLO.12 For mu more information about using Old Italic in RTL
mode successfully, see my book on document processing for solars.
You can insert the Unicode formaing aracters su as right to le override, pop directional formaing, etc., by right-cliing in TEXworks’s editor
window. However, these aracters are invisible and you may ﬁnd it easier toedit the text if you can see them in the source code. To do this, use the XETEX
command \char”202E for a RLO and \char”202C for a PDF.

7

Using Fonts and OpenType Features

7.1 LATEX Font Basics
ere are a few things you should know as you begin working with fonts.
fontspec, following in the footsteps of LATEX, thinks in terms of font families.
We saw on page 14 above how to use the \setmainfont command to set thedefault font for the document. If the font you specify here has bold, italic,
and bold italic versions (and the font maker has named them in the customary ways internally) then the right font will automatically be applied when
you ask for bold or italic text. e main font is usually a serifed face. TEX
traditionally deﬁnes two other families, a sans-serif and a monospaced font;use the \setsansfont and \setmonofont commands. You can ignore these if you
don’t plan to use the other font families in your document. Notice also thatthe default font size is usually set as part of the \documentclass command in
the preamble.
Aside from the default, font sizes are usually set in relative, not absolute,terms with the LATEX commands (from smallest to largest) \tiny, \script12
ose with some experience in using Unicode RTL text may realize that this procedure does notfollow the Unicode bidirectional algorithm. is algorithm requires only a RLO at the beginning anda pop directional format (PDF — not to be confused with Adobe’s Portable Document Format) at theend for short amounts of text (full paragraphs do require an additional, higher-level command in aword processor or editor to get paragraphs right-aligned.) e need for the additional RLO is due tothe way XETEX interacts with the ICU text renderer that it uses.

24

size, \footnotesize, \small, \normalsize, \large, \Large, \LARGE,\huge and \Huge. e advantage of this procedure is that if you ange thedefault, LATEX can adjust all the other font size anges relative to the new default; you don’t have to go around manually anging ea one. (You can, ofcourse, specify exact sizes if you wish.) e same is true for seing the fontfamilies, where one seing at the beginning can control the entire document.
In LATEX, the appearance of text may be anged in two main ways, byusing a declaration or a command. A declaration is a command that aﬀects theentire document forward from the point where it is given (unless speciﬁcallyanged by a subsequent command).
Font anging commands have both command and declaration forms. To
swit from the default roman font to the sans-serif family, you can issue either the declaration \sffamily or the command \textsf{sometext}, where
sometext is the text that you wish to be printed in the sans-serif font. You
can see that if the sans-serif text is long, it would be easy to get lost and forget the closing curly braet. Furthermore, your italic text might have otherfont anging commands nested inside it, su as commands for boldface orunderlining, potentially leading to further confusion. So, in general, use thedeclaration form for anything longer than a few words or a short sentence.13
e table below lists the common font commands.

\textrm{text}\textsf{text}\text{text}\textnormal{text}\textbf{text}\textit{text}\textsc{text}\emph{text}\underline{text}
\rmfamily\sﬀamily\family\normalfamily\bfseries\itshape\scshape\em
applies the roman family
applies the sans-serif family
applies the monospaced family
applies the default family
produces boldface text
produces italic text
produces   produces emphasized text
produces underlined text

Some notes about font commands:•  stands for teletype or typewriter, going ba to the days when typewriters could produce only monospaced text.
• e word “series” in the term bfseries takes into account bold italic aswell as upright boldface.
• e command for emphasis is distinct from the command for italics.
e laer is used for things that should always be italicized, su asbook titles. In most writing styles italics are also used for emphasis, but
a document might deﬁne a diﬀerent typographic handling for text that13

It is possible to put the declaration form inside a grouping, like this: {\rmfamily sometext}. Invery complicated situations you may need to do so, but it is unusual.

25

the author wishes to emphasize. In su a situation the custom stylewould be applied to any text marked for emphasis. If italics are used,
LATEX takes care of adding any needed space aer the last italicized word.
If the surrounding text is already in italics, the \emph command puts theemphasized text in roman—prey neat!
• e command for underlining does not have a declaration form because
one almost never would want to set a whole paragraph, for instance, as
underlined; by its nature underlining is limited to short bits of text.

7.2 About fontspec
fontspec is a paage wrien speciﬁcally to work with XETEX (so you can’t
use it if you compile your document with plain LATEX). It is designed to let youoose fonts easily, control OpenType features, and do many other things.
You deﬁnitely want to put it in your preamble. Note to experienced TEX users:
fontspec is the best and easiest way to select fonts in XETEX; the \font command does not behave the same way as it does in other TEX variants, and you
should avoid it unless you really know what you are doing.
fontspec was originally developed on the Mac and some of the names it
uses to call features are typical of AAT rather than OT fonts (e.g., Uppercase
rather than Lining numerals). Appendix A contains a table that will help you
sort out the names. You may know the OT names from experience with applications su as InDesign or from reading documentation that comes withyour OT fonts. In a few cases you can use either name, as the table shows.
e integration of AAT and OT features within one framework is an excellent
feature of fontspec—particularly now that Mac OS X is processing many OTfeatures—and the need to sort out the names for those accustomed to OT is asmall price to pay.

7.3 fontspec commands
fontspec commands take the following form:\fontspec[font features]{font name}

So if you included this command in your preamble:\fontspec[Ligatures=Discretionary,Numbers=OldStyle]{Linux Libertine}

it would set the font to Linux Libertine with the OT Discretionary Ligatures
and Oldstyle ﬁgures turned on. Note the following:• e OT (or AAT) features go inside square braets.
• e name of the feature is followed by an equal sign, then the option;
multiple features may be selected at once if separated by a comma; nospaces allowed inside the square braets.

26

• Names are case sensitive.
• See the art in Appendix A for a list of OT features and options plus
some additional information.
• Names of fonts inside the curly braets must be the display name, i.e.,
the name shown when you pull down an application’s font menu (itmay contain spaces).
You will want to set any OT features you want to apply throughout the document as part of the preamble.
To add a new OT feature to the font and features already in eﬀect, you can
use the \addfontfeatures command (or addfontfeature for one feature).
Note that there is a slight diﬀerence in syntax between \addfontfeaturesand other fontspec commands:\fontspec[Numbers=OldStyle]{Cardo}\addfontfeature{Numbers=OldStyle}e ﬁrst example applies both a font ange and an optional feature, while
the second applies only a diﬀerent feature; note the use of square braets inthe ﬁrst example. In TEX, some commands consist only of a baslash followed by one word, su as \smallskip to insert some vertical space. Other
commands may require or accept additional information; su speciﬁcations
are called arguments. Required arguments go in curly braets, while optional
arguments are put between square braets and are located between the command and the required arguments. A \fontspec command requires the nameof a font, for obvious reasons, and so the font name goes inside curly braets, with options inside square braets. e \addfontfeature(s) command
requires the name(s) of the additional feature(s), so curly braets are used.
Do note that any anges made with \addfontfeatures will apply to therest of the document or until they are cancelled by a new command. If you
want to apply a feature to only a small amount of text, put the entire commandand the associated text inside curly braces like this:{\addfontfeatures{Numbers=OldStyle}
In 1894 and again in 1902 we went West.}

Here the oldstyle numerals will be applied only to this one short sentence,and the default lining numerals will resume aer the end of the group. If
the text is long or you get lost in too many curly braclets, you can create anenvironment using \begin and \end commands; see the standard LATEX tutorials
for more about this.
If you wish to have a particular font associated with a speciﬁc script or
language, see section B.3 on page 34. You may need to do this if, for instance,
the main font you are using in a document does not support Greek or Hebrew
and you need to use those languages in your document.
Appendix B provides a summary of the most common fontspec commands.
For more examples, see the short code sample in Appendix C. is sample is27

designed to help you learn to control fonts and OT features, not to demonstrate many general features of LATEX (there are other places to look for that!).
Remember that the % aracter sets oﬀ comments from the actual commands,
and I have included comments to help you undestand what ea line does.
You can copy this code, paste it into TEXworks, and typeset it on your own
system (ange the Linux Libertine font if you don’t have it, or get it fromhttp://linuxlibertine.sourceforge.net/. It’s freely available and despite its nameworks on Windows or Mac as well as Linux. Appendix D lists some otherfreely available fonts that contain OT features for you to experiment with (notall the fonts contain exactly the same features, so e the documentation thatcomes with ea). Also be aware that a font with a TrueType extension (.f)can contain OT features; e the information provided by the font maker
if you are unsure.14 You can also run the XETEX macro opentype-info.tex on afont and get a  ﬁle listing the OT features present in the font.15

7.4 Learning More
MiKTEX includes fontspec documentation in  form. It is well wrien but
gets rather tenical at times (as it must), and it is particularly diﬃcult for
those who are new to TEX; those already experienced with LATEX will have an
advantage. If you have understood the material in this article, studied thesample code at the end, and done some experimenting, you will then be readyto read the actual fontspec manual. Let me mention a couple of things you
can learn there as examples of the power of XETEX and fontspec.
fontspec includes the \scale command to mat the heights of lowercase(or uppercase, if you wish) aracters from diﬀerent fonts. If you have evermixed, e.g., Times New Roman and Arial, you’ve noticed that the Arial aracters seem a lile too big relative to Times even at the same point size, andyou had to manually ange ea bit of text in Arial to be a couple of points
smaller. fontspec can handle that for you. Some typefaces come in a numberof diﬀerent weights in addition to the regular and boldface: light, book, demi,
heavy, bla and so forth. You can tell fontspec to use the demi version as the“boldface” when the light version is the main font; in other words, you candeﬁne your own font families. You may not need to do this oen, but when
you need it, this ability is very helpful.
Have fun!
14

Fonts that have the .otf extension may contain outlines in the Compact Font Format (CFF), an
update of the older Postscript Type 1 format, or they may contain TrueType outlines. Windows recognizes TrueType fonts that have a digital signature as OpenType, whether or not they contain advanced
typographical features. TrueType fonts without the digital signature but with advanced features still
get the extension .f.
15
Use aat-info.tex for AAT fonts on Mac OS X.

28

A

Appendix: Fontspec and OpenType Features

In the table on the following pages:• e lehand column is the fontspec feature name (given in the sameorder as in the fontspec documentation).
• e second column, Fontspec Feature Options, shows the tags used toturn various options on and oﬀ. e names are case-sensitive, i.e., OldStyle
works but Oldstyle does not.
• ese tags work with either the \fontspec or the \addfontfeaturescommand, e.g.:\fontspec[Letters=SmallCaps]{MinionPro} or\addfontfeatures{Ligatures=Discretionary,Historical}• e OpenType Name and the four-leer OpenType tag are provided for
those who have some familiarity with OT features outside of fontspec
and want to mat the names they know with those used by fontspec.
For example, if you have used Adobe InDesign or read the oﬃcial OT
speciﬁcation, you are familiar with Tabular Figures, not Monospaced.
Ignore these if they don’t mean anything to you.
• e righthand column indicates features that should be turned on by default with a double asterisk. Not all applications (including Microso’s
own Oﬃce suite) follow is part of the OT spec, at least not completely.
• is table omits OT features that are applicable only to Arabic, East
Asian languages, etc.
• Note that “Alternate” is an option within the Contextuals, Fractions, andStyle features and is also the name of a separate feature. See the notes
below for clariﬁcation.
Of course, the font in use must support the feature(s) you want to apply.
e table begins on the next page and continues onto page 32.

29



 

  4OpticalSize16= point size

Optical Size

size

Ligatures

RequiredCommonDiscretionary (or Rare)
Contextual
Historical
TeX

Required Ligatures
Standard Ligatures
Discretionary Ligatures
Contextual Ligatures
Historical Ligatures(not an OT feature)

rlig
liga

 
?

**
**

dlig
clig

**

hlig
tlig/trep

Turn Ligatures oﬀ by preﬁxing the option with No, e.g., NoHistoricalLeersNumbers

Uppercase
SmallCaps
PetiteCaps
UppercaseSmallCaps
UppercasePetiteCaps
UnicaseCase-Sensitive Forms
Small Capitals
Petite Capitals
Small Capitals from Capitals
Petite Capitals from Capitals
Unicasecase

Monospaced
Proportional
OldStyle (or Lowercase)
Lining (or Uppercase)SlashedZero

Tabular Figures
Proportional Figures
Oldstyle Figures
Lining Figures
Slashed Zerotnum

Arabic(not an OT feature)

anum

Swash
Alternate
WordInitial
WordFinal
LineFinal
Inner

Contextual SwashContextual Alternates
Initial Forms
Terminal Forms
Final Glyph on Line Alternates
Medial Forms

cswh

smcp
pcap
c2sc
c2pc
unic

pnum
onum
lnum
zero

Turned oﬀ by NoSlashedZero

Contextuals

calt
init
fina
falt
medi

Turn Contextuals oﬀ by preﬁxing the option with No, e.g., NoSwash

16
If you have an OT font that comes with diﬀerent optical size versions, fontspec will automatically select the appropriate one based on the font size speciﬁed in the document, so this command isnormally not used. You can adjust optical size if desired with the OpticalSize command or turn it
oﬀ with OpticalSize=0.

30**

VerticalPosition
 
Inferior
Superior
OrdinalScientiﬁcInferior
Numerator
Denominator Subscript
Superscript
Ordinals
Scientiﬁc Inferiors
Numerators
Denominators

 4

On (turned oﬀ by Oﬀ)
Alternate

Fractions
Alternative Fractions

frac

StylisticSet

1 or 2 or 3 . . . 20; see note 17

Stylistic Set

ss01–

CharacterVariant

1 or 2 or 3 . . . 20; see note 17

Character Variants

Alternate

0 or 1 or 2 or more numbers;

Stylistic Alternates

salt

Alternate18
ItalicSwash
Historic
TitlingCaps
Ruby
HorizontalKana
VerticalKana

Stylistic Alternates
Italics
Swash
Historical Forms
Titling
Ruby19 Notation Forms
Horizontal Kana Alternates
Vertical Kana Alternatessalt

On (turned oﬀ by Oﬀ)
UppercaseKerning
Capital Spacing

kern

Fractions

 
?

subs
sups
ordn
sinf
numr
dnom

afrc

ss20
cv01–
cv20

Style

Kerningsee footnote17

ital
swsh
hist
titl
ruby
hkna
vkna

**

cpsp

Artiﬁcial font transformations are likely to produce poor quality typeseing, so use only as a last resort.
FakeSlant
0.1, 0.2, 0.3 etc.
(not an OT feature)
FakeStret
1.1 or greater(not an OT feature)
FakeBold
1.1 or greater(not an OT feature)
17
Stylistic Alternates are selected numerically; e.g., Alternate=2; the default is numbered 0. Stylistic sets, however, begin with 1. See your font’s documentation for information about the stylistic sets,
aracter variants, and stylistic alternates it supports.
18
Simply turning on Style=Alternate will select the ﬁrst variant, if more than one is deﬁned insalt. To access additional alternates (second, third, etc.), use Alternate=2, Alternate=3 and soforth, as deﬁned in the Alternate feature.
19
is and the next two features are used in Chinese, Japanese, and Korean (CJK) typeseing. See
the next page for more CJK features.

31



 

  4Items on this page are used for CJK typeseing.
See also the Ruby, HorizontalKana and VerticalKana features on page 31.

AnnotationCJK Shape

Character width

Alternate Annotation Forms

nalt

Traditional
Simpliﬁed
JIS1978
JIS1983
JIS1990
ExpertNLC

Traditional Forms
Simpliﬁed Forms
JIS78 Forms
JIS83 Forms
JIS90 Forms
Expert Forms
NLC Kanji Forms

trad

Proportional
Full
Half
ird
arter
AlternateProportional
AlternateHalf

Proportional Widths
Full Widths
Half Widths
ird Widths
arter Widths
Proportional Alternate Widths
Alternate Half Widths

pwid

32

smpl
jp78
jp83
jp90
expt
nlck

fwid
hwid
twid
qwid
palt
halt

 
?

Appendix: fontspec Command SummaryBis is meant as a “eat sheet” that you can keep handy while working. You
may need to study the examples in fontspec.pdf to see how these options reallywork. A few of the rarer fontspec commands are not listed here.
Remember that all fontspec commands are case-sensitive. So BoldItalic
works but Bolditalic will generate all sorts of error messages.

B.1

Basic Format\fontspec[features]{font name}is is the general form of fontspec commands. features is replaced by
one or more features, or it may be omied (in whi case don’t type the squarebraets). Multiple features may be separated by a comma. e font namemust be the display name, i.e., the name shown when you pull down the fontmenu in an application, whi may contain spaces. is ﬁrst examples anges
only the font:\fontspec{Linux Libertine}

while this second example selects a new font and applies two features:\fontspec[Numbers=OldStyle,Color=0000FF]{TeX Gyre Pagella}

B.2

Additional Commands\setmainfont[features]{font name}\setsansfont[features]{font name}\setmonofont[features]{font name}\defaultfontfeatures{features}ese four commands are usually used in the preamble; the ﬁrst one sets
the roman font family. Features can be set individually for the various families, but if you want to set defaults for them all you can use \defaultfontfeatures.
(this can also be called as \addfontfeature)is command adds additional feature(s) to those already in eﬀect, withoutanging the font. It will continue in eﬀect through the rest of the document
unless the entire command and the text it aﬀects are enclosed in curly braets,
like this:\addfontfeatures{features}{\addfontfeatures{Numbers=OldStyle} 0123456789}

or unless it is explicitly turned oﬀ by a command later in the document.
Note that there is a diﬀerence between the way most font commands are
invoked versus \defaultfontfeatures and \addfontfeatures. In mostcases the features come ﬁrst inside square braets, followed by a font name in33

curly braets. With these two commands there are never any square braets,and the features are in curly braets.
Experienced TEX users understand why this is so. New users should notethat a TEX command may take a required argument inside curly braets, preceded by optional argument(s) in square braets. It would make no sense
to give a \fontspec command without specifying the font you want, or a\addfontfeature command with no features to be applied; su required arguments must go inside curly braets.
\addfontfeatures overrides features called by \fontspec, whi itself
replaces features called by \defaultfontfeatures.
\newfontfamily\name[features]{font name}is command sets a font family that can be reused later in the document.
\newfontface\name[features]{font name}is command is similar to the above, but is used for fonts that do notbelong to a family, as with some decorative and symbol fonts; automatic selection of bold and italic is not available and presumably not required.
Don’t use \newfontfamily and \newfontface unless you need to reuse
the commands multiple times; for an occasional font ange, just use \fontspec.
Note that you must supply your own name for these two commands, shown
above as \name between the command and the square braets for options. So
this command:\newfontface\cal[Contextuals=Swash]{Flourishy Font}would allow you to swit to your favorite calligraphic font (hence the shorthand name \cal) with contextual swashes turned on simply by typing \cal.

B.3

Associating Fonts with Scripts or Languages

You can also use the \newfontfamily command if the default font in a document does not support a particular script or language or if you prefer theappearance of a diﬀerent font for a certain script. e following example sets
the font GFS Porson to be used for Greek:\newfontfamily\greekfont{GFS Porson}

e name that you give this type of command must begin with a script or
language that has been enabled in the preamble using the polyglossia paage,
as explained on page 20, and must end with the leers font: so greekfont,hebrewfont, arabicfont, etc., are valid.
If you are not using polyglossia and you issue a fontspec command toswit to a font that supports a complex script, use this format:\fontspec[script=bengali]{bangla}

If you omit the [script= ] option, the font will be used but the shaping neededfor (in this case) Bengali will not be applied, even though the font supports it.

34

(is is actually not a fontspec issue, but rather a requirement of XETEX, but
it seemed useful to mention it here.) is is not required for simple scripts(Latin, Greek, Cyrillic, etc.).

B.4

Features Applicable to Any Font

Items discussed in this section are features. ey are not commands in themselves but will appear between square braets in a \fontspec command or
between curly braets aer \addfontfeatures.
BoldFont
ItalicFont
SmallCapsFont
ese three features allow you to create your own font families. is isparticularly useful if you are using a family that has more than the standard
four weights. For example, if you set text in Art Deco Light, you could automatically use the Demi version as the “boldface” by giving the following
command:\fontspec[BoldFont={Art Deco Demi}]{Art Deco Light}

If you have an older set of fonts whi provides small caps in a separate fontﬁle, you can get the small caps to be applied automatically with this command:\fontspec[SmallCapsFont={Art Deco Small Caps}]{Art Deco}

ExternalLocation
You can use a font located anywhere on your system, not just in Windows’s \Fonts folder. However, automatic selection of bold and italic does notwork with external fonts, but you can associate them manually by using thecommands given above. Note that you must use the name of the font ﬁle, notthe display name. Here is an example that points to a Garamond font (gara.f)
stored in a subfolder called TrueType in a folder Type Outlines:\fontspec[ExternalLocation=\Type Outlines\TrueType]{gara.ttf}

Scale
If you have ever mixed, e.g., Times New Roman and Arial in a document,
you noticed that the portions in Arial seemed too big even though the same
point size was used for both. e Scale command can handle this for you. It
scales the font being called relative to the default roman font. You can specify
an exact percentage for scaling, but usually it’s easier to let fontspec adjust it
for you as follows:\newfontfamily[Scale=MatchLowercase]{Arial}is scales Arial to mat the lowercase aracters in Times. If your text is all
uppercase, you can use MatchUppercase instead. is feature is particularly
useful if you put it in your preamble when deﬁning the default sans-serif andmonspaced fonts, whi will then work well with the default roman.

35Color (or Colour)
e easiest way to get colored text is with the \textcolor command.
However, fontspec provides another method, as follows, by specifying three
two-digit hexadecimal RGB values. e fontspec manual mentions using two
additional hex digits to specify the amount of transparency, but this works
only on the Mac when using AAT fonts. is example will set some text togreen:{\addfontfeature{Color=00BB33}It ain’t easy bein’ green.---Kermit}

It ain’t easy bein’ green.—Kermit

Note the curly braets enclosing the entire command, since I didn’t want therest of this document to be green (however mu that might make Kermit
happy . . . )LeerSpaceUse this command if you want more spacing between leers than is built
into the font, as is commonly done when headings are set in all capitals. (Notethat some OpenType fonts can use the Kerning feature with the Uppercase
option to handle this also.) e value of 0.0 is the font’s default spacing, whilea value of 1.0 adds one-tenth of the font’s point size to the traing. So thiscommand:\addfontfeature{LetterSpace=1.0}

will add 0.12 points between words if a 12 point font is in eﬀect.

B.5

Font-Dependent Featuresese features are tabulated in Appendix A, so they are not repeated here.
ey will not work unless the font contains the appropriate feature tables.

B.6

Yet More Commands

e following commands are rarely used and so are not discussed here. See
fontspec.pdf for details.
ADD THESE
ADD HOW TO GET SPECIFIC POINT SIZESADD THE MACRO TO ID FEATURES IN A FONT36

C

Appendix: Some Sample CodeC.1

A Basic Document

To create a simple document, copy the following text, start a new document
in TEXworks (or whatever editor you use), and paste from the clipboard. Be
sure to copy everything up to, and including, \end{document}, whi will beon the next page.
% !TEX TS-program = xelatex% !TEX encoding = UTF-8% this template is specifically designed to be typeset with XeLaTeX;% it will not work with other engines, such as pdfLaTeX\documentclass[11pt,letterpaper]{article} % use larger type; default would be 10pt
% this document is based on the ”article” class% change ”letterpaper” to ”a4” if you use that size paper% here are packages needed to work with XeTeX\usepackage{xltxtra} % Extra customizations for XeLaTeX;% xltxtra automatically loads fontspec and xunicode, both of which you need
% font selection commands using fontspec;% change the names of the fonts to the ones you want to use!
\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}% to support TeX conventions like ‘‘---\setmainfont{Linux Libertine}\setsansfont{DejaVu Sans}\setmonofont{DejaVu Sans Mono}% listed here are some commonly used packages; remove the percentage sign
% at the left margin if you want to load any of them%\usepackage{color}% if you want colored text in your document%\usepackage{url}% help you typeset URLs%\usepackage{graphicx} % support the \includegraphics command and options% for multilingual work you may need polyglossia;% change the default language and the others to the ones you want%\usepackage{polyglossia}%\setdefaultlanguage[variant=american]{english}%\setotherlanguages{latin,hebrew}\title{put your title here}\author{author goes here}37%\date{} % Activate to display a given date or no date (if empty),%otherwise the current date is printed\begin{document}\maketitle\section{title of first section}
Text goes here.
\subsection {title of first subsection}
More text goes here.
\end{document}

38

C.2

A Multilingual Sample

Download the zip ﬁle containing the sample code. Study the ﬁle short multilingual sample.tex, whi includes some explanatory comments to help you
see what is happening. If you typeset this ﬁle, you should see the following as
your output if you have the Linux Libertine, DejaVu Sans, and DejaVu Sans
Mono fonts on your system. If you don’t have them and don’t wish to installthem, you will need to edit the font deﬁnitions in the preamble.

Polytonic Greek
e default language of this document is American English. To get some text
in ancient Greek with hyphenation and numerals enabled, we put it inside anenvironment. So this code:\begin{greek}Ἡροδότου Ἁλικαρνησσέος ἱστορίης ἀπόδεξις ἥδε, ὡς μήτε τὰ γενόμεναἐξ ἀνθρώπων τῷ χρόνῳ ἐξίτηλα γένηται, μήτε ἔργα μεγάλα τε καὶθωμαστά, τὰ μὲν Ἕλλησι τὰ δὲ βαρβάροισι ἀποδεχθέντα, ἀκλεᾶ γένηται,τά τε ἄλλα καὶ δι᾽ ἣν αἰτίην ἐπολέμησαν ἀλλήλοισι.
\medskip
24 = \greeknumber{24}, 1836 = \Greeknumber{1836}
5 = \atticnumeral{5}, 50 = \atticnumeral{50}, 500 = \atticnum{500},
5000 = \atticnum{5000}\end{greek}

produces this output:Ἡροδότου Ἁλικαρνησσέος ἱστορίης ἀπόδεξις ἥδε, ὡς μήτε τὰ γενόμενα ἐξἀνθρώπων τῷ χρόνῳ ἐξίτηλα γένηται, μήτε ἔργα μεγάλα τε καὶ θωμαστά,τὰ μὲν Ἕλλησι τὰ δὲ βαρβάροισι ἀποδεχθέντα, ἀκλεᾶ γένηται, τά τε ἄλλακαὶ δι᾽ ἣν αἰτίην ἐπολέμησαν ἀλλήλοισι.
24 = κδʹ, 1836 = ͵ΑΩΛϚʹ
5 = Π, 50 = 𐅄, 500 = 𐅅, 500 = 𐅆

If you want the acrophonic numerals to work, make sure that you are using afont that supports them.
Latin
o usque tandem abutere, Catilina, patientia nostra? quam diu etiam furor
iste tuus nos eludet? quem ad ﬁnem sese eﬀrenata iactabit audacia? nihilne te
nocturnum praesidium Palati, nihil urbis vigiliae, nihil timor populi, nihil concursus bonorum omnium, nihil hic munitissimus habendi senatus locus, nihil
horum ora voltusque moverunt? patere tua consilia non sentis, constrictam

39

iam horum omnium scientia teneri coniurationem tuam non vides? quid proxima, quid superiore nocte egeris, ubi fueris, quos convocaveris, quid consili
ceperis quem nostrum ignorare arbitraris? O tempora, o mores! senatus haec
intellegit, consul videt; hic tamen vivit. vivit? immo vero etiam in senatum
venit, ﬁt publici consili particeps, notat et designat oculis ad caedem unum
quemque nostrum. nos autem fortes viri satis facere rei publicae videmur, si
istius furorem ac tela vitamus. ad mortem te, Catilina, duci iussu consulis iam
pridem oportebat, in te conferri pestem quam tu in nos omnis iam diu mainaris.
Hebrew‫ֹשך ְ עַל־ ּפְנ ֵי‬ֶ ׁ ‫ֵאשִית ָּברָא ֱא ֹלהִים אֵת הַשׁ ָ ּ ַמי ִם וְאֵת ָה ָארֶץ׃ ב ו ְ ָה ָארֶץ ָהיְתָה תֹהו ּ וָבֹהו ּ וְח‬ׁ ‫א ְּבר‬ְ‫ַמי ִם׃ ג וַיֹּאמֶר ֱא ֹלהִים יְהִי אֹור וַיְהִי־אֹור׃ ד וַיַּרְא ֱא ֹלהִים‬ָ ּ ‫מרַ ֶחפֶת עַל־ ּפְנ ֵי ה‬ְ ‫תהֹום ו ְרו ּ ַח ֱא ֹלהִים‬‫ֹשך ְ ָקרָא‬ֶ ׁ ‫ֹשך ְ׃ ה וַיּ ִ ְקרָא ֱא ֹלהִים ָלאֹור יֹום ו ְ ַלח‬ֶ ׁ ‫אֶת־ ָהאֹור ּכִי־טֹוב וַיּ ַ ְבדֵּל ֱא ֹלהִים ּבֵין ָהאֹור וּבֵין ַהח‬‫ַמי ִם ו ִיהִי ַמ ְבדִּיל ּבֵין‬ָ ּ ‫ָליְלָה וַיְהִי־ ֶערֶב וַיְהִי־ ֹבקֶר יֹום ֶאחָד׃ פ ו וַיֹּאמֶר ֱא ֹלהִים יְהִי רָקִי ַע ְּבתֹוך ְ ה‬ּּ‫ֲשֶר‬ַ ‫ִתחַת ָלרָקִי ַע ובֵין ה‬ַ ּ ‫ֲשֶר מ‬ַ ּ ‫ַמי ִם ָל ָמי ִם׃ ז וַיַּעַשׂ ֱא ֹלהִים אֶת־ ָהרָקִי ַע וַיּ ַ ְבדֵּל ּבֵין ה‬ׁ ‫ַמי ִם א‬ׁ ‫ַמי ִם א‬‫מעַל ָלרָקִי ַע וַיְהִי־כֵן׃ ח‬ֵ

We can mix English and Hebrew, as in a commentary:
e ﬁrst three words ‫ֵאשִית ָּברָא ֱא ֹלהִים‬ׁ ‫ ְּבר‬are analyzed as follows…
Old Italic
SAMPLE AND DISCUSSION GO HERE

40

D

Appendix: Fonts with OpenType Features

Now that you know how to use OpenType features, you will want to experiment. is table includes information about freely available fonts to try. ere
are of course commercial fonts, particularly those from Adobe.

Cardo

Charis SIL

Gentium Basic

GFS  
Based on Renaissance designs, Cardo is designed for use
by solars in classics, biblical studies, medieval studies,linguistics, and related ﬁelds. It contains a very large glyphcomplement but only comes in regular weight (for now).
A new version is in preparation (September 2010) that willcontain many OT features for advanced typography.
http://scholarsfonts.net
Based on the highly legible Bitstream Charter design,
Charis SIL is a family with four faces and supports Latinand Cyrillic-based languages along with the special needsof linguists. It contains feature tables for AAT, OT, andGraphite. Charis SIL handles placement of combining diacritics beer than almost any other font. It also contains small caps and some language-speciﬁc features (Vietnamese, Romanian, etc.). See :http://scripts.sil.org/cms/scripts/page.php?site_id=
nrsi&id=CharisSILFont
A font family with four faces, Gentium Basic supports
Latin-script fonts only. It uses OT and Graphite featuresto handle placement of diacritics and alternate forms needed for various languages. Note that the aracter repertoireis mu smaller than the main Gentium family. GentiumBook, with slightly heavier outlines, is also available in four
faces, with the same aracters as Gentium Basic.
http://scripts.sil.org/cms/scripts/page.php?site_id=
nrsi&item_id=Gentium_basic
e Greek Font Society makes available a number of highquality typefaces, some of whi include support for Latinscript languages as well as Greek and include a varietyof OT features. Particularly notewprthy is GFS Neohellenic, whi includes (via the OT stylistic alternates feature) the alternate leerforms that Victor Solderer designed in 1927 but whi have not been available in mostversions of ths popular typeface. See
www.greekfontsociety.gr

41


JunicodeLinux Libertine

TeX Gyre  
Designed for medievalists, Junicode contains a large aracter repertoire and can be used for many languages. It also
handles combining marks well and contains many OT features. e bold and italic contain fewer aracters than theroman.
http://junicode.sourceforge.net/
Despite its name, this font runs on Windows and Mac OS
just ﬁne. It is a Renaissance-style face in four weights withmany OT features. Linux Biolinum, a sans-serif face, isunder development. See
http://linuxlibertine.sourceforge.net/
TeX Gyre is a project to update and extend the fonts distributed with the open-source Ghostscript page description
language. It includes a number of fonts, ea in OpenType
and Type 1 formats. e OT versions contain many features for advanced typography, all of whi are identiﬁedin the documentation. Except as noted, all families include
four fonts. e families released so far are:Adventor: a sans-serif face similar to Avant Garde Gothic
Bonum: a serif face similar to Bookman Old Style
Chorus: an italic-only face similar to Zaph Chancery
Cursor: a monospaced font similar to Courier
Heros: a sans-serif face similar to Helvetica; both standard
and condensed versions of ea font included (8 fonts)
Pagella: a serif face similar to PalatinoSola: a serif face similar to Century Soolbook
Termes: a serif font similar to Times
http://www.gust.org.pl/projects/e-foundry/tex-gyre/42

E

Appendix: Some Traditional TEX Keystrokes
See page 19 for baground on these keystrokes.

macronbreve
overdot
underdotline below
tie
acute
grave
circumﬂex
umlaut/tréma
double acutecaron
cedillaogonek 
dotless idotless j
A/a-ring
AE/ae ligature
L/l-slashEth/eth 

\={o}
\u{o}
\.{o}
\d{o}
\b{o}
\t{oo}
\’{o}
\‘{o}
\^{o}
\”{o}
\H{o}
\v{o}
\c{c}
\k{o}

\i
\j
\AA, \aa\AE, \ae\L, \l\DH, \dh\DJ, \djEng/eng
OE/oe ligatureO/o-slashsharp sorn/thorn\NG, \ng
en-dashem-dashunderscoreinverted marks
copyright
daggerdouble dagger
paragraphpound sign
section \OE, \oe\O, \o\SS,\ss\TH, \th\-\--\_?‘, !‘
\copyright
\dag
\ddag
\P
\pounds\S

43
ō
ŏ
ȯ
ọ
o̲
ȏo
ó
ò
ô
ö
ő
ǒ
ç
ǫ

ı
ȷ
Å, å
Æ, æ
Ł, ł
Ð, ð
Đ, đ
Ŋ, ŋ
Œ, œ
Ø, ø
SS, ß
Þ, þ

–
_
¿, ¡
©
†
‡
¶
£
§

Change Log
1.6

Sept. 9, 2010

Many small anges and corrections; some items
rewrien for clarity, particularly in the section on
RTL text; URLs updated; anges to reﬂect new versions of fontspec and bidi.

1.5

June 28, 2009

Hyperlinks added using hyperref ; more resources for
Mac and Linux users added; sample code revised;
this version never actually posted on the web.

1.4

June 20, 2009

Section on RTL text rewrien and expanded, basedon recent testing and emails (now complete); section on creating multilingual text expanded and improved, with examples and info on xunicode; Appendix E (traditional TEX keystrokes) added.

1.3

May 24, 2009

Discussion of the diﬀerent forms of font controls(end of §7.1) added; discussion of \newfontfamily and \newfontface clariﬁed; miscellaneous typos
ﬁxed and some formaing improvements.

1.2

May 18, 2009

Sections on fontspec and polyglossia signiﬁcantly
enlarged and improved; information on hyphenation
added; note to Mac and Linux users added; sample
code added; miscellaneous improvements.

1.0

May 10, 2009

Initial release.

44