Microtype
Microtype
Microtype
The microtype Xepackage
Subliminal refinements towards typographical perfection
R Schlicht v3.0f
[email protected] 2022/06/23
https://github.com/schlcht/microtype
Contents
1 Micro-typography with TeX 3
2 Getting started 4
3 Options 5
3.1 Enabling the micro-typographic features . . . . . . . . . . . . . . . . . . . 5
3.2 Character protrusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3 Font expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.4 Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.5 Miscellaneous options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.6 Changing options later . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4 Selecting fonts for micro-typography 9
5 Micro fine tuning 11
5.1 Character protrusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.2 Font expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.3 Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.4 Additional kerning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.5 Interword spacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.6 Character inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.7 Configuration files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6 Context-sensitive setup 21
7 Letterspacing revisited 23
8 Disabling ligatures 24
9 Being pedantic about protrusion 25
10 Creating configurations and contributing 26
11 Hints and caveats 27
12 Acknowledgments 30
13 References 31
14 Changes 32
15 Index 35
List of Tables
1 Availability of micro-typographic features . . . . . . . . . . . . . . . . . . . . . . 6
2 Predefined font sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3 Type 1 fonts with tailored protrusion settings . . . . . . . . . . . . . . . . . . . 21
4 OpenType fonts with tailored protrusion settings . . . . . . . . . . . . . . . . . 22
by making these characters active (as is done, for example, by the babel package),
which may not always be a robust solution. In contrast to the standard kerning
built into the fonts (which will of course apply as usual), this additional kerning
relates to single characters, not to character pairs.
Adjustment of interword spacing is based upon the idea that in order to achieve
a uniform greyness of the text, the space between words should also depend on
the surrounding characters. For example, if a word ends with an ‘r’, the following
space should be a tiny bit smaller than that following, say, an ‘m’. You can think
of this concept as an extension to TeX’s ‘space factors’. This feature may enhance
the appearance of paragraphs even more. Emphasis in the last sentence is on
the word ‘may’: this extension is still highly experimental – in particular, only
ending characters will currently influence the interword space. Also, the settings
shipped with microtype are but a first approximation, and I would highly welcome
corrections and improvements. I suggest reading the reasoning behind the settings
in the Implementation part, section 2.9.
The possibility, finally, to disable all or selected ligatures is particularly useful for
typewriter fonts.
2 Getting started
There is nothing surprising in loading this package:
\usepackage{microtype}
This will be sufficient in most cases, and if you are not interested in fine-tuning
the micro-typographic appearance of your document (however unlikely this would
seem, since using this package is proof of your interest in typographic issues), you
may actually skip the rest of this document. If this, on the other hand, does not
satisfy you – be it for theoretical or practical reasons – this manual will guide you
on the path to the desired results along the following milestones:
• Enable the desired micro-typographic features, either via the respective package
option or with the \microtypesetup command (section 3).
• Select the fonts to which the features should be applied by declaring and activating
‘sets of fonts’. A number of sets are predefined, which may be activated directly in
the package options (section 4).
• Fine-tune the micro-typographic settings of the fonts or sets of fonts (section 5).
• If you’re of the kind who always wants to march on, you will certainly be interested
in the possibility of context-sensitive setup (section 6).
• You are even countenanced to leave the path of typographic virtue and steal some
sheep (section 7) or trespass in other ways (section 8).
OPTIONS 5
• For the pedantic or the perfectionist, sections 9 and 10 are warmly recommended.
• Should you encounter any obstacles, follow the hints and caveats (section 11).
3 Options
Like many other LaTeX packages, the microtype package accepts options in the
well-known key=value syntax. In the following, you will find a description of all
keys and their possible values (‘true’ may be omitted; multiple values, where
allowed, must be enclosed in braces; the default value is shown on the right –
if preceded by an asterisk, this default only applies when running an up-to-date
pdfTeX in PDF mode).
\usepackage[activate={true,nocompatibility}]{microtype}
\usepackage{microtype}
With activated font expansion and/or character protrusion, line breaks (and conse-
quently, page breaks) may turn out differently. If this is not desired – because you
are re-typesetting a book whose pagination must not change – you may pass the
value compatibility to the protrusion and/or expansion options. Typographically,
however, the results will be suboptimal, hence the default value is nocompatibility.
Finally, you may also specify the name of a font set to which character protrusion
and/or font expansion should be restricted. See section 4 for a detailed discussion.
Specifying a font set for a feature implicitly activates this feature.
tracking true, false, protect <font set nameprotect > false
This option will systematically change the tracking of the fonts specified in the
active font set (by default, all small capitals). It is not available with TeX (you
may use the ‘LetterSpace’ option of the fontspec package instead). With pdfTeX,
it is only available in PDF mode.
Xe
Availability of micro- Engine Version Output Protrusion Expansion Tracking Kerning Spacing
typographic features
manual automatic
from section 3.1: expansion, protrusion and activate, which in turn may receive
the values true, false, compatibility or nocompatibility, and tracking, kerning
and spacing with the admissible values true or false. Passing the name of a font
set is not allowed. Additionally, it accepts the options patch and nopatch (see
section 9). Using this command, you could for instance temporarily disable font
expansion by saying:
\microtypesetup{expansion=false}
The set of fonts is specified by assigning values to the NFSS font attributes: encod-
ing, family, series, shape and size (cf. LaTeX 2ϵ font selection). Let’s start with an
example. In the main configuration file microtype.cfg, a font set called ‘basictext’
is defined as follows:
\DeclareMicrotypeSet{basictext}
{ encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2,TU},
family = {rm*,sf*},
series = {md*},
size = {normalsize,footnotesize,small,large}
}
in the document’s preamble, only fonts in the text encodings, roman or sans
serif families, normal (or ‘medium’) series, and in sizes called by \normalsize,
\footnotesize, \small or \large, will be protruded. Math fonts, on the other hand,
will not, since they are in another encoding. Neither will fonts in bold face, or huge
fonts. Etc.
If an attribute list is empty or missing – like the ‘shape’ attribute in the above
example – it does not constitute a restriction. In other words, this is equivalent
to specifying all possible values for that attribute. Therefore, the predefined set
‘alltext’, which is declared as:
\DeclareMicrotypeSet{alltext}
{ encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2,TU} }
is far less restrictive. The only condition here is that the encoding must match.
SELECTING FONTS FOR MICRO-TYPOGRAPHY 10
If a value is followed by an asterisk (like ‘rm*’ and ‘sf*’ in the first example),
it does not designate an NFSS code, but will be translated into the document’s
\protect <valueprotect >default, e.g., \rmdefault. 4 A single asterisk means \protect <attributeprotect >default,
e.g., \encodingdefault, respectively \normalsize for the size axis. Sizes may either
be specified as a dimension (‘10’ or ‘10pt’), or as a size selection command without
the backslash. You may also specify ranges (e.g., ‘small-Large’); while the lower
boundary is included in the range, the upper boundary is not. Thus, ‘12-16’ would
match 12 pt, 13.5 pt and 15.999 pt, for example, but not 16 pt. You are allowed to
omit the lower or upper bound (‘-10’, ‘large-’).
Additionally to this declaration scheme, you can add single fonts to a set using
the ‘font’ key, which expects the concatenation of all font attributes, separated by
forward slashes, i.e., ‘font = protect <encodingprotect >/protect <familyprotect >/protect <seriesprotect >/protect <shapeprotect >/protect <sizeprotect >’. This allows
you to add fonts to the set that are otherwise disjunct from it. For instance, if you
wanted to have the roman family in all sizes protruded, but only the normal sized,
possibly italic, typewriter font (in contrast to, say, the small one), this is how you
could declare the set:
\DeclareMicrotypeSet[protrusion]
{ myset }
{ encoding = T1,
family = rm*,
font = {T1/tt*/m/n/*,
T1/tt*/m/it/*} }
As you can tell from the example, the asterisk notation is also permitted for the
font key. A single asterisk is equivalent to ‘*/*/*/*/*’, i.e., the normal font. Size
selection commands are possible, too, however, ranges are not allowed.
Table 2 lists the eleven predefined font sets. They may also be activated by passing
their name to the feature options protrusion, expansion, tracking, kerning and
spacing when loading the package, for example:
\usepackage[protrusion=allmath,tracking=smallcaps]{microtype}
all ∅ ∅ ∅ ∅ ∅
traditional 7-bit notation: both \"A and Ä are valid, provided the character is ac-
tually declared in both the input and the font encoding. With LuaTeX or TeX,
you may additionally specify a (font-specific) glyph name, prefixed with ‘/’ (e.g.,
the ‘fl’ ligature as /f _ l). Note that you also have the possibility to declare lists of
characters that should inherit settings (see section 5.6).
\SetProtrusion [protect <optionsprotect >] {protect <set of fontsprotect >} {protect <protrusion settingsprotect >}
Using this command, you can set the protrusion factors for each character of a font
or a set of fonts. A very incomplete example would be the following:
\SetProtrusion
{ encoding = T1,
family = cmr }
{ A = {50,50},
\textquoteleft = {700, } }
which would result in the character ‘A’ being protruded by 5% of its width on
both sides, and the left quote character by 70% of its width into the left margin.
This would apply to all font shapes, series and sizes of the T1 encoded Computer
Modern Roman family.
The protrusion settings consist of protect <characterprotect > = protect <protrusion factorsprotect > pairs. The pro-
trusion factors designate the amount that a character should be protruded into
the left margin (first value) respectively into the right margin (second value). By
default, the values are relative to the character widths, so that a value of 1000
means that the character should be shifted fully into the margin, while, for example,
with a value of 50 it would be protruded by 5% of its width. Negative values are
admitted, as well as numbers larger than 1000 (but effectively not more than 1 em
of the font). You may omit either number if the character should not be protruded
on that side, but must not drop the separating comma.
Options:
name You may assign a name to the protrusion settings, so that you are able to
load it by another list.
load You can load another list (provided, you assigned a name to it) before the
current list will be loaded, so that the fonts will inherit the values from the loaded
list.
In this way, the configuration may be simplified considerably. You can for instance
create a default list for a font; settings for other shapes or series can then load
these settings, and extend or overwrite them (since the value that comes last will
take precedence). Font settings will be loaded recursively. The following options
will affect all loaded lists, in other words, any options from the loaded lists will be
ignored:
factor This option can be used to influence all protrusion factors of the list,
overriding any global factor setting (see section 3.2). For instance, if you want
fonts in larger sizes to be protruded less, you could load the normal lists, just with
a different factor applied to them:
MICRO FINE TUNING : Font expansion 13
\SetProtrusion
[ factor = 700,
load = cmr-T1 ]
{ encoding = T1,
family = cmr,
size = large- }
{ }
unit By default, the protrusion factors are relative to the respective character’s
width. The unit option may be used to override this and make microtype regard
all values in the list as thousandths of the specified width. Issuing, for instance,
‘unit=1em’ would have the effect that a value of, say, 50 now results in the character
being protruded by 5% of an em of the font (thus simulating the internal measuring
of pdfTeX’s \lpcode and \rpcode primitives). The default behaviour can be restored
with unit=character. 5
preset Presets the protrusion codes of all characters to the specified values
(={protect <leftprotect >,protect <rightprotect >}), possibly scaled by a factor. A unit setting will only be taken
into account if it is not =character.
inputenc Selects an input encoding that should apply to this list, regardless of
what the document’s input encoding is. You may specify any encoding that can be
loaded via the inputenc package, e.g., ansinew, koi8-r, utf8.
context The scope of the list may be limited to a certain context. For further
details, see section 6.
\SetExpansion [protect <optionsprotect >] {protect <set of fontsprotect >} {protect <expansion settingsprotect >}
By default, all characters of a font are allowed to be stretched or shrunk by the same
amount. However, it is also possible to limit the expansion of certain characters if
they are more sensitive to deformation. This is the purpose of the \SetExpansion
command. Note that it will only have an effect if the package has been loaded
with the selected option (cf. section 3.3). Otherwise, the expansion settings will
be ignored – unlike the options in the optional first argument, which will still be
evaluated. If the selected option has been set to true, and settings for a font don’t
exist, font expansion will not be applied to this font at all. Should the extraordinary
situation arise that you want to employ selected expansion in general but for a
particular font (set) all characters should be expanded or shrunk by the same
amount, you would have to declare an empty list for these fonts.
The expansion settings consist of protect <characterprotect > = protect <expansion factorprotect > pairs. You may
specify one number for each character, which determines the amount that a charac-
ter may be expanded. The numbers denominate thousandths of the full expansion.
For example, if you set the expansion factor for the character ‘O’ to 500, it will only
be expanded or shrunk by one half of the amount that the rest of the characters
will be expanded or shrunk. While the default value for character protrusion is 0 –
5 The unit option can even be passed globally to the package (cf. section 3.2). However, all provided
settings are created under the assumption that the values are relative to the character width. Therefore,
you should only change it if you are certain that the default settings will not be used in your document.
MICRO FINE TUNING : Font expansion 14
that is, if you didn’t specify any characters, none would be protruded – the default
value for expansion is 1000, which means that all characters would be expanded
by the same amount.
Options:
name, load, preset, inputenc, context Analogous to \SetProtrusion, the optional
argument may be used to assign a name to the list, to load another list, to preset
all expansion factors, to set the input encoding, or to determine the context of the
list (expansion contexts are only possible with pdfTeX version 1.40.4 or newer).
auto, stretch, shrink, step These keys can be used to override the global set-
tings from the package options (see section 3.3). If you don’t specify either one of
stretch, shrink and step, their respective global value will be used (that is, no
calculation will take place).
As a practical example, suppose you have a paragraph with a lone widow that
could be avoided by shrinking the font a bit more. In conjunction with the context
option (see section 6 for further details), you could thus allow for more expansion
in this particular paragraph:
\SetExpansion
[ context = sloppy,
stretch = 30,
shrink = 60,
step = 5 ]
{ encoding = {OT1,T1,TS1} }
{ }
% ... END PREAMBLE
{\microtypecontext{expansion=sloppy}%
This paragraph contains a `fussy' widow.}
The factor option can only be used to decrease the stretchability of the characters,
that is, it may only receive values smaller than 1000. Also, it can only be used for
single fonts or font sets; setting it globally in the package options wouldn’t make
much sense – to this end, you use the package’s stretch and shrink options.
6 For older versions, a dirty trick is laid out in the Implementation part, section 1.2, page 38.
MICRO FINE TUNING : Tracking 15
\SetTracking [protect <optionsprotect >] {protect <set of fontsprotect >} {protect <tracking amountprotect >}
An important typographic technique – which was missing in TeX for a long time – is
the adjustment of tracking, i.e., the uniform addition or subtraction of letter space
to/from all the characters in a font. For example, it is good typographic practice
to slightly space out text set in all capitals or small capitals (as in this document).
Legibility may also be improved by minimally increasing the tracking of smaller
and decreasing that of larger type. 7 The \SetTracking command allows specifying
the tracking amount for different fonts or font sets. It will also be evaluated by the
\textls command, which may be used for letterspacing shorter pieces of text (see
section 7).
The tracking amount is specified in thousandths of 1em (or the given unit);
negative values are allowed, too.
Options:
name, unit, context These options serve the same functions as in the previous
configuration commands. The unit may be any dimension, default is 1 em.
spacing When the inter-letter spacing is altered, the inter-word spacing probably
also needs to be adjusted. This option expects three numbers for interword space,
stretch and shrink respectively, which are given in thousandths of 1em (or of the
current unit). If a value is followed by an asterisk, it denotes thousandths of the
respective font dimension which will be added to it. For instance, with
\SetTracking[ spacing = {25*,166, } ]{ encoding = *, shape = sc }{ 25 }
the interword space will be increased by 2.5%, the stretch amount will be set to
0.166em, while the shrink amount will be left untouched. If you don’t specify
the spacing option, the interword space will be scaled by the current letterspace
amount (as in the above example), while stretch and shrink will not be changed.
outer spacing If an interword space immediately precedes or follows letter-
spaced text, it will by default be equal to that within the text. With this option,
which accepts the same values as spacing, it may be adjusted independently.
outer kerning If, on the other hand, no interword space precedes or follows,
you may still want to slightly set off the first and last letter from adjoining letters.
This option expects the kerning amounts for left and right hand side, separated by
a comma, in thousandths of 1em (or the current unit). If a value is followed by
an asterisk, it denotes thousandths of the current letterspacing amount. A single
asterisk means ‘500*’; this is also the default, i.e., the sum of the outer kerns is by
default equal to the current letterspace amount. To remove kerning on both sides,
you would write ‘outer kerning={0,0}’.
no ligatures By default, ligatures in letterspaced fonts will be constructed as
usual, which may be advisable when changing the tracking by only a small amount.
For larger letterspacing amounts, on the other hand, the normal letter space within
ligatures would have displeasing e ff e c t s. This key expects a comma-separated
list of characters for which ligatures should be disabled; only the character that
7 With full-featured fonts like Computer Modern, this is usually not necessary, though, since they come in
optical sizes, and the tracking of the small-capitals font is already adjusted.
MICRO FINE TUNING : Tracking 16
begins a ligature must be specified. If the key is given without a value, all ligatures
of the font will be disabled. With pdfTeX, this is not recommended, however, since
it entails that kerning will be switched off, too. With LuaTeX, there is no such
limitation. The default settings disable ligatures for the character ‘f’ only, i.e., ‘ff’,
‘fi’, ffi’, etc. 8 In exceptional situations, you can manually break up a ligature by
inserting ‘{\kern0pt}’ resp. babel’s "| shortcut, or protect it by enclosing it in
\lslig (see section 7).
Since a picture is worth a thousand words, probably even more if, in our case, it
depicts a couple of letterspaced words, let’s bring one to sum up these somewhat
confusing options. Suppose you had the following settings (which are in no way
recommended; they only serve illustrative purposes):
\SetTracking
[ no ligatures = {f},
spacing = {600*,-100*, },
outer spacing = {450,250,150},
outer kerning = {*,*} ]
{ encoding = * }
{ 160 }
8 With pdfTeX versions older than 1.40.4, all ligatures, and hence all kerning, will be disabled. It is
therefore recommended to use at least version 1.40.4.
MICRO FINE TUNING : Additional kerning 17
Letterspaced fonts for which settings don’t exist will be spaced out by the default of
0.1 em (adjustable with the package option letterspace, see section 3.5). Suppose
your editor wants you to shorten your 1000-pages chef-d’œuvre by a handful of
pages, you could load microtype with (fingers crossed):
\usepackage[tracking=alltext,letterspace=-40]{microtype}
\SetExtraKerning [protect <optionsprotect >] {protect <set of fontsprotect >} {protect <kerning settingsprotect >}
With this command, you can fine tune the extra kerning. In contrast to standard
kerning, which is always associated with a pair of characters, and to tracking,
which specifies the space between all characters of a font, the extra kerning relates
to single characters, that is, whenever a particular character appears in the text,
the specified kerning will be inserted, regardless of which character precedes resp.
follows it. (Put differently, this feature allows modifying the left or right sidebearings
of specific glyphs.)
It should not be neglected to mention a limitation of this feature: words imme-
diately following such a kern (not separated by a space) will not be hyphenated,
unless you insert the breakpoints manually, e.g., for kerning after the apostrophe,
‘l’apos\-trophe’. Furthermore, additional kerning will not be applied in math
mode. These restrictions of pdfTeX will hopefully be lifted some time.
The kerning settings are specified as pairs of protect <characterprotect > = protect <kerning valuesprotect >, where
the latter consist of two values: the kerning added before the character, and the
kerning appended after the respective character. Once again, either value may be
omitted, but not the separating comma.
Options:
name, load, factor, preset, inputenc These options serve the same function as
in the previous configuration commands.
unit Admissible values are: space, character and a protect <dimensionprotect >. By default, the
values denote thousandths of 1 em.
context When it comes to kerning settings, this option is especially useful, since
it allows applying settings depending on the current language.
For example, you can find the following settings, intended to be used for documents
written in French, in the main configuration file:
\SetExtraKerning
[ name = french-default,
context = french,
unit = space ]
{ encoding = {OT1,T1,LY1} }
{
: = {1000,}, % = \fontdimen2
; = {500, }, % ~ \thinspace
! = {500, },
? = {500, }
}
MICRO FINE TUNING : Interword spacing 18
What is the result of these settings ? If they are active, like in the current paragraph,
a thin space will be inserted in front of each question mark, exclamation mark and
semicolon ; a normal space in front of the colon. Read section 6 to learn how to
activate these settings ! This paragraph was input like this :
\begin{microtypecontext}{kerning=french}
What is the result of these settings? If they are active, like in the
current paragraph, a thin space will be inserted in front of each
question mark, exclamation mark and semicolon; a normal space in front
of the colon. Read section~\ref{sec:context} to learn how to activate
these settings! This paragraph was input like this:
\end{microtypecontext}
\SetExtraSpacing [protect <optionsprotect >] {protect <set of fontsprotect >} {protect <spacing settingsprotect >}
This command allows you to fine tune the interword spacing (also known as glue).
A preliminary remark on what a ‘space’ is may be in order: between two words,
TeX will insert a so called glue, which is characterised by three parameters – the
normal distance between two words, the maximum amount of space that may be
added to it, and the maximum amount that may be subtracted. The latter two
parameters come into effect whenever TeX tries to break a paragraph into lines and
does not succeed; it can then stretch or shrink the spaces between words. These
three parameters are specific to each font.
On top of these glue dimensions, TeX has the concept of ‘space factors’. They
may be used to increase the space after certain characters, most prominently the
punctuation characters. pdfTeX’s additional spacing adjustment may be considered
as an extension to space factors with much finer control: while space factors
will influence all three parameters of interword space (or glue) by the same
amount – the kerning, the maximum amount that the space may be stretched and
the maximum amount that it may be shrunk – you may modify these parameters
independently from one another. Furthermore, the values may be set differently
for each font. And, probably most importantly, the parameters may not only be
increased but also decreased. Note that when interword spacing adjustment is in
effect, space factors are ignored.
The spacing settings are declared as pairs of protect <characterprotect > = protect <spacing factorsprotect >, where
the latter consist of three numbers: first, the additional kern inserted after this
character if it appears before an interword space, second, the additional stretch
amount, and third, the additional shrink amount. All values may also be negative,
in which case the dimensions will be decreased. Not all values have to be specified,
but the settings must always contain the two separating commas.
Options:
name, load, factor, preset, inputenc, context These options serve the same func-
tion as in the previous configuration commands.
unit You can specify the unit by which the specified numbers are measured.
Possible values are: character, a protect <dimensionprotect > and, additionally, space. The latter
will measure the values in thousandths of the respective space dimension set by
MICRO FINE TUNING : Character inheritance 19
the font. By default, the unit is measured by the space dimensions. For example,
with the following (nonsensical) settings:
\SetExtraSpacing
[ unit = space ] % default
{ font = */*/*/*/* }
{
. = {1000,1000,1000},
}
the space inserted after a full stop would be doubled (technically speaking: 2 ×
\fontdimen 2), as would the maximum stretch and shrink amounts of the interword
space (\fontdimen 3 and 4). Conversely, setting all three values to −1000 would
completely cancel a space after the respective character.
the accent before the ‘H’ would be fully protruded into the left margin, while the
stem of the ‘T’ would be aligned with that of the ‘I’ if at either margin. This feature
MICRO FINE TUNING : Configuration files 20
is especially useful for Greek typography, where capital letters at the beginning of a
line should be placed as if they had no accent (the ‘H’ in the example above). Base
characters may have both unprefixed and prefixed inheritance lists; characters in the
latter will be implicitly added to the corresponding unprefixed one. Inheriting char-
acters may appear in both ‘(l)’ and ‘(r)’-prefixed lists at the same time, whereas
lists prefixed with ‘(l)’ or ‘(r)’ and those prefixed with ‘(lr)’ are mutually exclusive.
For all other features except protrusion, these prefixed lists will be ignored.
which would make the package, whenever it encounters the font lmr and does not
find settings for it, also try the font name cmr. In fact, you will find this very line,
along with some others, in the default configuration file.
\LoadMicrotypeFile {protect <font nameprotect >}
In rare cases, it might be necessary to load a font configuration file manually, for
instance, from within another configuration file, or to be able to extend settings
defined in a file that would otherwise not be loaded automatically, or would be
loaded too late. 9 This command will load the file ‘mt-protect <font nameprotect >.cfg’.
9 Font package authors might also want to have a look at the hook \Microtype@Hook, described in the
Implementation part, section 1.4.4.
CONTEXT-SENSITIVE SETUP 21
6 Context-sensitive setup
The microtype package also allows applying different micro-typographic settings
to the fonts depending on the context in which they occur. This opens up the space
for infinite possibilities of tweaking the document’s appearance.
\microtypecontext {protect <context assignmentsprotect >}
This command may be used anywhere in the document (also in the preamble)
to change the micro-typographic context in the current group. To each feature
(protrusion, expansion, (or activate as a shortcut for both), tracking, spacing
and kerning), one context may be assigned. Consequently, only settings with the
corresponding ‘context’ keyword will be applied.
\begin{microtypecontext} {protect <context assignmentsprotect >}
\end{microtypecontext} Like many LaTeX commands, it is also available in the form of an environment.
\textmicrotypecontext {protect <context assignmentsprotect >} {protect <general textprotect >}
As another possibility, the command \textmicrotypecontext sets the context(s)
for the text given in the second argument.
CONTEXT-SENSITIVE SETUP 22
Suppose you want the footnote markers in the text to be protruded by a larger
amount. You could define settings for the numbers:
\SetProtrusion
[ context = footnote ]
{ font = */*/*/*/scriptsize } % adapt if necessary
{ 1 = { ,650}, 2 = { ,400}, 3 = { ,400}, 4 = { ,400}, 5 = { ,400},
6 = { ,400}, 7 = { ,500}, 8 = { ,400}, 9 = { ,400}, 0 = { ,400} }
and have the context changed in the footnote marker command. This command
differs among the various classes; for the base classes, e.g., article, it would be:
\newcommand*\new@makefnmark{\hbox{\@textsuperscript{\normalfont
\microtypecontext{protrusion=footnote}\@thefnmark}}}
\renewcommand*\@footnotemark{%
\leavevmode \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
\new@makefnmark \ifhmode\spacefactor\@x@sf\fi \relax}
For the memoir class, you would additionally have to disable auto-detection of
multiple footnotes, which prevents protrusion:
\renewcommand*\@makefnmark{\hbox{\@textsuperscript{\normalfont
\microtypecontext{protrusion=footnote}\@thefnmark}}}
\let\m@mmf@prepare\relax
\let\m@mmf@check\relax
to the preamble. This would have the effect that kerning settings for the French
context would be applied to the document. Should parts of the document be in
English, you could write:
\textmicrotypecontext{kerning=}{English text!}
to reset the context, so that the punctuation characters in these parts will not
receive any extra kerning.
LETTERSPACING REVISITED 23
Instead of adding these commands manually to your document, you may also
load microtype with the babel option (see section 3.5). The current language will
then be automatically detected and the contexts set accordingly.
\DeclareMicrotypeBabelHook {protect <list of babel/polyglossia languagesprotect >} {protect <context listprotect >}
Naturally, microtype does not know about the typographic specialties of every
language. This command is a means of teaching it how to adjust the context when a
particular language is selected. The main configuration file contains among others
the following declaration:
\DeclareMicrotypeBabelHook
{french,francais,acadian,canadien}
{kerning=french, spacing=}
Consequently, whenever you switch to the French language, the kerning context
will be changed to ‘french’ and the spacing context will be reset. This hook only
has an effect if the package was loaded with the babel option. Currently, microtype
supports French and Turkish kerning and English spacing (aka. \nonfrenchspacing).
For unknown languages, all contexts will be reset.
fonts should be suppressed. There are two ways of solving this problem: either
don’t disable the ‘s’ and/or ‘c’ ligatures and break those that need to be broken up
by inserting ‘{\kern0pt}’ or babel’s "| shortcut; or disable them and protect those
ligatures that need to be protected by enclosing them in the \lslig command. So,
the following two solutions have the same result (namely, ‘Au s s i ¡ t s l o s i g k e i t’,
with ligatures here highlighted in green, inhibited ligatures in red).
\SetTracking[no ligatures={f}]{encoding = LY, family = yfrak}{120}
\textfrak{\lsstyle Aus:s{\kern0pt}ichts:los{\kern0pt}igkeit}
letterspace.sty These three commands (plus the letterspace option, described in section 3.4) are
also available with the alternative letterspace package, which is in fact a much
stripped-down version of microtype, omitting support for all the other extensions
(and also omitting the possibilities of the \SetTracking command – all ‘f’ ligatures
will be disabled, inner and outer spacing and outer kerning will be set to the default
values described in section 5.3). If you would rather forgo microtype’s specialties,
you may load the letterspace package instead. Both packages should not be used
at the same time.
In contrast to microtype, which requires LaTeX, the letterspace package also
works with eplain or even only miniltx: for use with eplain, load the package
with \usepackage inside the \beginpackages . . . \endpackages environment; with
miniltx (which does not support package options) simply \input letterspace.sty.
It is also possible to disable selected ligatures only. The optional argument may
contain a comma-separated list of characters for which the ligature mechanism
should be inhibited:
\DisableLigatures[?,!]{encoding = T1} % inhibit ?‘ and !‘, but not fi, –, », etc.
Only the character that begins the ligature(s) should be specified. This command
may only be used in the preamble, and only once. 11
11 With LuaTeX, you have to load the fonts with the fontspec option ‘Renderer=Basic’.
BEING PEDANTIC ABOUT PROTRUSION 25
Protrusion works well in running paragraphs, but may also be desirable in situations
where TeX, in contrast to human eyes, would not see a margin, 12 e.g., in itemize
or tabular environments. The microtype package offers two commands that may
be inserted at such an effective inner margin to make the first respectively last
glyph protrude as if it were located at a normal outer margin:
\leftprotrusion {protect <general textprotect >}
This command will add left protrusion for the following text. You may also just say
\leftprotrusion (without an argument), and microtype will gather the next glyph
(possibly a ligature) before adding protrusion on its left hand side. For instance,
you could add this command to tabular cell definitions (using the array package):
\begin{tabular}{l>{\leftprotrusion}p{9cm}r}
By default, all of the above patches will be applied. Should this not be desired, or
in case you are running into problems (or just want to silence a warning that a
patch cannot be applied – which in itself only means that no harm is done, but no
good either), you may prevent or undo the patches through the patch and nopatch
options, either when loading the package:
\usepackage[nopatch=toc]{microtype}
Help wanted! These pedantic protrusion patches are still work-in-progress. I suspect many use
cases where they either do not work as advertised, or worse, where they may even
lead to errors. Also, I am aware that there are myriads of classes and packages
out there that modify internal commands in their own ways, possibly rendering
the patches useless. Finally, there will certainly be many more situations where
protrusion would be appropriate. I would be happy to include more patches, or
enhance the existing ones, so I welcome any suggestions and problem reports you
may have.
Don’t use too large a value for expansion. Font expansion is a feature that is
supposed to enhance the typographic quality of your document by producing a
more uniform greyness of the text block (and potentially reducing the number of
necessary hyphenations). When expanding or shrinking a font too much, the effect
will be turned into the opposite. Expanding the fonts by more than 2%, i.e., setting
a stretch limit of more than 20, should be justified by a typographically trained
eye. If you are so lucky as to be in the possession of multiple instances of a Multiple
Master font, you may set expansion limits to up to 4%.
If you are using the fancyvrb or the listings package, this is not necessary, since
their implementation of the corresponding environments will inhibit protrusion
anyway.
Settings for Greek/Thai/Armenian etc. encodings are not yet included. The default
sets of fonts for which the micro-typographic features will be enabled (see table 2)
only contain those encodings for which configurations exist. Therefore, if you are
using any other encoding (e.g., LGR, T2B, etc.), microtype will not apply to these
fonts. You have to define and activate a new font set including the encoding(s) you
are using (for details, see section 4). For protrusion at least, you would also have
to create settings for the fonts in question (see section 5.1). It goes without saying
that contributions for these encodings are more than welcome.
Compatibility and interaction with other packages: The microtype package is sup-
posed to work happily together with all other LaTeX packages (except for pdfcprot).
However, life isn’t perfect, so problems are to be expected. Currently, I am aware of
the following issues:
• Even though most configuration files are still provided in legacy (7-bit) format,
using multi-byte (Unicode) characters in the settings will run smoothly with an
up-to-date LaTeX system. For older systems or documents in legacy encodings, in
contrast, the inputenc package must be loaded first. Furthermore, when using
multiple input encodings in a document, 8-bit characters in the settings will only
work reliably if you specify the inputenc key.
• When loading the package with the babel option, you must load the babel or
polyglossia package before microtype.
• Before this package was fully compatible with LuaTeX, the following method of
enabling expansion and protrusion with the fontspec package was most often
found to be recommended:
\newfontfeature{Microtype}{protrusion=default;expansion=default}
\defaultfontfeatures{Microtype}
This code should not be used with this package, as it will basically override all of
the settings made by microtype – despite the naming, the above lines have nothing
to do with this package. 13
• With pdfTeX, it is currently not possible to create character-specific settings for
Chinese/Japanese/Korean fonts. Therefore, the only micro-typographic extension
that can be made to work with CJK fonts is (non-selected) font expansion.
• When used with the xeCJK package or the luatexja package, text commands (e.g.,
\’A, \textless) in the configuration will not be understood. You therefore have
to ensure that microtype will encounter none of them. This requires, firstly, that
the glyphs be specified only as single (possibly Unicode) characters, as numbers,
or as glyph names (cf. section 5); and secondly, if you are using a font for which
pre-defined settings do not exist, that you create these settings yourself (because
otherwise, the default settings will be loaded, which do contain text commands).
Furthermore, you should load microtype late.
Possible warning and error messages and how to get rid of them (specs may differ):
• ! Font csnameendcsname=cmr10+20 at 10.0pt not loadable: Metric (TFM) file not found.
This error message will occur if you are trying to employ font expansion while
creating DVI output. Remember that automatic font expansion only works when
running pdfTeX or LuaTeX in PDF mode. Although expansion is also possible in DVI
mode with pdfTeX, it requires that all instances of the expanded fonts exist on your
TeX system.
• ! pdfTeX error (font expansion): auto expansion is only possible with scalable fonts.
Automatic font expansion has been improved in pdfTeX 1.40, in that it now not
only works with Type 1 fonts but also with TrueType, OpenType and even non-
embedded fonts. The above error message indicates either that you are trying to
apply expansion to a bitmap (pk) font, which is still not possible, or that the font
isn’t found at all, e.g., because of missing map entries.
• Package microtype Warning: Unknown slot number of character
(microtype) `\k A'
(microtype) in font encoding `TU' in inheritance list
(microtype) `microtype.cfg/411(protrusion)'.
If you receive lots of warnings like the above, and you are running LuaTeX or
TeX, this probably means that the font you are using contains less glyphs than
are defined in the default protrusion and/or inheritance settings. For such fonts,
the microtype package defines basic inheritance settings to which you may alias
your font (the generic protrusion settings will still be loaded). Try adding the line:
\DeclareMicrotypeAlias{protect <your fontprotect >}{TU-basic}
to the preamble. For symbol fonts, you may even use the alias TU-empty, which is,
well, empty, meaning that no protrusion will be applied at all to this font. Note that
these aliases are just meant to provide an easy way of getting rid of the warnings,
while the proper solution would be to create inheritance and protrusion settings
specific to the font in question.
• Warning: pdflatex: font ptmr8r cannot be expanded (not an included Type1 font)
and the PDF viewer complains about a missing font, e.g., Adobe Reader thusly:
Could not find a font in the Resources dictionary - using Helvetica instead.
With pdfTeX versions older than 1.40, font expansion can only be applied if the
font is actually embedded in the PDF file. If you get the above error message, your
TeX system is not set up to embed (or ‘download’) the base PostScript fonts (e.g.,
Times, Helvetica, Courier). In most TeX distributions, this can be changed in the
file updmap.cfg by setting pdftexDownloadBase14 to true.
• Warning: pdflatex (file ecrm1000+20): Font ecrm1000+20 at 1200 not found
Furthermore, pdfTeX versions older than 1.40 require Type 1 fonts for automatic
font expansion. When you receive a message like the above, you are probably trying
to apply font expansion to a bitmap or TrueType font. With older pdfTeX versions,
this is only possible if you manually create expanded instances of the fonts.
• ! Font T1/cmr/m/n/10=ecrm1000 at 10.0pt not loaded: Not enough room left.
Memory parameter ‘font _ mem _ size’ too small.
• ! TeX capacity exceeded, sorry [maximum internal font number (font _ max)=2000].
Memory parameter ‘font _ max’ too small.
ACKNOWLEDGMENTS Xe
30
• ! TeX capacity exceeded, sorry [PDF memory size (pdf _ mem _ size)=65536].
Memory parameter ‘pdf _ mem _ size’ too small (pdfTeX versions older than 1.30).
When applying micro-typographic enhancement to a large document with a lot of
fonts, pdfTeX may be running out of some kind of memory. It can be increased by
setting the respective parameter to a larger value. For web2c-based systems, e.g.,
TeX Live, change the settings in texmf.cnf, for MiKTeX, in the file miktex.ini (2.4
or older) resp. pdflatex.ini (2.5 or newer).
• pdfTeX warning (font expansion): font should be expanded before its first use
This warning will occur with pdfTeX versions older than 1.40.4, if tracking and
expansion is applied to a font. It is harmless and can be ignored.
The source code of this document is freely available. If you wonder how this docu-
ment was created, just have a look at the source code in microtype.dtx, which is
either already included in your TeX distribution, or else can be downloaded from
CTAN. For the source code of the logo on the title page and of the letterspacing sam-
Xe
ple from section 5.3, see the Implementation part, appendices A and B. If you want
to re-typeset the documentation, read the comments at the end of microtype.dtx.
12 Acknowledgments
This package would be pointless if Hàn Thế Thành hadn’t created the pdfTeX
programme in the first place, which introduced the micro-typographic extensions
and made them available to the TeX world. Furthermore, I thank him for helping me
to improve this package, and not least for promoting it in Thành 2004, Thành 2008
and elsewhere. I also thank him and the rest of the pdfTeX team, and more recently
also the LuaTeX and TeX teams, for refuting the idea that TeX is dead, and for
fixing the bugs I find.
Harald Harders has contributed protrusion settings for Adobe Minion. I would
also like to thank him for a number of bug reports and suggestions he had to
make. Andreas Bühmann has suggested the possibility to specify ranges of font
sizes, and resourcefully assisted in implementing this. He also came up with some
good ideas for the management of complex configurations. Ulrich Dirr has made
numerous suggestion, especially concerning the new extensions of interword spac-
ing adjustment and additional character kerning. Georg Duffner has patiently tested
microtype under TeX and LuaTeX with his beautiful OpenType font EB Garamond.
My thanks also go to Maciej Eder for contributing settings for the QX encoding, as
well as to Karl Karlsson for providing settings for the Cyrillic T2A encoding, and
to Hendrik Vogt, who made substantial improvements to the Computer Modern
Roman italic settings. I thank Loren B. Davis for providing protrusion settings for
OpenType versions of Palatino Linotype, as well as Antonis Tsolomitis for settings
for his New Computer Modern font. The latter also showcase the new feature of
automatically calculated protrusion, which was an original idea by Daniel Benjamin
Miller. I am also very much indebted to Élie Roux, who not only contributed the
lua module in the first place, but also, together with Philipp Gesang, took care of
updating it for the developments in LuaTeX land.
I thank Philipp Lehman for adding to his csquotes package the possibility to
restore the original meanings of all activated characters, thus allowing for these
REFERENCES 31
characters to be used in the configuration files. Peter Wilson kindly provided a hook
in his ledmac/ledpar packages (inherited by their successors reledmac/reledpar),
so that critical editions can also benefit from character protrusion. Likewise, Donald
Arseneau patched his shapepar package to accommodate protrusion.
Additionally, the following people have reported bugs, made suggestions or
helped otherwise (in chronological order, quotes indicate TeX.SX and/or GitHub
user names): Tom Kink, Herb Schulz, Michael Hoppe, Gary L. Gray, Georg Verweyen,
Christoph Bier, Peter Muthesius, Bernard Gaulle, Adam Kucharczyk, Mark Rossi,
Stephan Hennig, Michael Zedler, Herbert Voß, Ralf Stubner, Holger Uhr, Peter Dyballa,
Morten Høgholm, Steven Bath, Daniel Flipo, Michalis Miatidis, Sven Naumann, Ross
Hetherington, Wiebke Petersen, Geoff Vallis, Steven E. Harris, Karl Berry, Peter Meier,
Nathan Rosenblum, Wolfram Schaalo, Vasile Gaburici, Sveinung Heggen, Axel Berger,
Colin Rourke, Maverick Woo, Silas S. Brown, Lars Rönnbäck, Christian Stark, Leo,
Marcin Borkowski, hscm, George Gratzer, Josep Maria Font, Juan Acevedo, Heiko
Oberdiek, Till A. Heilmann, Rolf Dieterich, Seamus Bradley, Meho R, Steffen Hoffmann,
Scott Pakin, Maïeul Rouquette, Jonas Hogstrom, Gabriel Kerneis, ‘RazorXsr’, Sebas-
tian Schubert, ‘Dave’, Giuseppe Palma, Stephan Stiller, Christopher Schramm, ‘uli’,
Sam Mason, ‘kleenstar’, ‘Henning’, Ronnie Marksch, David Carlisle, ‘Max’, ‘HcN’, Will
Robertson, ‘user11126’, Ulrike Fischer, ‘Daniel’, ‘ltcomdata’, Reinhard Kotucha, ‘jcr’,
Nils Anders Danielsson, Paolo Ney, Frank Mittelbach, Franz Wexler, Moritz Wemheuer,
‘Andy N’, Phelype Oleinik, Falk Hanisch, Markus Kohm, Paolo Polesana, Oliver Kopp,
Hironori Kitagawa, Aman Mehra, Md Ayquassar, Holger Gerhardt, Marcel Krüger,
Ekkehart Schlicht, ‘Canageek’, ‘dsedivec’, ‘DORpapst’, ‘chsk’, ‘tnull’, ‘azur’, ‘Safron’,
Joseph Wright, Gustavo Barros, Torsten Schuetze, ‘florian’, Liang-Bo Wang, ‘Mister-
FiLou’, Akira Yokosawa, ‘theufman’, ‘frafl’, Joel Coffman, ‘user182849’, ‘NightShade’,
Nelson Lago, Brian Dunn, Ralf Steinle, Denis Bitouzé and Christophe Dervieux.
13 References
Hàn Thế Thành, ‘Micro-typographic extensions to the TeX typesetting system’, Diss.
Masaryk University Brno 2000, in: TUGBoat, vol. 21 (2000), no. 4, pp. 317–434.
(Online at https://www.tug.org/TUGboat/Articles/tb21-4/tb69thanh.pdf)
Hàn Thế Thành, ‘Micro-typographic extensions of pdfTeX in practice’, in: TUGBoat,
vol. 25 (2004), no. 1: ‘Proceedings of the Practical TeX 2004 Conference’, pp. 35–38.
(Online at https://www.tug.org/TUGboat/Articles/tb25-1/thanh.pdf)
Hàn Thế Thành, ‘Font-specific issues in pdfTeX’, in: TUGBoat, vol. 29 (2008), no. 1:
‘EuroBachoTeX 2007 Proceedings’, pp. 36–41. (Online at https://www.tug.org/
TUGboat/Articles/tb29-1/tb91thanh-fonts.pdf)
Hàn Thế Thành, Sebastian Rahtz, Hans Hagen, Hartmut Henkel, Paweł Jackowski,
Martin Schröder, Karl Berry, The pdfTeX user manual, 1 March 2022. (Available
from CTAN at /systems/doc/pdftex/manual/pdftex-a.pdf)
Karl Berry, Fontname: Filenames for TeX fonts, July 2009. (Available from CTAN at
/info/fontname/fontname.pdf)
LaTeXProject Team, LaTeX 2ϵ font selection, March 2021. (Available from CTAN at
/macros/latex/base/fntguide.pdf)
CHANGES 32
Will Robertson, The fontspec package: Font selection for LaTeX and LuaLaTeX,
15 January 2022. (Available from CTAN at pkg/fontspec)
LaTeX3 Project, Élie Roux, Khaled Hosny, Philipp Gesang, Ulrike Fischer, Marcel
Krüger, The luaotfload package, 15 June 2022. (Available from CTAN at pkg/
luaotfload)
Carsten Schurig, Tobias Schlemmer, The pdfcprot.sty package, 10 June 2005.
(Available from CTAN at pkg/pdfcprot)
Melchior Franz, The soul package, 17 November 2003. (Available from CTAN at
pkg/soul). See also Heiko Oberdiek’s extension of this package, soulutf8, which
adds Unicode support. (Available from CTAN at pkg/soulutf8)
14 Changes
The comprehensive list of changes can be found in the Implementation part,
appendix C. The following is a list of all changes relevant in the user land; bug
and compatibility fixes are swept under the rug. Numbers in brackets indicate the
relevant section in this manual.
3.0 (2021/10/31)
• New option disable, replacing the draft option; deprecate option final [3.5]
• Possibility of automatical protrusion based on difference of character widths [5.6]
• New commands \leftprotrusion and \rightprotrusion; various patches to get
protrusion right [9]
• New package microtype-show for visual debugging of protrusion settings [10]
• Protrusion settings for New Computer Modern (OpenType)
• Protrusion settings for EB Garamond (OpenType)
• New generic protrusion settings for LuaTeX/ TeX [11]
• Move development to GitHub
2.8 (2020/12/07)
• New default font sets for expansion and spacing: ‘alltext-nott’ [4, table 2]
2.7 (2017/07/07)
Xe
• Allow automatic expansion and letterspacing with LuaTeX in DVI mode (aka.
dvilualatex) [3.1, 3.3, table 1]
2.6 (2016/05/01)
• Support for LuaTeX ≥ 0.85
• Improvements for tracking/letterspacing with LuaTeX (Renderer=Basic no longer
required)
• New font sets: ‘alltext-nott’, ‘allmath-nott’ [4, table 2]
2.5 (2013/03/13)
• Support for the fontspec package, viz. for OpenType fonts with LuaTeX and TeX
• Support for protrusion with TeX ≥ 0.9997
• Support for tracking/letterspacing with LuaTeX ≥ 0.62
• Allow context-sensitive setup with LuaTeX
• Info instead of warning if protrusion settings are generic
CHANGES 33
1.9e (2006/07/28)
• New key ‘inputenc’ to specify the lists’ input encodings [5]
• Protrusion settings for Euler math fonts
1.9d (2006/05/05)
• Support for the Central European QX encoding (protrusion, inheritance)
• Protrusion settings for various Euro symbol fonts (Adobe, ITC, marvosym)
• Support for Unicode input in the configuration (inputenc/utf8)
1.9c (2006/02/02)
• Protrusion settings for URW Garamond
1.9a (2005/12/05)
• Defer setup until the end of the preamble
• Inside the preamble, \microtypesetup accepts all package options [3.6]
• Protrusion settings for T5 encoded Charter
1.9 (2005/10/28)
• New command \microtypecontext to change the configuration context; new key
‘context’ for the configuration commands [6]
• New command \DisableLigatures to disable ligatures (pdfTeX ≥ 1.30) [8]
• New key ‘font’ to add single fonts to the font sets [4]
• New key ‘preset’ to set all characters to the specified value before loading the lists
• Value ‘relative’ renamed to ‘character’ for ‘unit’ keys
• Support for the Polish OT4 encoding (protrusion, expansion, inheritance)
• Support for the Vietnamese T5 encoding (protrusion, expansion, inheritance)
1.8 (2005/06/23)
• New option ‘config’ to load a different configuration file [3.5]
• New command \DeclareMicrotypeSetDefault to declare the default font sets [4]
• New option ‘unit’ to measure protrusion factors relative to a dimension instead of
the character width [5.1]
• Renamed commands from \..MicroType.. to \..Microtype..
• Protrusion settings for AMS math fonts
• The ‘allmath’ font set also includes U encoding
• Support for protrusion with the ledmac package (pdfTeX ≥ 1.30)
1.7 (2005/03/23)
• Possibility to specify ranges of font sizes in the set declarations [4, 5]
• New command \LoadMicrotypeFile to load a configuration file manually [5.7]
• New command \Microtype@Hook for font package authors [Implementation, 1.4.4]
• New option ‘verbose=errors’ to turn all warnings into errors
• Warning when running in disable mode
1.6 (2005/01/24)
• When pdfTeX is too old to expand fonts automatically, expansion has to be enabled
explicitly, automatic expansion will be disabled [3.1]
• New option ‘factor’ to influence protrusion resp. expansion of all characters of a
font or font set [3.2, 5]
• Use e-TeX extensions, if available
INDEX 35
1.5 (2004/12/15)
• When output mode is DVI, font expansion has to be enabled explicitly, automatic
expansion will be disabled [3.1]
• New option ‘selected’ to enable selected expansion, default: false [3.3, 5.2]
• New default for expansion option ‘step’: 4 (min(stretch,shrink)/5) [3.3]
• Protrusion settings for Bitstream Charter
1.4 (2004/11/12)
• Set up fonts independently from LaTeX font loading
• New option: ‘final’ [3.5]
1.2 (2004/10/03)
• New font sets: ‘allmath’ and ‘basicmath’ [4, table 2]
• Protrusion settings for Computer Modern Roman math symbols
1.1 (2004/09/21)
• New command: \DeclareCharacterInheritance [5.6]
• Characters may also be specified as octal or hexadecimal numbers [5]
• Protrusion settings for Adobe Minion
1.0 (2004/09/11)
• First CTAN release
15 Index