当字体大小改变时,微类型扩展会被禁用!(lualatex)

当字体大小改变时,微类型扩展会被禁用!(lualatex)

当字体大小从默认字体大小更改时,microtype 的扩展似乎被禁用。这里有两段代码,第一段扩展可以工作,第二段则不行(好像 microtype 从未被赋予过拉伸和收缩选项)。

作品:

% 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在加载微类型时作为包选项传递:

\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,相当于(默认情况下)。microtypeexpansion=true
  2. \directlua{...stretch = 500, ...}:lualatex 相当于microtype的包选项stretch=500
  3. \usepackage[expansion=false]{microtype}传递expansion=false可确保您仍可使用 microtype 的其他功能,同时使用 lua 处理扩展。如果您未传递expansion=false,lualatex 运行将失败并出现错误:“错误:(字体扩展):字体已使用不同的扩展步骤进行扩展”,并且不会生成任何 pdf。

相关内容