如果字体系列没有粗体字体,那么我认为改用小型大写字母是合理的。但是当我重新定义\bfseries
为时\scshape
,这些小型大写字母中没有字距。我该如何设置?
\documentclass{article}
\usepackage[tracking = true, letterspace = 250]{microtype}
\usepackage{imfellEnglish}
\DeclareMicrotypeSet*[tracking]{imfellenglishsc}{font = */IMFELLEnglishSC-TLF/*/*/*}
\renewcommand*{\bfseries}{\scshape}
\begin{document}
\section{The first section}
\textsc{Abcde}
\end{document}
答案1
该imfellEnglish
软件包犯了一个根本性的错误:为了使用一组不同的小型大写字体,它将字体系列重新定义\scshape
为更改字体系列的命令;而应该在文件级别解决该问题.fd
。
\documentclass{article}
\usepackage[tracking = true, letterspace = 250]{microtype}
\usepackage{letltxmacro}
% save the meaning of \scshape
\LetLtxMacro{\latexscshape}{\scshape}
\usepackage{imfellEnglish}
% provide good form of the family declaration
\makeatletter
\expandafter\ifx\csname IMFELLEnglish@scale\endcsname\relax
\let\IMFELLEnglish@@scale\@empty
\else
\edef\IMFELLEnglish@@scale{s*[\csname IMFELLEnglish@scale\endcsname]}%
\fi
\makeatother
\DeclareFontFamily{OT1}{IMFELLEnglish-TLF}{}
\DeclareFontShape{OT1}{IMFELLEnglish-TLF}{m}{n}{
<-> \IMFELLEnglish@@scale IM_FELL_English_Roman-tlf-ot1
}{}
\DeclareFontShape{OT1}{IMFELLEnglish-TLF}{m}{it}{
<-> \IMFELLEnglish@@scale IM_FELL_English_Italic-tlf-ot1
}{}
\DeclareFontShape{OT1}{IMFELLEnglish-TLF}{m}{sl}{
<-> ssub * IMFELLEnglish-TLF/m/it
}{}
\DeclareFontShape{OT1}{IMFELLEnglish-TLF}{m}{sc}{
<-> \IMFELLEnglish@@scale IM_FELL_English_SC-tlf-ot1
}{}
% restore the meaning of \scshape
\LetLtxMacro{\scshape}{\latexscshape}
% microtype settings
\DeclareMicrotypeSet*[tracking]{imfellenglishsc}{
family = IMFELLEnglish-TLF,
shape = sc,
}
% no bold face
\renewcommand{\bfseries}{\scshape}
\begin{document}
{\Large\scshape Hello world!}
\textsc{Hello world!}
\section{The first section fi ff}
Is this tracked as well? fi ff
\end{document}
更新(2015 年 10 月 6 日)
该包imfellEnglish
已更新,现在代码更简单
\documentclass{article}
\usepackage[tracking = true, letterspace = 250]{microtype}
\usepackage{imfellEnglish}
\DeclareMicrotypeSet*[tracking]{imfellenglishsc}{
family = IMFELLEnglish-TLF,
shape = sc,
}
\renewcommand{\bfseries}{\scshape}
\begin{document}
{\Large\scshape Hello world!}
\textsc{Hello world!}
\section{The first section fi ff}
Is this tracked as well? fi ff
\end{document}
将返回与上面相同的输出。
答案2
随着新的修复IM Fell English
(看egreg 的回答),则不再需要使用\DeclareMicrotypeSet
,并且会自动将跟踪应用于\scshape
:
\documentclass{article}
\usepackage[tracking = true, letterspace = 250]{microtype}
\usepackage{imfellEnglish}
\renewcommand*{\bfseries}{\scshape}
\begin{document}
\section{The first section}
\textsc{A ff fi} A ff fi
\end{document}