Linux Libertine 斜体间距

Linux Libertine 斜体间距

我相信是相关的,但我的问题不是数学特定的。问题是:

MWE 的输出

%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode

\documentclass[12pt]{article}

% PACKAGES

\usepackage{geometry}
\usepackage{fontspec}
\usepackage{xltxtra}
\defaultfontfeatures{Mapping=tex-text,Numbers=OldStyle}
\setromanfont[Mapping=tex-text]{Linux Libertine O}
\setsansfont[Scale=MatchLowercase,Mapping=tex-text]{Linux Biolinum O}
\setmonofont[Scale=MatchLowercase]{Linux Libertine Mono O}

\begin{document} % ==============================================================

\newfontfamily{\HT}{Hoefler Text}
\newfontfamily{\BV}{Baskerville}

When using  and transitioning from roman to \textit{italics} and back, \LaTeX\ appears to preserve character spacing at the baseline.

{\Huge It is more \textit{noticeable} in larger font sizes.}

{\Large\bfseries The problem persists at \textit{other} weights.}

\textsf{...also with Linux Biolinum, the {\itshape associated} sans-serif font.} {\tiny ← That one is \textit{really} noticeable!}

{\HT This does not appear to be a \textit{problem} in other typefaces.}

{\BV Where \LaTeX\ evidently \textit{preserves} character spacing at mid-ex-height or so.}

Some graphic (if contrived) examples:

Linux Libertine: l\textit{l}l

{\HT Hoefler Text: l\textit{l}l}

{\BV Baskerville: l\textit{l}l}

\end{document} 

答案1

什么时候\textit{l}l找到时,LaTeX 添加斜体修正这应该可以补偿从倾斜字体到直立字体的变化。

让我们考虑以下输入:

\documentclass{article}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\newfontfamily{\HT}{Hoefler Text}
\newfontfamily{\BV}{Baskerville}


\begin{document}

\showboxbreadth=1000 \showboxdepth=1000 \tracingonline=1

\sbox0{\textit{l}l}\showbox0 \box0

\HT
\sbox0{\textit{l}l}\showbox0 \box0

\BV
\sbox0{\textit{l}l}\showbox0 \box0

\end{document}

第一行只是打开一些诊断消息。以下是控制台上输出的相关部分:

> \box0=
\hbox(6.98+0.09999)x5.75
.\EU1/LinuxLibertineO(0)/m/it/10 l
.\kern 0.45
.\EU1/LinuxLibertineO(0)/m/n/10 l

! OK.
l.13 \setbox0=\hbox{\textit{l}l}\showbox0 
                                          \box0
? 
> \box0=
\hbox(7.255+0.21999)x5.93498
.\EU1/HoeflerText(0)/m/it/10 l
.\kern 0.665
.\EU1/HoeflerText(0)/m/n/10 l

! OK.
l.16 \setbox0=\hbox{\textit{l}l}\showbox0 
                                          \box0
? 
> \box0=
\hbox(6.71387+0.1367)x5.22949
.\EU1/Baskerville(0)/m/it/10 l
.\kern 0.43457
.\EU1/Baskerville(0)/m/n/10 l

! OK.
l.19 \setbox0=\hbox{\textit{l}l}\showbox0 
                                          \box0
? 

我们看到,对于 Linux Libertine,斜体校正为 0.45pt,对于 Hoefler Text 为 0.665pt,对于 Baskerville 为 0.43457pt(请注意,斜体校正取决于字符,因此,如果使用“f”而不是“l”,则情况会有所不同)。

使用 LuaLaTeX 可以获得不同的数据:Linux Libertine 的斜体校正为 0.65pt,Hoefler Text 的斜体校正为 0.765pt,Baskerville 的斜体校正为 0.53223pt。

所以两个引擎对参数的评估有些不同,看来 XeTeX 不太慷慨。传统的 TeX 字体为每个字符定义了一个特定的参数,而 XeTeX 和 LuaTeX 必须从其他数据中计算出来。

不涉及“基线间距”或“中间高度间距”;如果计算的斜体校正太小,倾斜的字符将会碰到下一个字符。

相关内容