Tendo problemas para ativar ligaduras com a fonte Mercury Text OpenType da HF&J

Tendo problemas para ativar ligaduras com a fonte Mercury Text OpenType da HF&J

Tenho certezaesta fontesuporta ligaduras, mas não consigo fazer com que apareçam.

Exemplo com Roboto para comparação:

\documentclass[
  11pt,
  a4paper
]{scrartcl}

\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}

\begin{document}

\setmainfont[
  ExternalLocation,
  Extension=.ttf,
  UprightFont=*-Regular,
  ItalicFont=*-Italic,
  BoldFont=*-Bold,
  BoldItalicFont=*-BoldItalic,
  Ligatures=Common
]{Roboto}

roboto fight flight has ligatures

\setmainfont[
  ExternalLocation,
  Extension=.otf,
  Ligatures=Common
]{Mercury-TextG4Roman}

mercury fight flight no ligatures

\end{document}

eu

A lista de ligaduras no site da HF&J lista fi:

lista de ligaduras

E o charmap no Windows mostra esse caractere nessa fonte:

mapa de caracteres

Atualizar:

Saída de otfinfo:

otfinfo

Atualização 2:

Alterado para LuaLatex, adicionado um arquivo de recursos:

\documentclass[
  11pt,
  a4paper
]{scrartcl}

\usepackage{filecontents}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures={Common,Rare,Historic}}

\begin{filecontents*}{mercury.fea}
languagesystem DFLT dflt;
languagesystem latn dflt;
# Ligatures
feature liga {
    sub \f \i by \fi;
    sub \f \l by \fl;
} liga;
\end{filecontents*}

\begin{document}

\setmainfont[
  ExternalLocation,
  Extension=.ttf,
  UprightFont=*-Regular,
  ItalicFont=*-Italic,
  BoldFont=*-Bold,
  BoldItalicFont=*-BoldItalic,
  Ligatures=Common
]{Roboto}

roboto fight flight has ligatures

\setmainfont[
  FeatureFile=mercury.fea,
  ExternalLocation,
  Extension=.otf,
  Ligatures=Common
]{Mercury-TextG4Roman}

mercury fight flight no ligatures

\end{document}

E as ligaduras mostram:

insira a descrição da imagem aqui

Responder1

Com a ajuda de @cfr, você estabeleceu que:

  • A fonte contém glifos de ligadura.

  • fontspecnão pode fazer uso das informações da ligadura AAT, mesmo que estejam disponíveis.

  • A fonte omite os dados do recurso OpenType necessários para suporte automático de ligadura.

Então o que você pode fazer? Você pode adicionar os dados de mapeamento ausentes à fonte ou criar um arquivo de recurso OpenType externo (suportado apenas pelo LuaTeX) e dizer ao fontspec para usá-lo. Nenhum dos dois é difícil.

Adicionando tabelas Opentype ligausando FontForge

Observação:Consulte primeiro os termos de licenciamento da sua fonte, etc.

  1. Abra o arquivo de fonte no fontforge.
  2. Abra a Element->Font Infocaixa de diálogo no menu: Caixa de diálogo Informações da fonte As entradas listadas correspondem a vários "recursos" OpenType, o que você deseja é denominado "Ligaduras padrão" na lista e denominado liga recurso nas especificações e na saída de otfinfoe você já sabe que está faltando em sua fonte, então precisamos criar a tabela primeiro e, em seguida, preencha-a com os dados ausentes.
  3. Clique no botão "Adicionar pesquisa" e selecione o tipo "ligaduras padrão".
  4. Clique no botão "Adicionar subtabela" para criar a tabela de mapeamento real. clique duas vezes na nova entrada da subtabela para abrir a visualização do editor.
  5. Agora você deve ver a caixa de diálogo de edição onde você configura mapeamentos entre sequências de caracteres e glifos de ligadura: Editor de subtabela de ligadura Use o botão "preencher" para que o FontForge deduza as ligaduras suportadas pela fonte e crie entradas automaticamente para você. Dependendo da fonte, você também pode precisar editar/adicionar entradas manualmente. A coluna da esquerda contém o nome do glifo da ligadura, enquanto a coluna da direita contém os caracteres individuais, separados por espaços.
  6. Quando terminar, clique Okduas vezes para voltar à janela principal novamente.
  7. Salve o arquivo de fonte atualizado com File->Generate Fonts, certificando-se de que o tipo dropbox esteja definido como OpenType(CFF). Esteja ciente de que a fonte gerada carrega o mesmo nome de fonte interno que o original (embora seja fácil de alterar), então você deve substituir o original (lembre-se de fazer backup) para evitar carregar a versão antiga, ou você deve especificar o caminho do arquivo da fonte explicitamente ao carregá-lo com fontspec.
  8. Você Terminou.

Adicionando tabelas Opentype ligausando um arquivo de recurso OpenType (somente LuaTeX)

O fontspecmanual tem umseçãoem arquivos de recursos (com um link para oespecificação) e inclui um exemplo que mostra exatamente o que você procura, por exemplo, como definir mapeamentos de ligadura. Portanto, você só precisa criar o arquivo de recurso e usar a FeatureFileopção de informar fontspecpara carregá-lo:

Arquivo:outra_liga.tex

\documentclass{article}
\usepackage{filecontents}
\usepackage{fontspec}

% Alternatively, place this in a `mercury.fea` file in the same directory
\begin{filecontents*}{mercury.fea}
languagesystem DFLT dflt;
languagesystem latn dflt;
# Ligatures
feature liga {
    sub \f \i by \fi;
    sub \f \l by \fl;
} liga;
\end{filecontents*}
    
\setmainfont[
FeatureFile=mercury.fea,
%Ligatures={Common} % on by default
]{Mercury-TextG4Roman}

\begin{document}
    fi \symbol{"FB01} 
    
    fl \symbol{"FB02} 
\end{document}

Este exemplo pressupõe que os glifos de ligadura existem em seu local padrão Unicode e os inclui diretamente pelo número do glifo para fins de comparação. YMMV.

Editar:Cuidado para fontspecnão parar com um erro se houver problemas com a FeatureFileopção. Digitar incorretamente um caminho, erros de sintaxe no arquivo ou usar um mecanismo diferente LuaTeXfará com que ele ignore silenciosamente o arquivo de recursos.

informação relacionada