當字體大小更改時,微類型擴充將被停用! (lualatex)

當字體大小更改時,微類型擴充將被停用! (lualatex)

當字體大小從預設字體大小更改時,微型類型的擴展似乎被禁用。這裡有兩段程式碼,在第一個程式碼中擴充確實起作用,在第二個程式碼中則不起作用(就好像微型類型從未給出拉伸和收縮選項一樣)。

作品:

% 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 僅針對一組有限的字體大小設定字體擴充。如果將大小添加到清單中,它就可以工作(重新定義基本文字可能不是最好的方法):

\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啟用字體擴展,相當於microtype's expansion=true(無論如何都是預設的)。
  2. \directlua{...stretch = 500, ...}: lualatex 相當於microtype包選項stretch=500
  3. \usepackage[expansion=false]{microtype}透過確保expansion=false您仍然可以使用微類型來實現其其他功能,而擴充功能則使用 lua 進行處理。如果你不通過expansion=false,你的 lualatex 運行將失敗並出現錯誤:“錯誤:(字體擴展):字體已使用不同的擴展步驟擴展”,並且不會產生 pdf。

相關內容