私は確信していますこのフォント合字をサポートしていますが、表示できません。
比較のためにRobotoの例を示します。
\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}
HF&J のサイトにある合字のリストは次のとおりですfi
。
Windows の charmap では、その文字をそのフォントで表示します。
アップデート:
出力otfinfo
:
アップデート2:
LuaLatex に変更し、機能ファイルを追加しました:
\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}
合字は次のことを示します:
答え1
@cfr の親切な助けにより、次のことが証明されました:
フォントには合字グリフが含まれています。
fontspec
AAT 合字情報が利用可能であっても、それを利用することはできません。このフォントでは、自動合字サポートに必要な OpenType 機能データが省略されています。
では、どうすればいいでしょうか? 不足しているマッピング データをフォントに追加するか、外部の OpenType 機能ファイル (LuaTeX でのみサポート) を作成して、fontspec にそれを使用するように指示します。どちらも難しくはありません。
liga
FontForge を使用してOpentype テーブルを追加する
注記:まずフォントのライセンス条件などを確認してください。
- FontForge でフォント ファイルを開きます。
Element->Font Info
メニューからダイアログ を開きます: リストされているエントリは、さまざまな OpenType の「機能」に対応しています。必要な機能は、リスト内で「標準合字」という名前で、liga
仕様と出力では機能と呼ばれていますotfinfo
が、フォントに存在しないことは既にわかっているため、最初にテーブルを作成し、次に不足しているデータをテーブルに入力する必要があります。- 「ルックアップの追加」ボタンを押し、タイプとして「標準合字」を選択します。
- 実際のマッピング テーブルを作成するには、[サブテーブルの追加] ボタンをクリックします。新しいサブテーブル エントリをダブルクリックして、エディター ビューを開きます。
- 文字シーケンスと合字グリフ間のマッピングを設定する edito ダイアログが表示されます。 「populate」ボタンを使用すると、FontForge はフォントでサポートされている合字を推測し、エントリを自動的に作成します。フォントによっては、エントリを手動で編集/追加する必要がある場合もあります。左側の列には合字のグリフ名が含まれ、右側の列にはスペースで区切られた個々の文字が含まれます。
- 完了したら、
Ok
2 回クリックしてメイン ウィンドウに戻ります。 - 更新されたフォント ファイルを を使用して保存し
File->Generate Fonts
、タイプ dropbox が に設定されていることを確認しますOpenType(CFF)
。生成されたフォントは元のフォントと同じ内部フォント名を持つことに注意してください (ただし、簡単に変更できます)。そのため、古いバージョンがロードされないように元のフォントを上書きするか (バックアップを忘れずに)、 を使用してロードするときにフォント ファイルのパスを明示的に指定する必要がありますfontspec
。 - 完了です。
liga
OpenType 機能ファイルを使用してOpenType テーブルを追加する(LuaTeX のみ)
マニュアルfontspec
にはセクション機能ファイル(仕様) には、合字マッピングの定義方法など、まさにあなたが求めているものを示す例が含まれています。したがって、機能ファイルを作成し、それを読み込むようFeatureFile
に指示するオプションを使用するだけですfontspec
。
ファイル:別のリーグ.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}
この例では、合字グリフが Unicode 標準の場所に存在することを前提とし、比較のためにグリフ番号で直接含めています。結果は異なる場合があります。
編集:fontspec
オプションに問題がある場合、エラーで停止しないことに注意してくださいFeatureFile
。パスの入力ミス、ファイル内の構文エラー、または以外のエンジンを使用すると、LuaTeX
機能ファイルが無視されます。