Расширение микротипа отключается при изменении размера шрифта! (lualatex)

Расширение микротипа отключается при изменении размера шрифта! (lualatex)

Похоже, что расширение microtype отключается, когда размер шрифта изменяется с размера шрифта по умолчанию. Вот два фрагмента кода, в первом расширение работает, во втором — нет (как будто microtype никогда не давал опции stretch и shrink).

Работает:

% main.tex
\documentclass[9pt]{extarticle}
\usepackage[english]{babel}
\usepackage{color}
\usepackage{blindtext}
\usepackage{multicol}
\definecolor{textblack}{RGB}{26,25,25}
\usepackage{fontspec}
\usepackage[expansion=true,stretch=500,shrink=500]{microtype}
\setmainfont[Ligatures=TeX,Renderer=Basic]{Warnock Pro}
\sloppy
\begin{document}
    \color{textblack}
    \fontsize{9pt}{12pt}\selectfont
    \begin{multicols}{3}
        \blindtext[10]
    \end{multicols}
\end{document}

Команда:

>> lualatex main.tex

Выход: работы по расширению

Не работает:

%main.tex
\documentclass[9pt]{extarticle}
\usepackage[english]{babel}
\usepackage{color}
\usepackage{blindtext}
\usepackage{multicol}
\definecolor{textblack}{RGB}{26,25,25}
\usepackage{fontspec}
\usepackage[expansion=true,stretch=500,shrink=500]{microtype}
\setmainfont[Ligatures=TeX,Renderer=Basic]{Warnock Pro}
\sloppy
\begin{document}
    \color{textblack}
    \fontsize{8.8pt}{12pt}\selectfont
    \begin{multicols}{3}
        \blindtext[10]
    \end{multicols}
\end{document}

Команда:

>> lualatex main.tex

Выход: расширение не работает Пожалуйста, подскажите, можно ли это исправить и как, или проблема в моем коде.

Спасибо,

Мужчина

решение1

microtype устанавливает расширение шрифта только для ограниченного набора размеров шрифта. Если вы добавите свой размер в список, это сработает (переопределение basictext, вероятно, не лучший способ сделать это):

\documentclass{article}
\usepackage[english]{babel}
\usepackage{color}
\usepackage{blindtext}
\usepackage{multicol}
\definecolor{textblack}{RGB}{26,25,25}
\usepackage{fontspec}
\usepackage[expansion=true,stretch=500,shrink=500]{microtype}
\DeclareMicrotypeSet*{basictext}
{ encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2,TU},
 family = {rm*,sf*},
 series = {md*},
 size = {normalsize,footnotesize,small,large,9.1} %added 9.1
}
\setmainfont[Ligatures=TeX]{Arial}
\begin{document}
    \fontsize{9.1pt}{12pt}\selectfont
    \begin{multicols}{3}
        \blindtext[10]
    \end{multicols}
\end{document}

Вы также можете снять ограничение, например, используя другой набор, а не набор по умолчанию:

\documentclass{article}
\usepackage[english]{babel}
\usepackage{color}
\usepackage{blindtext}
\usepackage{multicol}
\definecolor{textblack}{RGB}{26,25,25}
\usepackage{fontspec}
\usepackage[expansion=true,stretch=500,shrink=500]{microtype}
\UseMicrotypeSet[expansion]{alltext}
\setmainfont[Ligatures=TeX]{Arial}
\begin{document}
    \fontsize{9.1pt}{12pt}\selectfont
    \begin{multicols}{3}
        \blindtext[10]
    \end{multicols}
\end{document}

ИЛИ еще короче, передав expansion=alltextкак опцию пакета при загрузке microtype:

\documentclass{article}
\usepackage[english]{babel}
\usepackage{color}
\usepackage{blindtext}
\usepackage{multicol}
\definecolor{textblack}{RGB}{26,25,25}
\usepackage{fontspec}
\usepackage[expansion=alltext,stretch=500,shrink=500]{microtype}% expansion=all would also work as that set too does not have restrictions on size, and is the least restrictive of all predefined sets
\setmainfont[Ligatures=TeX]{Arial}
\begin{document}
    \fontsize{9.1pt}{12pt}\selectfont
    \begin{multicols}{3}
        \blindtext[10]
    \end{multicols}
\end{document}

введите описание изображения здесь

решение2

Честно говоря, я не знаю, зачем люди microtypeвообще его используют. Конечно, у него есть несколько хороших интерфейсов, таких как textls, но для расширения я могу добиться того же самого с помощью двух строк Lua и функции шрифта. У него также нет проблемы с размером шрифта.

%main.tex
\documentclass[9pt]{extarticle}
\usepackage[english]{babel}
\usepackage{color}
\usepackage{blindtext}
\usepackage{multicol}
\definecolor{textblack}{RGB}{26,25,25}
\usepackage{fontspec}
\usepackage[expansion=false]{microtype}
\directlua{
  fonts.expansions.setups.default.stretch = 500
  fonts.expansions.setups.default.shrink = 500
}
\adjustspacing=2
\setmainfont[Ligatures=TeX,Renderer=Basic,RawFeature={expansion=default}]{Roboto}
\sloppy
\begin{document}
    \color{textblack}
    \fontsize{8.8pt}{12pt}\selectfont
    \begin{multicols}{3}
        \blindtext[10]
    \end{multicols}
\end{document}

Пояснение используемых команд:

  1. \adjustspacing: Из руководства luatex: "Если \adjustspacingзначение равно 2, оптимизация hz будет применена к глифам и кернам. Если значение равно 3, будут обработаны только глифы. Значение меньше 2 отключает эту функцию". Таким образом, \adjustspacing=2включается расширение шрифта, эквивалентное microtype's expansion=true(которое в любом случае используется по умолчанию).
  2. \directlua{...stretch = 500, ...}: эквивалент lualatex для microtypeопции пакета stretch=500.
  3. \usepackage[expansion=false]{microtype}Передача expansion=falseгарантирует, что вы по-прежнему сможете использовать microtype для его других функций, в то время как расширение обрабатывается с помощью lua. Если вы не передадите expansion=false, ваш запуск lualatex завершится с ошибкой: "error: (расширение шрифта): шрифт был расширен с другим шагом расширения", и pdf не будет создан.

Связанный контент