フォントのフォントエンコーディング設定を手動で設定するにはどうすればよいですか?

フォントのフォントエンコーディング設定を手動で設定するにはどうすればよいですか?

フォント テーブルには合字だけでなく、数学の部首、演算子、積分記号などが含まれています。(この質問で紹介しているフォントとは別のフォントで、積分記号は含まれていません。)

私の場合、一部の文字の組み合わせでは、たとえば「ffi」合字のグリフ置換がトリガーされません。これは、フォント実装の ( ) ソリューションと ( ) ソリューションpdflatexotftotfm両方xelatexで発生します。fontspec

私が使用しようとしている商用フォントを含むコンパイルされた結果には、(両方のfontspecソリューションとotftotfm)が表示されます。

http://i.imgur.com/I4XfJbM.png?1

ゼラテックス ( fontspec)

で概説したソリューションを実行した後、fi、fl、ffl の合字は Times New Roman (XeLaTeX) では機能しません、合字をトリガーしようとしてもまだ機能しません。Egregはチャットこのソリューションは、XeTeXグリフがフォント テーブルに対して正しい位置にある限り、ドキュメントに対して適切な出力を生成することが一般的です。グリフはフォント テーブル内にあることが判明しました (Adobe Illustrator から取得したスクリーンショット)

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

これは、正しい位置にないことを示しています。したがって、たとえば「ffi」と入力して、それをフォント内の正しい合字にリンクするリンクを手動で設定するオプションがあることが望ましいでしょう。

PDFLaTeX ( otftotfm)

念のため、otftotfm次のコマンドを使用しました。

otftotfm -a -e ec  -fkern -fliga --verbose --vendor <mapfilename> <somefont>.otf T1--<fontname>--<fontweight>

このコマンドは合字に関してエラーを生成します:

otftotfm: warning: 'liga' feature ignored, not supported by font

これは、ファイルを構築した後にも確認できます.pl

tftopl T1--<fontname>--<fontweight>.tfm > T1--<fontname>--<fontweight>.pl

確かに合字はありませんでした。以下はT1--<fontname>--<fontweight>.plファイルから抜粋したものです:

(LABEL C f)
   (KRN O 41 R 0.08)
   (KRN O 47 R 0.1)
   (KRN O 51 R 0.07)
   (KRN O 52 R 0.08)
   (KRN O 54 R -0.05)
   (KRN O 56 R -0.05)
   (KRN O 77 R 0.12)
   (KRN O 135 R 0.07)
   (KRN C a R -0.01)
   (KRN C b R 0.1)
   (KRN C c R -0.01)
   (KRN C e R -0.01)
   (KRN C g R -0.01)
   (KRN C h R 0.1)
   (KRN C i R 0.03)
   (KRN C j R 0.03)
   (KRN C k R 0.1)
   (KRN C l R 0.1)
   (KRN C o R -0.01)
   (KRN C t R 0.01)
   (KRN C v R 0.01)
   (KRN C w R 0.01)
   (KRN C y R 0.01)
   (KRN O 175 R 0.07)
   (KRN O 15 R -0.05)
   (KRN O 22 R -0.05)
   (KRN O 21 R 0.1)
   (KRN O 346 R -0.01)
   (KRN O 370 R -0.01)
   (KRN O 367 R -0.01)
   (KRN O 344 R -0.01)
   (KRN O 345 R -0.01)
   (KRN O 351 R -0.01)
   (KRN O 352 R -0.01)
   (KRN O 364 R -0.01)
   (KRN O 366 R -0.01)
   (STOP)

私が思いつく唯一の方法は、人間が読める.plファイル (上記はその抜粋) をいじって、すべてを手動で構築することです。しかし、おそらく (うまくいけば?!) LaTeX には、このようなことを処理する機能があります。

いずれにせよ、割り当てると良いでしょう任意フォント テーブルの (ただし特定の) グリフを特定のコマンドに非常に一般的な方法で割り当てます。つまり、\int(架空の数字)、8 進数 501、Unicode +00a6、または文字の組み合わせから積分記号をトリガーするものを考えます。たとえば、「ffi」は (リンク先) -->「合字 ffi」になります。ソースで 256 スロットすべてを特定のコマンドまたは文字の組み合わせに宣言する必要があっても、それがわかっていれば問題ありません。どうやってそれをするために

合字も含まれる別の(非商用)フォントを使用した以下の例を検討してください。http://exljbris.com/tallys.html. Windows ユーザーの方は、必要に応じてこれをバッチ ファイルにコピーして貼り付けることができます。-fkernおよび-fliga機能は意図的に無効にしました。これは、まさにそれが関連する部分だからです。私のフォントはグリフを正しくマップしません。

otftotfm -a -e ec  --verbose --vendor tallys Tallys_15.otf T1--Tallys15--Regular
pause

こちらにもt1tallys.fdファイルがあります:

\ProvidesFile{t1tallys.fd}
   [2015/04/30 scalable font definitions for T1/Tallys.]

\DeclareFontFamily{T1}{Tallys}{}
\DeclareFontShape{T1}{Tallys}{m}{n}{<-> T1--Tallys15--Regular}{}
\DeclareFontShape{T1}{Tallys}{m}{it}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{m}{sc}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{m}{sl}{<-> ssub * Tallys/m/n}{}

\DeclareFontShape{T1}{Tallys}{b}{n}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{b}{it}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{b}{sc}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{b}{sl}{<-> ssub * Tallys/m/n}{}

\DeclareFontShape{T1}{Tallys}{l}{n}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{l}{it}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{l}{sc}{<-> ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{l}{sl}{<-> ssub * Tallys/m/n}{}

\DeclareFontShape{T1}{Tallys}{bx}{n}{ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{bx}{it}{ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{bx}{sc}{ssub * Tallys/m/n}{}
\DeclareFontShape{T1}{Tallys}{bx}{sl}{ssub * Tallys/m/n}{}

\endinput

MWE ( は、XeLaTeXこの場合、合字を使用して正しい結果を生成します... このXeLaTeXアプローチを採用する場合は、他の文字をマップするだけです。 でこれを行う方法をまだ知りたいですXeLaTeX。)

\documentclass{article}

\usepackage{ifxetex}
\ifxetex
    \usepackage{fontspec}
    \defaultfontfeatures{Ligatures=TeX}
    \setmainfont{Tallys}
    \usepackage{microtype}
\else
    \RequirePackage[T1]{fontenc}
    \pdfmapfile{tallys.map}
    \RequirePackage{microtype}
    \renewcommand\rmdefault{Tallys}
    \renewcommand\sfdefault{Tallys}
\fi

\begin{document}
\fontsize{100pt}{0pt}\selectfont ffi fi fl ffl
\end{document}

アイデアは、文字の組み合わせを合字にマッピングできるようにすることですffi。また、適切な文字を適切な数式コマンドに何らかの方法で設定することも望ましいでしょう (これはより複雑であることは理解していますが、フォントを完全にマッピングし、どの文字をいつ使用するかを TeX が完全に理解できるようにする一般的なソリューションを本当に探していることを理解してください)。理想的なソリューションは、それを実行するために必要な完全なプロセスを説明するものです。また、異なるフォントを混在させることもできます (単一フォント ソリューションと比較してそれほど複雑ではありません。これは単に回答を一般化するだけです)。

関連情報