diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/microtype/microtype-xetex.def')
-rw-r--r-- | Master/texmf-dist/tex/latex/microtype/microtype-xetex.def | 480 |
1 files changed, 480 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/microtype/microtype-xetex.def b/Master/texmf-dist/tex/latex/microtype/microtype-xetex.def new file mode 100644 index 00000000000..581695e43d5 --- /dev/null +++ b/Master/texmf-dist/tex/latex/microtype/microtype-xetex.def @@ -0,0 +1,480 @@ +%% +%% This is file `microtype-xetex.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% microtype.dtx (with options: `xetex-def') +%% +%% ------------------------------------------------------------------------ +%% +%% The `microtype' package +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> +%% +%% This work may be distributed and/or modified under the conditions of the +%% LaTeX Project Public License, either version 1.3c of this license or (at +%% your option) any later version. The latest version of this license is in: +%% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part +%% of all distributions of LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `author-maintained'. +%% +%% This work consists of the files microtype.dtx and microtype.ins and the +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. +%% +%% ------------------------------------------------------------------------ +%% This file contains enginge-specific definitions. +%% ------------------------------------------------------------------------ +%% +\ProvidesFile + {microtype-xetex.def} + [2013/03/13 v2.5 + Definitions specific to + xetex + (RS)] +\ifdim 0\XeTeXrevision pt < 0.9997pt + \def\MT@xetex@no{1} +\else + \def\MT@xetex@no{2} +\fi +\ifnum + \csname MT@\MT@engine tex@no\endcsname < 2 + \MT@warning@nl{You + are using a \MT@engine tex version older than + 0.9997% + .\MessageBreak + `\MT@MT' does not work with this version.\MessageBreak + Please install a newer version of \MT@engine tex% + .\MessageBreak I will quit now} + \MT@clear@options +\endinput\fi +\def\MT@ifint#1{% + \if!\ifnum9<1#1!\else?\fi + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\def\MT@ifdimen#1{% + \setbox\z@=\hbox{% + \MT@count=1#1\relax + \ifnum\MT@count=\@ne + \aftergroup\@secondoftwo + \else + \aftergroup\@firstoftwo + \fi + }% +} +\def\MT@ifstreq#1#2{% + \edef\MT@res@a{#1}% + \edef\MT@res@b{#2}% + \ifx\MT@res@a\MT@res@b + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\def\MT@do@font#1{% + \@tempcnta=\z@ + \MT@loop #1% + \advance\@tempcnta \@ne + \ifnum\@tempcnta < \XeTeXcountglyphs\MT@font \MT@repeat +} + \def\MT@ledmac@setup{% + \ifMT@protrusion + \MT@ifdefined@c@TF\l@dunhbox@line{% + \MT@info@nl{Patching ledmac to enable character protrusion}% + \newdimen\MT@led@kern + \let\MT@led@unhbox@line\l@dunhbox@line + \renewcommand*{\l@dunhbox@line}[1]{% + \ifhbox##1% + \MT@led@kern=\rightmarginkern##1% + \kern\leftmarginkern##1% + \MT@led@unhbox@line##1% + \kern\MT@led@kern + \fi + }% + }{% + \MT@warning@nl{% + Character protrusion in paragraphs with line\MessageBreak + numbering will only work if you update ledmac}% + }% + \fi + } +\def\MT@setupfont{\MT@setupfont@hook} +\g@addto@macro\MT@setupfont{% + \MT@exp@two@c\MT@split@name\string\MT@font/\@nil + \MT@exp@one@n\MT@find@file\MT@family + \ifx\MT@familyalias\@empty \else + \MT@exp@one@n\MT@find@file\MT@familyalias\fi +} +\g@addto@macro\MT@setupfont{% + \MT@check@font + \ifMT@inlist@ + \else + \MT@vinfo{Setting up font `\MT@@font'\on@line}% + \MT@protrusion +} +\g@addto@macro\MT@setupfont{% + \MT@register@font + \fi +} +\def\MT@protrusion{\MT@maybe@do{pr}} +\def\MT@set@pr@codes{% + \MT@nofamilyfalse + \MT@if@list@exists{% + \ifMT@nofamily + \MT@ifdefined@n@TF{\MT@encoding-\MT@family-settings}\relax{% + \MT@info@nl{Loading generic settings for font family\MessageBreak + `\MT@family' (encoding: \MT@encoding).\MessageBreak + For optimal results, create family-specific settings.\MessageBreak + See the microtype manual for details}% + \MT@glet@nc{\MT@encoding-\MT@family-settings}\@empty + }% + \fi + \MT@get@font@dimen@six{% + \MT@get@opt + \MT@reset@pr@codes + \MT@get@inh@list + \MT@set@inputenc{c}% + \MT@load@list\MT@pr@c@name + \MT@set@listname + \MT@let@cn\@tempc{MT@pr@c@\MT@pr@c@name}% + \expandafter\MT@set@codes\@tempc,\relax,}% + }\MT@reset@pr@codes +} +\def\MT@get@font@dimen@six{% + \ifnum\fontdimen6\MT@font=\z@ + \MT@warning@nl{% + Font `\MT@@font' does not specify its\MessageBreak + \@backslashchar fontdimen 6 (width of an `em')! Therefore,\MessageBreak + \@nameuse{MT@abbr@\MT@feat} will not work with this font}% + \expandafter\@gobble + \else + \edef\MT@dimen@six{\number\fontdimen6\MT@font}% + \expandafter\@firstofone + \fi +} +\def\MT@set@all@pr#1#2{% + \let\MT@temp\@empty + \MT@ifempty{#1}\relax{\g@addto@macro\MT@temp{\lpcode\MT@font\@tempcnta=#1}}% + \MT@ifempty{#2}\relax{\g@addto@macro\MT@temp{\rpcode\MT@font\@tempcnta=#2}}% + \MT@do@font\MT@temp +} +\def\MT@reset@pr@codes@{\MT@set@all@pr\z@\z@} +\let\MT@reset@pr@codes\relax +\def\MT@the@pr@code{\@tempcntb} +\def\MT@set@codes#1,{% + \ifx\relax#1\@empty\else + \MT@split@codes #1==\relax + \expandafter\MT@set@codes + \fi +} +\def\MT@split@codes#1=#2=#3\relax{% + \def\@tempa{#1}% + \ifx\@tempa\@empty \else + \MT@get@slot + \ifx\MT@char\@empty \else + \MT@get@char@unit + \csname MT@\MT@feat @split@val\endcsname#2\relax + \fi + \fi +} +\def\MT@pr@split@val#1,#2\relax{% + \def\@tempb{#1}% + \MT@ifempty\@tempb\relax{% + \MT@scale@to@em + \lpcode\MT@font\MT@char=\MT@the@pr@code + }% + \def\@tempb{#2}% + \MT@ifempty\@tempb\relax{% + \MT@scale@to@em + \rpcode\MT@font\MT@char=\MT@the@pr@code + }% + \MT@ifdefined@c@T\MT@pr@inh@name{% + \MT@ifdefined@n@T{MT@inh@\MT@pr@inh@name @\MT@char @}{% + \MT@exp@cs\MT@map@tlist@c + {MT@inh@\MT@pr@inh@name @\MT@char @}% + \MT@set@pr@heirs + }% + }% +} +\def\MT@scale@to@em{% + \@tempcntb=\MT@count\relax + \MT@scale\@tempcntb \@tempb \MT@dimen@six + \ifnum\@tempcntb=\z@ \else + \MT@scale@factor + \fi +} +\def\MT@get@charwd{% + \ifnum\MT@char@<\z@ + \setbox\z@=\hbox{\MT@font \XeTeXglyph-\MT@char@}% + \MT@count=\wd\z@ + \else + \MT@count=\fontcharwd\MT@font\MT@char@\relax + \fi + \ifnum\MT@count=\z@ \MT@info@missing@char \fi +} +\def\MT@set@pr@heirs#1{% + \lpcode\MT@font #1 =\lpcode\MT@font\MT@char\relax + \rpcode\MT@font #1 =\rpcode\MT@font\MT@char\relax +} +\def\MT@preset@pr{% + \expandafter\expandafter\expandafter\MT@preset@pr@ + \csname MT@pr@c@\MT@pr@c@name @preset\endcsname\@nil +} +\def\MT@preset@pr@#1,#2\@nil{% + \ifx\MT@pr@unit@\@empty + \MT@warn@preset@towidth{pr}% + \let\MT@preset@aux\MT@preset@aux@factor + \else + \def\MT@preset@aux{\MT@preset@aux@space2}% + \fi + \MT@ifempty{#1}{\let\@tempa\@empty}{\MT@preset@aux{#1}\@tempa}% + \MT@ifempty{#2}{\let\@tempb\@empty}{\MT@preset@aux{#2}\@tempb}% + \MT@set@all@pr\@tempa\@tempb +} +\def\MT@preset@aux@factor#1#2{% + \@tempcntb=#1\relax + \MT@scale@factor + \edef#2{\number\@tempcntb}% +} +\def\MT@preset@aux@space#1#2#3{% + \def\@tempb{#2}% + \MT@get@space@unit#1% + \MT@scale@to@em + \edef#3{\number\@tempcntb}% +} +\def\MT@warn@preset@towidth#1{% + \MT@warning@nl{% + Cannot preset characters relative to their widths\MessageBreak + for \@nameuse{MT@abbr@#1} list `\@nameuse{MT@#1@c@name}'. Presetting them% + \MessageBreak relative to 1em instead}% +} +\DeclareRobustCommand\lsstyle{% + \MT@error{Letterspacing currently doesn't work with xetex} + {Run pdftex or luatex, or use the `soul' package instead.}% + \MT@glet\lsstyle\relax +} +\def\MT@get@slot@{% + \ifnum\XeTeXfonttype\MT@font=\z@ + \ifnum\MT@char > \m@ne + \ifMT@norest \else + \MT@warn@rest + \let\MT@char\@empty + \fi + \else + \MT@warn@unknown + \fi + \else + \ifnum\MT@char=47\relax + \ifMT@norest \edef\MT@char{U47}% + \else + \@tempcnta=\XeTeXglyphindex"\expandafter\@gobble\@tempa"\relax + \ifnum\@tempcnta=\z@ + \MT@warn@unknown + \let\MT@char\@empty + \else + \edef\MT@char{\@tempa\space}% + \edef\MT@char@{-\the\@tempcnta}% + \fi + \fi + \else + \ifnum\MT@char > \m@ne + \ifMT@norest + \@tempcnta=\XeTeXcharglyph\MT@char\relax + \ifnum\@tempcnta=\z@ + \MT@info@missing@char + \let\MT@char\@empty + \else + \edef\MT@char{U\MT@char}% + \fi + \else + \MT@warn@rest + \let\MT@char\@empty + \fi + \else + \MT@warn@unknown + \let\MT@char\@empty + \fi + \fi + \fi +} +\def\MT@max@char + {1114111 } +\def\MT@max@slot + {1114111 } +\renewcommand*\DisableLigatures[2][]{% + \MT@error{Disabling ligatures of a font is only possible\MessageBreak + with pdftex version 1.30 or newer.\MessageBreak + Ignoring \string\DisableLigatures}{% + Use + pdftex.}% +} +\def\SetProtrusion{% + \MT@begin@catcodes + \MT@SetProtrusion +} +\newcommand*\MT@SetProtrusion[3][]{% + \let\MT@extra@context\@empty + \MT@set@named@keys{MT@pr@c}{#1}% + \def\MT@permutelist{pr@c}% + \setkeys{MT@cfg}{#2}% + \MT@permute + \MT@gdef@n{MT@pr@c@\MT@pr@c@name}{#3}% + \MT@end@catcodes +} + \define@key{MT@pr@c}{context}[]{% + \MT@error{Protrusion contexts only work with pdftex + \MessageBreak or luatex. + Ignoring `context' key\on@line}% + {Use pdftex or luatex.}% + } +\define@key{MT@pr@c}{unit}[character]{% + \MT@glet@nc{MT@pr@c@\MT@curr@set@name @unit}\@empty + \def\@tempa{#1}% + \MT@ifstreq\@tempa{character}\relax{% + \MT@ifdimen\@tempa + {\MT@glet@nc{MT@pr@c@\MT@curr@set@name @unit}\@tempa}% + {\MT@warn@nodim{character widths}}% + }% +} +\def\MT@inh@split#1=#2=#3\relax{% + \def\@tempa{#1}% + \ifx\@tempa\@empty \else + \MT@get@slot + \ifx\MT@char\@empty\else + \let\MT@val\MT@char + \MT@map@clist@n{#2}{% + \def\@tempa{##1}% + \ifx\@tempa\@empty \else + \MT@get@slot + \ifx\MT@char\@empty\else + \MT@exp@cs\MT@xadd{MT@inh@\MT@listname @\MT@val @}{{\MT@char}}% + \fi + \fi + }% + \fi + \fi +} +\MT@def@bool@opt{DVIoutput}{% + \csname if\@tempa\endcsname + \MT@warning@nl{Ignoring `DVIoutput' option}% + \fi +} + \MT@def@bool@opt{copyfonts}{% + \csname if\@tempa\endcsname + \MT@error + {The `copyfonts' option does not work with xetex} + {Use pdftex or luatex instead.}% + \fi + } +\def\MT@define@optionX#1#2{% + \define@key{MTX}{#1}[true]{% + \edef\@tempb{\csname MT@rbba@#1\endcsname}% + \MT@map@clist@n{##1}{% + \KV@@sp@def\MT@val{####1}% + \MT@ifempty\MT@val\relax{% + \@tempcnta=\m@ne + \MT@ifstreq\MT@val{true}{% + \MT@checksetup{#1}{% + \@tempcnta=\csname MT@\@tempb @level\endcsname + \MT@vinfo{Enabling #1 + (level \number\csname MT@\@tempb @level\endcsname)\on@line}% + }% + }{% + \MT@ifstreq\MT@val{false}{% + \@tempcnta=\z@ + \MT@vinfo{Disabling #1\on@line}% + }{% + \MT@ifstreq\MT@val{compatibility}{% + \MT@checksetup{#1}{% + \@tempcnta=\@ne + \MT@let@nc{MT@\@tempb @level}\@ne + \MT@vinfo{Setting #1 to level 1\on@line}% + }% + }{% + \MT@ifstreq\MT@val{nocompatibility}{% + \MT@checksetup{#1}{% + \@tempcnta=\tw@ + \MT@let@nc{MT@\@tempb @level}\tw@ + \MT@vinfo{Setting #1 to level 2\on@line}% + }% + }{\MT@error{Value `\MT@val' for key `#1' not recognised} + {Use any of `true', `false', `compatibility' or + `nocompatibility'.}% + }% + }% + }% + }% + \ifnum\@tempcnta>\m@ne + #2\@tempcnta\relax + \fi + }% + }% + }% +} +\def\MT@checksetup#1{% + \csname ifMT@#1\endcsname + \expandafter\@firstofone + \else + \MT@error{You cannot enable #1 if it was disabled\MessageBreak + in the package options}{Load microtype with #1 enabled.}% + \expandafter\@gobble + \fi +} +\MT@define@optionX{protrusion}\MT@protrudechars +\let\MT@protrudechars\XeTeXprotrudechars +\define@key{MTX}{expansion}[true]{\MT@warning{Ignoring expansion setup}} +\define@key{MTX}{tracking}[true]{\MT@warning{Ignoring tracking setup}} +\define@key{MTX}{kerning}[true]{\MT@warning{Ignoring kerning setup}} +\define@key{MTX}{spacing}[true]{\MT@warning{Ignoring spacing setup}} +\define@key{MTX}{activate}[true]{% + \setkeys{MTX}{protrusion={#1}}% +} +\let\MT@setup@PDF\relax +\let\MT@setup@copies\relax +\def\MT@setup@protrusion{% + \ifMT@protrusion + \edef\MT@active@features{\MT@active@features,pr}% + \MT@protrudechars\MT@pr@level + \MT@info@nl{Character protrusion enabled (level \number\MT@pr@level)% + \ifnum\MT@pr@factor=\MT@factor@default \else,\MessageBreak + factor: \number\MT@pr@factor\fi + \ifx\MT@pr@unit\@empty \else,\MessageBreak unit: \MT@pr@unit\fi}% + \MT@check@active@set{pr}% + \else + \let\MT@protrusion\relax + \MT@info@nl{No character protrusion}% + \fi +} +\def\MT@setup@expansion{% + \ifMT@expansion + \ifMT@opt@expansion + \MT@error{Font expansion does not work with xetex} + {Use pdftex or luatex instead.}% + \fi + \fi +} + \def\MT@error@doesnt@work#1{% + \csname ifMT@#1\endcsname + \MT@error{The #1 feature only works with pdftex 1.40\MessageBreak + or newer. Switching it off} + {Use pdftex instead.}% + \csname MT@#1false\endcsname + \MT@let@nc{MT@#1}\relax + \else + \MT@info@nl{No adjustment of #1% + }% + \fi + } + \def\MT@setup@tracking{\MT@error@doesnt@work{tracking}} + \def\MT@setup@kerning {\MT@error@doesnt@work{kerning}} + \def\MT@setup@spacing {\MT@error@doesnt@work{spacing}} +\let\MT@setup@warntracking\relax +\let\MT@setup@noligatures\relax +\endinput +%% +%% End of file `microtype-xetex.def'. |