Baskervaldx と BibLaTeX によるグリフ衝突の回避

Baskervaldx と BibLaTeX によるグリフ衝突の回避

開き括弧の直後に「j」のグリフが醜い「衝突」を起こしていることがわかりました。これは「J」を「通常通り」タイプセットすると起こりませんが、BibLaTeX でタイプセットすると起こり、「j」の場合よりずっとひどい状態になります。私の言っていることを理解するには、以下の MWE をコンパイルしてください。

これらの欠陥(私にとってはそうなのです)を体系的に、または「プログラム的に」修正するにはどうすればよいでしょうか?

\documentclass{memoir}

\usepackage{filecontents}
\usepackage[style=authoryear]{biblatex}
\usepackage{Baskervaldx}


\begin{filecontents*}{biblio.bib}
  @Book{John,
    author = { John },
    title = {A Title},
  }
\end{filecontents*}

\addbibresource{biblio.bib}

\begin{document}
(j) (J) against \autocite{John}
\end{document}

答え1

残念ながら、この原因はbiblatex動作と TeX がカーニングを適用する方法に深く根ざしているため、この問題や同様の問題を適切に解決する方法がわかりません。

としてエグレ コメントで指摘しているフォントで定義されている(との間のカーニングはここでは適用されません。J

カーニングと合字は、\writes(biblatex時々使用する必要がある)によって抑制されるだけでなく、非常に単純なグループ化や割り当てによっても抑制されます。

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{Baskervaldx}

\begin{document}
\makeatletter
f\immediate\write\@auxout{}i\ (\immediate\write\@auxout{}J\ 
\makeatother
%
f\def\foo{bar}i\ (\def\foo{bar}J\ 
%
f\begingroup i\endgroup\ (\begingroup J\endgroup\ 
%
f\bgroup i\egroup\ (\bgroup J\egroup\ 
%
fi\ (J
\end{document}

ここに画像の説明を入力してください

これはegregのバグレポートでも議論されています。https://github.com/plk/biblatex/issues/598

biblatex完全な書き直しをしない限り、カーニングに不可欠なインフラストラクチャをすべて削除しながら、その機能性を維持する方法はないと思います。

関連情報