如何在纯 TeX 中获取旧式连字符

如何在纯 TeX 中获取旧式连字符

我想用旧式连字符(如 st、ct、is、es 等)排版文本,但不使用命令序列,例如在 Plain TeX 中使用 street 或 construction 代替\st reetor constru\ct ion。并使用长 s。我需要做什么才能实现这一点?谢谢。

答案1

OpenType 字体功能hlig提供了这些所谓的历史连字。除了输入ſ,还可以使用该+medi功能将正常的s上下文替换为ſ,例如,输入streets将变成ſtreets。不幸的是,我没有提供 的字体+medi。也许其他拥有匹配字体的用户可以提供一个例子。

xetex或排版luatex

\ifdefined\directlua
  \input luaotfload.sty
\fi
\font\1="Linux Libertine O:+hlig"
\1 ſtreet construction
\bye

在此处输入图片描述

以下是随 TeXlive 2015 分发的字体列表,它们具有以下hlig特点:

Accanthis ADF Std No3
Baskervaldx
EB Garamond 12
fbb
FreeSans
FreeSerif
Gillius ADF
Gillius ADF Cond
Gillius ADF No2
Gillius ADF No2 Cond
Linux Biolinum O
Linux Libertine Display O
Linux Libertine O
TeXGyrePagellaX
Universalis ADF Std
Universalis ADF Std cond

对于技术爱好者来说,这里是bash上述代码片段的命令行(已改进,感谢 Clea F. Rees):

IFS=$'\n';
for i in `fc-list | cut -d ':' -f 1 | grep /usr/local/texlive/2015/texmf-dist/.*otf`; do
    if [ -n "`otfinfo -f "$i" | grep hlig`" ]; then
        otfinfo -a "$i";
    fi;
done | sort | uniq

答案2

一些随 TeX Live 安装的“传统”字体提供了部分或全部连字和长 s。由于没有“标准”界面,因此如何访问这些内容取决于字体的配置方式。

虽然以下示例使用 LaTeX,但这只是因为这是我最熟悉的。连字等都是在字体级别定义的,不依赖于 LaTeX 包。我相信您只需要在 TeX 级别使用正确的字体即可。(但请参见下文有关编码的内容。)

罗曼德 ADF‘alternative’ 自动提供附加连字符,并且可以使用 访问长 s s*

Romande ADF 替代产品

\documentclass{article}
\usepackage{romande}
\begin{document}
\altstyle
As*s*ociated facts stray specious*ly.
\end{document}

文丘里管 ADF 旧款'alternative' 提供了一些补充,使用 . 访问长 s s+s*用于访问常规s. 的替代版本)

文丘里管 ADF 旧替代产品

\documentclass{article}
\usepackage{venturisold}
\begin{document}
\altstyle
As+s+ociated* facts stray s*pecious+ly.
\end{document}

您还可以使用“花饰”样式来制作精美的东西。例如,Venturis ADF 本身就包含单词结尾花饰。

戴·罗曼不是 TeX Live 的一部分,但可以使用 安装getnonfreefonts-sys,它可以自动安装其他字体。

在这种情况下,相关字体系列默认使用长 s,并s:需要访问常规 s 以用于单词末尾等。该系列还提供额外的连字符。

日罗马风格

\documentclass{article}
\renewcommand\rmdefault{dayroms}
\usepackage[T1]{fontenc}
\begin{document}
Associated facts: stray speciously.
\end{document}

大多数字体都使用了OT1编码以外的其他东西,因为编码根本无法提供足够的空间来容纳花哨的连字符或替代字符。我不确定这在普通情况下是如何工作的,但能够使用具有 256 个插槽而不是 128 个插槽的字体编码对于这一点至关重要,因为否则你无法牺牲太多来OT1为这种事情腾出空间。

还要注意的是,这些东西都是黑客手段。Day Roman S 不使用标准T1编码。我还没看过。但它不可能是标准的,因为它必须使用一个连字符槽s:,而这当然不是T1编码中的标准连字符。

这意味着有些字符排版会产生意想不到的结果。一些不相关的字符,将其包含在您的文档中会意外地产生ct字符或长 s 或其他什么。

因此,阅读文档非常重要,以检查您不需要那些已经用于容纳花哨的、非标准附加内容的字符,因为您不会收到有关意外输出的任何警告。

如果字体T1使用T1因此,即使一个额外的字符也意味着一些插槽已被劫持。

答案3

感谢大家的精彩回答,我学到了很多。我找到了一款很棒的字体,在我看来,它非常适合旧书,它的名字叫我爱 DW Pica PRO可以在这里找到:Igino Marini 网站以及其他出色的字体。这款字体具有历史性形式和连字,并带有+dlig,+hlig,+histopentype 字体功能,可与 XeTeX 完美配合。

梅威瑟:

\font\1="IM FELL DW Pica PRO:mapping=tex-text,+dlig,+hlig,+hist" at 12pt
\1 Associated facts stray speciously.

1234567890
\bye

生成:

在此处输入图片描述

因此,代码中无需区分 s 和 long s。再次感谢。

答案4

kpfonts 简单地提供了这个选项:

\documentclass{article}
\usepackage[veryoldstyle]{kpfonts}
\begin{document}
Associated facts: stray speciously.
\end{document}

在此处输入图片描述

相关内容