diff options
author | Karl Berry <karl@freefriends.org> | 2020-12-08 22:04:00 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-12-08 22:04:00 +0000 |
commit | cea7c4c3d359a256aa7bc50d314b8246662fa203 (patch) | |
tree | 768ad73cab372892cc2902a8da94cc36f381501a /Master/texmf-dist/tex/latex/microtype/microtype-luatex.def | |
parent | a02f01decb83795aa2d41b1a390a90684f560cf5 (diff) |
microtype (7dec20)
git-svn-id: svn://tug.org/texlive/trunk@57096 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/microtype/microtype-luatex.def')
-rw-r--r-- | Master/texmf-dist/tex/latex/microtype/microtype-luatex.def | 169 |
1 files changed, 99 insertions, 70 deletions
diff --git a/Master/texmf-dist/tex/latex/microtype/microtype-luatex.def b/Master/texmf-dist/tex/latex/microtype/microtype-luatex.def index 5bdb98dc2bf..ea55d562c3c 100644 --- a/Master/texmf-dist/tex/latex/microtype/microtype-luatex.def +++ b/Master/texmf-dist/tex/latex/microtype/microtype-luatex.def @@ -10,7 +10,7 @@ %% %% The `microtype' package %% Subliminal refinements towards typographical perfection -%% Copyright (c) 2004--2019 R Schlicht <w.m.l@gmx.net> +%% Copyright (c) 2004--2020 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 @@ -30,11 +30,11 @@ %% \ProvidesFile {microtype-luatex.def} - [2019/11/18 v2.7d + [2020/12/07 v2.8 Definitions specific to luatex (RS)] -\def\MT@lua{\directlua} +\let\MT@lua\directlua \def\MT@luatex@no{5} \ifnum\luatexversion<90 \def\MT@luatex@no{4} @@ -55,13 +55,17 @@ \MT@luatex@no <#1 \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi} \@ifl@t@r\fmtversion{2016/01/01}\relax{\RequirePackage{luatexbase}} -\RequirePackage{luaotfload} +\@ifl@t@r\fmtversion{2017/01/01}\relax{\RequirePackage{luaotfload}} \MT@lua{require("microtype")} \def\MT@ifint#1{\csname\MT@lua{microtype.if_int([[#1]])}\endcsname} \def\MT@ifdimen#1{\csname\MT@lua{microtype.if_dimen([[#1]])}\endcsname} \def\MT@ifstreq#1#2{\csname\MT@lua{microtype.if_str_eq([[#1]],[[#2]])}\endcsname} +\def\MT@if@luaotf@font{\csname\MT@lua{% + microtype.if_luaotf_font() + }\endcsname +} \def\MT@do@font#1{% - \MT@if@fontspec@font{% + \MT@if@luaotf@font{% \def\MT@dofont@function{#1}% \MT@lua{microtype.do_font()}% }{\MT@while@num\z@\@cclvi{#1}}% @@ -132,7 +136,6 @@ \fi \MT@exp@two@c\let\MT@font\MT@font@copy \let\font@name\MT@font@copy - \aftergroup\MT@exp@two@c \aftergroup\let\aftergroup\font@name\aftergroup\MT@font@copy } \def\MT@rem@from@list#1{% @@ -143,6 +146,16 @@ } \def\MT@lua@copyfont #1 #2 #3\@nil{% \global\expandafter\font\MT@font@copy=#3\relax} +\def\MT@fix@fontdimen@six{% + \ifnum\fontdimen6\MT@font=\z@ + \fontdimen6\MT@font=% + \MT@requires@luatex4{\pdffeedback fontsize}{\pdffontsize}\MT@font + \MT@info{Fixing zero \string\fontdimen 6 for font `\MT@@font'\MessageBreak + (new value: \the\fontdimen6\MT@font)}% + \MT@glet@nc{\MT@@font-fake6}\@empty + \fi + \edef\MT@dimen@six{\number\fontdimen6\MT@font}% +} \def\MT@protrusion{\MT@maybe@do{pr}} \def\MT@set@pr@codes{% \MT@nofamilyfalse @@ -156,29 +169,16 @@ \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@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}}% @@ -240,8 +240,8 @@ \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 + \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@ @@ -298,6 +298,7 @@ \let\MT@stretch@ \MT@stretch \let\MT@shrink@ \MT@shrink \let\MT@step@ \MT@step + \let\MT@auto@ \MT@auto \let\MT@ex@factor@\MT@ex@factor }% \MT@reset@ef@codes @@ -305,20 +306,20 @@ \MT@nonselectedfalse } \let\MT@set@ex@codes\MT@set@ex@codes@n -\directlua{\detokenize{ - if font.setexpansion == nil then - tex.print("\\@firstoftwo") - else - tex.print("\\@secondoftwo") - end -}}{ +\MT@requires@luatex3{ \MT@requires@luatex4{\let\pdffontexpand\expandglyphsinfont}\relax +\ifnum\luatexversion<79 \def\MT@expandfont{% - \pdffontexpand\MT@font \MT@stretch@ \MT@shrink@ \MT@step@ \MT@auto@\relax + \pdffontexpand\MT@font \MT@stretch@ \MT@shrink@ \MT@step@ autoexpand\relax +} +\else +\def\MT@expandfont{% + \pdffontexpand\MT@font \MT@stretch@ \MT@shrink@ \MT@step@\relax } +\fi }{ \def\MT@expandfont{% - \directlua{font.setexpansion(font.current(),\MT@stretch@,\MT@shrink@,\MT@step@)}% + \pdffontexpand\MT@font \MT@stretch@ \MT@shrink@ \MT@step@ \MT@auto@\relax } } \def\MT@set@all@ex#1{% @@ -371,6 +372,9 @@ \MT@get@ex@opt@{stretch}{Setting stretch limit to \number\MT@stretch@}% \MT@get@ex@opt@{shrink} {Setting shrink limit to \number\MT@shrink@}% \MT@get@ex@opt@{step} {Setting expansion step to \number\MT@step@}% + \MT@requires@luatex3\relax{% + \MT@get@ex@opt@{auto}{\MT@ifstreq{\MT@auto@}{autoexpand}{En}{Dis}abling automatic expansion}% + }% \MT@ifdefined@n@T{MT@ex@c@\MT@ex@c@name @preset}{% \MT@preset@ex \let\MT@reset@ef@codes\relax @@ -408,7 +412,15 @@ \MT@tracking@ \def\MT@set@tr@codes{% \MT@vinfo{Tracking font `\MT@@font'\on@line}% - \MT@get@font@dimen@six{% + \MT@ifdefined@n@TF{\MT@@font-fake6}{% + \expandafter\ifx\csname\MT@@font-fake6\endcsname\@empty + \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}% + \MT@glet@nc{\MT@@font-fake6}\relax + \fi + }{% \MT@if@list@exists \MT@get@tr@opt \relax @@ -422,7 +434,7 @@ /\number\MT@letterspace@ ls\endcsname}% \expandafter\ifx\MT@lsfont\relax \MT@get@ls@basefont - \MT@if@fontspec@font{% + \MT@if@luaotf@font{% \ifnum\MT@letterspace@<\z@\def\MT@minus{-}\else\let\MT@minus\@empty\fi \global\expandafter\font\MT@lsfont=% \expandafter\MT@exp@two@c\expandafter\MT@ls@fontspec@font @@ -440,7 +452,7 @@ \MT@ifdefined@c@TF\MT@tr@okern{\let\@tempa\MT@tr@okern}{\def\@tempa{*,*}}% \expandafter\MT@tr@set@okern\@tempa,% \MT@ifdefined@c@T\MT@tr@ligatures\MT@tr@noligatures - \MT@if@fontspec@font\relax{% + \MT@if@luaotf@font\relax{% \MT@do@font{\lpcode\MT@lsfont\@tempcnta=\numexpr\MT@letterspace@/2\relax \rpcode\MT@lsfont\@tempcnta=\numexpr\MT@letterspace@/2\relax}% \let\MT@the@pr@code\MT@the@pr@code@tr @@ -448,7 +460,7 @@ \fi \aftergroup\MT@set@lsfont \let\MT@font\MT@lsfont - \MT@if@fontspec@font\MT@font\relax + \MT@if@luaotf@font\MT@font\relax \xdef\MT@set@curr@ls{\def\noexpand\MT@curr@ls{\MT@letterspace@}}% \aftergroup\MT@set@curr@ls \MT@outer@space=\csname MT@outer@space\expandafter\string\font@name\endcsname\relax @@ -494,19 +506,21 @@ } \def\MT@get@tr@opt{% \MT@set@listname + \let\MT@tr@factor@\@m + \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @unit}{% + \MT@let@cn\MT@tr@unit@{MT@tr@c@\MT@tr@c@name @unit}% + \ifdim\MT@tr@unit@=1em + \let\MT@tr@unit@\@undefined + \else + \MT@get@unit\MT@tr@unit@ + \fi + }% \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name}{% \MT@let@cn\MT@letterspace{MT@tr@c@\MT@tr@c@name}% - \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @unit}{% - \MT@let@cn\MT@tr@unit@{MT@tr@c@\MT@tr@c@name @unit}% - \ifdim\MT@tr@unit@=1em - \let\MT@tr@unit@\@undefined - \else - \MT@let@cn\@tempb{MT@tr@c@\MT@tr@c@name}% - \MT@get@unit\MT@tr@unit@ - \let\MT@tr@factor@\@m - \MT@scale@to@em - \edef\MT@letterspace{\number\@tempcntb}% - \fi + \MT@ifdefined@c@T\MT@tr@unit@{% + \let\@tempb\MT@letterspace + \MT@scale@to@em + \edef\MT@letterspace{\number\@tempcntb}% }% }% \MT@get@tr@opt@{spacing} {ispace}% @@ -521,6 +535,7 @@ \def\MT@set@lsfont{\MT@exp@two@c\let\font@name\MT@lsfont} \DeclareRobustCommand\lsstyle{% \not@math@alphabet\lsstyle\textls + \let\glb@currsize\@empty \MT@maybe@gobble@with@tikz{\aftergroup\glb@settings}% \def\MT@feat{tr}% \let\MT@tracking\MT@set@tr@codes @@ -568,13 +583,11 @@ } \def\MT@tr@set@space@#1#2#3#4{% \MT@ifempty{#2}{% - \MT@ifempty{#1}{% - \edef\MT@temp{\MT@temp#4\the\fontdimen#3\MT@lsfont}% - }{% + \MT@ifempty{#1}\relax{% \MT@tr@set@space@@{#1}{#3}{1000}% - \edef\MT@temp{\MT@temp#4\the\@tempdima}% \fontdimen#3\MT@lsfont=\@tempdima }% + \edef\MT@temp{\MT@temp#4\the\fontdimen#3\MT@lsfont}% }{% \MT@tr@set@space@@{#2}{#3}{2000}% \edef\MT@temp{\MT@temp#4\the\@tempdima}% @@ -589,12 +602,10 @@ \MT@ifdefined@c@TF\MT@tr@unit@ {\edef\@tempb{#1}\MT@scale@to@em} {\@tempcntb=#1\relax}% - \@tempdima=\dimexpr \dimexpr\@tempcntb sp*\MT@dimen@six/1000\relax - -\fontdimen#2\MT@lsfont\relax + \@tempdima=\dimexpr\@tempcntb sp*\MT@dimen@six/1000\relax \ifnum#2=\tw@ \advance\@tempdima -\dimexpr\MT@letterspace@ sp*\MT@dimen@six/#3\relax \fi - \@tempdima=\dimexpr \fontdimen#2\MT@lsfont+\@tempdima\relax }{% \MT@ifempty\@tempa{\let\@tempa\MT@letterspace@}\relax \@tempdima=\dimexpr \numexpr1000+\@tempa sp *\fontdimen#2\MT@lsfont/1000\relax @@ -751,7 +762,7 @@ \KV@@sp@def\@tempa{##1}\MT@get@slot \ifnum\MT@char>\m@ne \tagcode#1\MT@char=\m@ne - \MT@if@fontspec@font + \MT@if@luaotf@font {\MT@lua{microtype.noligatures([[#1]],[[\MT@char]])}}\relax \fi }% @@ -764,7 +775,7 @@ }% }{% \pdfnoligatures#1% - \MT@if@fontspec@font + \MT@if@luaotf@font {\MT@lua{microtype.noligatures([[#1]],"_all_")}}\relax \MT@vinfo{... Disabling all ligatures}% }% @@ -930,9 +941,13 @@ \define@key{MT@ex@c}{auto}[true]{% \def\@tempa{#1}% \csname if\@tempa\endcsname + \MT@requires@luatex3\relax + {\MT@gdef@n{MT@ex@c@\MT@curr@set@name @auto}{autoexpand}}% \else - \MT@warning{Non-automatic font expansion doesn't work with\MessageBreak - luatex}% + \MT@requires@luatex3{% + \MT@warning{Non-automatic font expansion doesn't work with\MessageBreak + luatex}}% + {\MT@glet@nc{MT@ex@c@\MT@curr@set@name @auto}\@empty}% \fi } \MT@define@opt@key{tr}{spacing} @@ -1105,7 +1120,17 @@ } \def\MT@setup@expansion{% \ifnum\pdfoutput<\@ne - \ifMT@opt@expansion \else + \ifMT@opt@expansion + \ifMT@expansion + \MT@requires@luatex3{% + \MT@warning@nl{Font expansion doesn't work properly with luatex in\MessageBreak + DVI mode: the glyphs won't be actually transformed,\MessageBreak + but will only be shifted. You might want to use\MessageBreak + pdflatex instead. I'll continue anyway ..}% + %\MT@expansionfalse + }\relax + \fi + \else \MT@expansionfalse \fi \fi @@ -1124,13 +1149,17 @@ Setting it to one}% \def\MT@step{1 }% \fi - \let\MT@auto@\@empty + \let\MT@auto\@empty \ifMT@auto + \MT@requires@luatex3\relax{\def\MT@auto{autoexpand}}% \else - \ifMT@opt@auto - \MT@error{Non-automatic font expansion does not work with\MessageBreak - luatex}{Remove `auto=false' from the package options, or use pdftex.}% - \fi + \MT@requires@luatex3{% + \ifMT@opt@auto + \MT@error{Non-automatic font expansion does not work with\MessageBreak + luatex}{Remove `auto=false' from the package options, or use pdftex.}% + \MT@autotrue + \fi + }\relax \fi \ifMT@selected \let\MT@set@ex@codes\MT@set@ex@codes@s |