升高/降低字体的单个字符(连字符)

升高/降低字体的单个字符(连字符)

我使用的字体 (Merriweather Sans) 将连字符有点太高了

在此处输入图片描述

有什么方法可以修复整个文档的问题,
而且不影响其他字体?

测试文档:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{merriweather}
\begin{document}

\sf
h-y-p-h-e-n

% I want the code above to look like:
h\raisebox{-.15ex}{-}y\raisebox{-.15ex}{-}p\raisebox{-.15ex}{-}h\raisebox{-.15ex}{-}e\raisebox{-.15ex}{-}n

\end{document}


2014 年 3 月 31 日更新:Merriweather 字体已更新,添加了小写连字符。

答案1

正如 egreg 所说,这不能以通用方式完成。在这个答案中,我没有 merriweather 字体,所以我只是在标准 CM 字体上演示了该技术(并夸大了效果)。

可以通过激活来局部实现您的要求-;但是,这会破坏很多东西,因为这意味着负号已被重新定义。因此,我在这里提出的折衷方案是宏对\newhyphenON\newhyphenOFF。这样,您可以\newhyphenON在仅使用移位连字符输入文本时将其打开,并在几乎所有其他情况下将其关闭。

在本 MWE 中,我将展示如何在\nehyphenOFF调用 has 时,将减号恢复为\raisebox。但在\nehyphenON调用 时,移位的连字符仍保留在原处。

\documentclass{article}
\usepackage[T1]{fontenc}
%\usepackage{merriweather}
\sffamily
\begin{document}
\let\svhyphen-
\def\newhyphen{\raisebox{-.5ex}{\svhyphen}}
\catcode`-\active
\def\newhyphenON{\catcode`-\active\def-{\newhyphen}}
\def\newhyphenOFF{\catcode`-=12\let-\svhyphen}
\catcode`-=12

\newhyphenON
h-y-p-h-e-n

\newhyphenOFF
h-y-p-h-e-n X\raisebox{-1ex}{X}

\newhyphenON
h-y-p-h-e-n

\newhyphenOFF
h-y-p-h-e-n

\end{document}

在此处输入图片描述

相关内容