我希望通过编程避免出现在我看来是“g”和“f”的斜体字形与软件包冲突的情况newtxtext
。在文档中在它们之间插入一个字距值是行不通的,因为这会使源文件的内容依赖于字体。
如果您认为我对碰撞的发生有误,请随时纠正我。碰撞虽然轻微,但确实存在,而且我认为它不能算作是捆绑。
关于如何进行有什么建议吗?
遵循 MWE(尽可能简单):
\documentclass{memoir}
\usepackage{newtxtext}
\begin{document}
\emph{meaningful}
\end{document}
答案1
meaning
这里有一个解决方案,它保留了 LaTeX 在和之间插入换行符(和连字符)的能力,ful
如果 LaTeX 认为有必要的话。
解决方案是插入宽度为 的字距0.035em
。(如果这不能产生足够的字形分离以满足您的需要,请随意将字距增加到0.04em
。)
代码包含一个测试,测试该newtxtext
包是否已加载;如果是不是在这种情况下,宏\meaningful
不会插入字距,即,它仅输出字符串“meaningful”。
\documentclass{memoir}
\usepackage{newtxtext}
\newcommand\gfkern{\discretionary{g-}{f}{g\kern0.035emf}}
\makeatletter
\AtBeginDocument{\@ifpackageloaded{newtxtext}{%
\newcommand{\meaningful}{meanin\gfkern ul}}{%
\newcommand{\meaningful}{meaningful}}}
\makeatother
\begin{document}
\emph{meaningful} -- unadjusted
\emph{\meaningful} -- adjusted
\emph{meanin\discretionary{g-}{f}{g\kern0.035emf}ul} -- brute force
\end{document}
附录,旨在解决一些与斜体g
和f
字形之间明显的“纠缠”或“碰撞”有关的更广泛的问题。
首先,让我们研究一下需要多少额外的字距调整才能避免四种不同字体的字形纠缠:Times Roman(该newtxtext
软件包使用的文本字体基于 Times Roman 的克隆)以及 Times New Roman、EB Garamond 和 Latin Modern Roman。在下表中,字体大小已调整为所有四种字体的 x 大小相同。
显而易见,Times New Roman 和 EB Garamond 的斜体版本需要比 Times Roman 更多的字距调整(分别为0.08em
和),以防止 和字形接触/碰撞/纠缠。另一方面,Latin Modern 根本不需要调整字距。此外,请注意,引入和 尤其是额外的字距会在“含义”和“内容”之间造成视觉空白——这可不好!0.13em
0.035em
g
f
0.08em
0.13em
我的简单建议是,在并排放置和g
字形时,要学会欣赏字体设计师的工作f
,因此不要费心进行任何字距调整。事实上g
,和字形的纠缠f
产生了复合字形或连字形。现在,连字应该如果它们的存在可能会误导读者,则应将其隐藏。(当然,这是该selnolig
软件包工作的基础。)但是,对于“meaningful”这个词,斜体版本中 gf“连字符”的存在绝对不会让读者感到困惑、阅读速度减慢或带来其他不便。因此,隐藏这个事实上的连字符没有任何(印刷)目的。
最后但同样重要的一点是,这是上表的代码。
\documentclass{article}
\usepackage{fontspec,booktabs}
\newcommand\gfkern[1]{\discretionary{g-}{f}{g\kern#1emf}}
\newcommand{\ingful}[1][0.035]{in\gfkern{#1}ul}
\newlength\mylena
\newlength\mylenb
\setmainfont{Times}[ItalicFont=Times Italic]
\settowidth\mylena{Times New Roman}
\settowidth\mylenb{\textit{meaningful}\ \ \ }
\begin{document}
\noindent
\begin{tabular}{@{}p{\mylena}p{\mylenb}p{\mylenb}l@{}}
Font & Unadjusted & Adjusted & Required kern \\
\midrule
Times Roman &\textit{meaningful} & \textit{mean\ingful} & 0.035em \\
\end{tabular}
\setmainfont{Times New Roman}[ItalicFont=Times New Roman Italic,Scale=MatchLowercase]
\noindent
\begin{tabular}{@{}p{\mylena}p{\mylenb}p{\mylenb}l@{}}
Times New Roman &\textit{meaningful} & \textit{mean\ingful[0.08]} & 0.08em \\
\end{tabular}
\setmainfont{EB Garamond}[Numbers=Lining,Scale=MatchLowercase]
\noindent
\begin{tabular}{@{}p{\mylena}p{\mylenb}p{\mylenb}l@{}}
EB Garamond & \textit{meaningful} & \textit{mean\ingful[0.13]} & 0.13em\\
\end{tabular}
\setmainfont{Latin Modern Roman}[Scale=MatchLowercase]
\noindent
\begin{tabular}{@{}p{\mylena}p{\mylenb}p{\mylenb}l@{}}
Latin Modern Roman & \textit{meaningful} & \textit{mean\ingful[0]} & 0.00em\\
\end{tabular}
\end{document}