XeLaTeX と Roboto: 合字なし

XeLaTeX と Roboto: 合字なし

私はRoboto フォント ファミリーXeLaTeX (または LuaLaTeX) を使用します。

XeLaTeX で文書を作成する場合、合字は使用されません (ただし、Android では合字が使用されるため、合字が存在する必要があります)。

LCDF typetools の otfinfo では、オプション --features により、liga が利用可能であることが示されます。私は Windows 8.1 で MiKTeX を使用しています。

以下に最小限の動作例を示します。

\documentclass[
  11pt,
  a4paper
]{scrartcl}

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

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


\begin{document}

fi

\end{document}

答え1

(質問が最初に投稿されてから 1 年以上経過しています。ただし、以下の回答は、一部の人にとってまだ役立つ可能性があります。)

このプログラムを XeLaTeX で実行するための鍵は、Path命令 を発行するときにオプションを正しく設定することのようです\setmainfont。次のコード修正バージョンでは、TeXLive2015 (または MacTeX2015) を使用することを前提としています。フォントが 以外の場所にある場合は、Path 変数を適切に変更するだけです/usr/local/texlive/2015/texmf-dist/fonts/truetype/google/roboto/

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

\documentclass[11pt, a4paper]{scrartcl}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures={TeX,Common}}

\setmainfont[
     Path = /usr/local/texlive/2015/texmf-dist/fonts/truetype/google/roboto/,
     Extension      = .ttf,
     UprightFont    = *-Regular,
     ItalicFont     = *-RegularItalic,
     BoldFont       = *-Bold,
     BoldItalicFont = *-BoldItalic,
    ]{Roboto}

\begin{document}
Ligatures enabled: fi fl ffi ffl

Ligatures disabled: f\kern0pti f\kern0ptl f\kern0ptf\kern0pti f\kern0ptf\kern0ptl
\end{document}

Path対照的に、LuaLaTeXではフォントファイルを「見つける」ためにオプションは必要ないようです。実際、以下の命令を発行すると、

\setmainfont{Roboto}

プログラムが LuaLaTeX で正しく実行されるために必要なのはこれだけのようです。

関連情報