我怎样才能获得字母间距?

我怎样才能获得字母间距?

字母间距是一种特殊的强调方式,通常与黑体字体结合使用。字母间距的字符间距为 0.125 em,但保留了一些连字符。例如:»B ä ck er ſt ra ß e« 如何使用 (La)TeX 获取字母间距?

答案1

使用microtype软件包和 pdfTeX,您只需将要强调的文本括在命令中即可。您可以通过添加到软件包选项来\textls全局调整字母间距 (Sperrsatz) 的数量,或者也可以通过将其作为命令的可选参数提供来局部调整字母间距 (Sperrsatz)(以 1/1000 em 的倍数为单位)。letterspace=125\textls

\documentclass{article}

\usepackage{yfonts}
\usepackage[letterspace=125]{microtype}

\begin{document}
\frakfamily
\textls{B\"ackerstra\ss e}
\textls[50]{B\"ackerstra\ss e}
\end{document}

microtype如果您对边距调整等其他功能不感兴趣,那么您可以letterspace使用相同的选项加载该包。

答案2

这一页UniFraktur 项目的详细介绍了字母间距并展示了如何使用 XeLaTeX。

答案3

您可以使用soulutf8包及其\sodef命令来定义新命令来获取所需的字母间距;为了维护可以\mbox在新定义的命令的参数中使用的连字符:

\documentclass{article} 
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{soulutf8}

\sodef\Sp{}{.125em}{1em plus1em}{2em plus.1em minus.1em}


\begin{document}
\Sp{Bäcker\mbox{ßt}raße}
\end{document}

答案4

LuaLaTeX 解决方案。

\documentclass{article}
\usepackage{fontspec}
\newfontfamily\letterspaced{Latin Modern Roman}[LetterSpace=50]
\begin{document}
Hello world

{\letterspaced Hello world}

Hello world
\end{document}

输出:

输出


还有一种替代解决方案,不需要定义字体系列,但它慢得多

\documentclass{article}
\usepackage{fontspec}
\begin{document}
\fontspec{Latin Modern Roman}  % set the default font https://tex.stackexchange.com/q/643918/250119

Hello world fi

{
\addfontfeature{LetterSpace=50}
Hello world fi
}

{
\addfontfeature{LetterSpace=50,Ligatures={NoCommon, NoDiscretionary}}  % https://tex.stackexchange.com/a/103242/250119
Hello world fi
}

Hello world fi

\end{document}

输出:

输出

  • 第一行是普通文本,
  • 第二行是 LetterSpace,
  • 第三行是禁用连字符的 LetterSpace,
  • 第四行恢复正常文本。

慢多少?

我比较了两个文档,发现它们有以下变化:

\csname prg_replicate:nn\endcsname{200}{
{\letterspaced Hello world}

}

相对

\csname prg_replicate:nn\endcsname{200}{
{\addfontfeature{LetterSpace=50} Hello world}

}

所用时间分别为 0 分 4.137 秒和 0 分 1.254 秒。因此,每次使用耗时为 14 毫秒,或者:每使用 70 次\addfontfeature,编译时间就会减慢一秒。

相关内容