计算机现代中的“fj”连字

计算机现代中的“fj”连字

最简单的说法是:我需要“fj”连字符。这绝对至关重要,尤其是当我用冰岛语写作时,它绝对不能被忽略,它甚至比 fi 更常见。

以下是我发现的:

\usepackage{Alegreya} 此字体确实包含 fj 连字符,但我非常喜欢 Computer Modern。我在 TeX.SX 上看到了不同的答案,发现有人制作了一个好看的答案,但必须使用 来调用\fj。我认为这真的很愚蠢。

有什么想法吗?IRC 上的一位热心人士发现了这一点: 计算机现代:extralig 包 但我无法让它工作,(我把它放入路径中,LaTeX 加载了包,但它什么也没做)

答案1

这确实需要在字体中解决,您可以尝试在 fontforge 或类似字体中编辑 latin modern 来添加连字,但最简单的方法是选择具有它的字体。

这是使用 Stix 2 文本字体和 lualatex(或者 xelatex 也可以)

在此处输入图片描述

\documentclass{article}

\usepackage{fontspec}
\setmainfont{STIX2Text-Regular.otf}

\begin{document}


\mbox{f}i\mbox{f}j

fifj

\end{document}

答案2

在使用 STIX2 之后,它看起来不错,但对我来说有点太重/太大胆了,我昨晚做了一个梦。这就是解决方案。通过使用黑客通过手动调整字距、创建fj连字和\extraligfj命令以及LuaLaTeX即时文本替换,我创建了一个无缝的解决方案。

\ProvidesPackage{extralig}
\usepackage{xcolor}
\usepackage{luacode}
\newcommand{\extraligfj}{fi\llap{\textcolor{white}{\rule[-0.05em]{0.252em}{0.55em}}}\kern-0.01em\llap{\j}\kern-0.05em\relax}
\begin{luacode}
local function vartosrcvar ( line )
return string.gsub(line, "fj" , "\\extraligfj{}")
end
luatexbase.add_to_callback( "process_input_buffer",  vartosrcvar, "var_to_srcvar")
\end{luacode}

将此代码保存为extralig.sty您的.tex文件目录并调用它将\usepackage{extralig}完美运行!

显然是因为 Lua 代码你必须使用 LuaLaTeX 进行编译

您不需要将其作为一个包来使用,只需将所有内容复制到文档的相应位置,它也可以正常工作,但将其作为一个单独的包会更简洁。

这是如何运作的?

  • 我定义了\extraligfj一个技巧,将iinfi替换为jfj通过一些手动字距调整实现完美的连字。(感谢TeX.SX 帖子!)
  • 使用 LuaLaTeX,我使用代码将所有实例替换为fj我们\extraligfj之前定义的。
  • 所有这些都整齐地放置在里面extralig.sty并准备作为一个包无缝地加载到我们的文档中。

TL;DR 将代码片段保存为extralig.sty并将其放在与文件相同的目录中.tex,然后使用 加载它\usepackage{extralig}使用 LuaLaTeX。这只保证适用于 Computer Modern,不适用于其他字体(它们需要手动调整字距)。这样做后,fj 将自动连字。

优点:

  • 我原本以为,由于被黑的字形的性质,换行符会出现一些非常奇怪的故障,但令我惊讶的是,即使在f和处断行,它也能完美地工作。j
  • 只需要编译一次,因为 LuaTeX 可以即时运行,这就是它完全无缝、没有减速的原因。

相关内容