“Fj” Ligature in Computer Modern

Oct 03 2020

A maneira mais simples de colocar isso: eu preciso da ligadura "fj". É absolutamente crucial, especialmente porque estou escrevendo em islandês, simplesmente não pode faltar, apenas se não mais comum como fi.

Aqui está o que eu encontrei:

\usepackage{Alegreya}Essa fonte inclui a ligadura fj, mas eu realmente gosto de Computer Modern. Eu vi uma resposta diferente no TeX.SX e encontrei alguém que era bem parecido, mas tinha que ser invocado com \fj. Acho que seria muito bobo.

Alguma ideia? Um colega útil no IRC descobriu isso: Computer Modern: extralig package mas não fui capaz de fazê-lo funcionar (eu coloquei no path e o LaTeX carregou o pacote muito bem, mas não fez absolutamente nada)

Respostas

6 DavidCarlisle Oct 03 2020 at 23:40

Isso realmente precisa ser tratado na fonte, você pode tentar editar latin modern in fontforge ou similar para adicionar a ligadura, mas o mais simples é escolher uma fonte que a tenha.

Isso está usando a fonte de texto Stix 2 com lualatex (ou xelatex também funcionaria)

\documentclass{article}

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

\begin{document}


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

fifj

\end{document}
user224041 Oct 20 2020 at 01:43

depois de usar o STIX2 que parece bom, mas um pouco pesado / ousado para o meu gosto, tive um sonho ontem à noite. Foi a solução. Usando um hack com kerning manual e criação da fjligadura e \extraligfjcomando e com LuaLaTeXsubstituição de texto instantânea, criei uma solução perfeita.

\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}

Salvar este código como extralig.styem seu .texdiretório de arquivos e chamá-lo com \usepackage{extralig}ele funcionará perfeitamente!

Obviamente, por causa do código Lua, você deve compilá-lo com LuaLaTeX

Você não é obrigado a usar isso como um pacote, simplesmente copie tudo em seu documento nos locais correspondentes e funcionará bem também, mas é muito mais limpo tê-lo como um pacote separado.

Como é que isso funciona?

  • Eu defino \extraligfj, um hack onde o iin fié substituído por um j, fazendo uma fjligadura perfeita com algum kerning manual. (Graças a esta postagem TeX.SX!)
  • Com LuaLaTeX, eu uso código que substitui todas as instâncias de fjcom \extraligfj, que definimos antes.
  • Tudo isso é colocado ordenadamente dentro extralig.stye pronto para ser carregado perfeitamente em nosso documento como um pacote.

TL; DR Salve o trecho de código como extralig.stye coloque-o no mesmo diretório de seu .texarquivo e carregue-o com \usepackage{extralig}. use LuaLaTeX . Isso só funciona com o Computer Modern, sem outras fontes (elas precisarão de ajuste manual de kerning). Fazendo isso, fj será ligado automaticamente.

Prós:

  • Eu esperava que houvesse algumas falhas realmente estranhas com quebras de linha devido à natureza do glifo hackeado, mas para minha surpresa, funciona perfeitamente mesmo quando quebrado em linhas em fej
  • Só precisa compilar uma vez porque LuaTeX o executa dinamicamente, e é por isso que é totalmente perfeito, sem lentidão.