From d13bbbc5ebf910f72e81cb043bffbe67e7e78c7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20Fabian=20Kr=C3=BCger?= Date: Wed, 1 Jul 2020 14:28:22 +0200 Subject: [PATCH] Add package for microtype compatibility --- luametalatex-microtype.sty | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 luametalatex-microtype.sty diff --git a/luametalatex-microtype.sty b/luametalatex-microtype.sty new file mode 100644 index 0000000..de796d0 --- /dev/null +++ b/luametalatex-microtype.sty @@ -0,0 +1,34 @@ +% To be loaded *after* microtype +% +% Patching \pickup@font to emulate LuaTeX's font expansion interface using \adjustspacing... +\RequirePackage{microtype}% Just to ensure it isn't loaded in the wrong position. Normally this shouldn't be necessary +\def\luametalatex@@setexpansion#-#1#2#3#-\relax{% + \adjustspacingstretch #1 + \adjustspacingshrink #2 + \adjustspacingstep #3 +}% +\newluafunction\luametalatex@@expandglyphsinfont +\protected\luadef\pdffontexpand\luametalatex@@expandglyphsinfont +\def\luametalatex@@everyjobandnow#1{\toksapp\everyjob{#1}#1}% +% +\begingroup +\catcode`\!=\catcode`\% +\catcode`\%=12 +\expanded{! + \endgroup + \def\noexpand\pickup@font{! + \unexpanded\expandafter{\pickup@font + \expandafter\expandafter\expandafter\luametalatex@@setexpansion\csname pickup@font@@hook@luametalatex@microtype@\the\fontid\font@name\endcsname{0}{0}{0}\relax + }! + }! + \noexpand\luametalatex@@everyjobandnow{\noexpand\directlua{! + lua.get_functions_table()[\the\luametalatex@@expandglyphsinfont] = function() + token.put_next(token.create'fontid') + local font = token.scan_int() + local stretch = token.scan_int() + local shrink = token.scan_int() + local step = token.scan_int() + token.set_macro('pickup@font@@hook@luametalatex@microtype@' .. font, string.format("{}{%i}{%i}{%i}", stretch, shrink, step), "global") + end + }} +}%