Help us understand the problem. What is going on with this article?

LuaTeXで原ノ味フォントを使う

これは「TeX & LaTeX Advent Calendar 2019」の8日目の記事です。
7日目の記事はやまいもさんの「jlreqでの箇条書きのインデント調整に関して。」です。9日目の記事はmunepiさんです。

本記事ではTeX Liveの環境に原ノ味フォントをインストールして LuaLaTeX で使うまでを簡単に紹介します。

はじめに

原ノ味明朝・原ノ味角ゴシック(原ノ味フォント)は、源ノフォント(源ノ明朝・源ノ角ゴシック)を従来の日本語フォントと同様の構成に組み替えることによって、各種TeXエンジンなどで使いやすくしたフォントです。

源ノフォントは、明朝・ゴシック双方で豊富なウェイト数が揃っていて、和文に使えるフォントです。そして、これらは実用的な品質である上にオープンソースであるという、他にはない特徴をもった大変ありがたいフォントです。しかし、従来の日本語フォントとは仕組みが異なる部分があるため、各種TeXエンジンやいくつかのアプリケーションでは利用が難しいことがあります。

(この辺の細かいことは「原ノ味フォントとToUnicode CMap」で説明していますので、ご興味がある方はご覧ください。)

2019年12月現在、原ノ味フォントはTeX Liveに収録されていないため、自分でダウンロードしてインストールする必要があります。本記事では原ノ味フォントのインストールとLuaLaTeXで使うまでを簡単に紹介します。TeX Liveは既にインストールされていて使えるようになっているところからスタートします。

既にインストールされているか確認

環境によっては原ノ味フォントが既にインストールされている場合もありますので確認してみましょう。TeX Liveを使用するユーザでコンソールやコマンドプロンプトなどを開き、以下のコマンドを実行してみます。

kpsewhich HaranoAjiMincho-Light.otf
kpsewhich HaranoAjiMincho-Regular.otf
kpsewhich HaranoAjiMincho-Bold.otf
kpsewhich HaranoAjiGothic-Regular.otf
kpsewhich HaranoAjiGothic-Bold.otf
kpsewhich HaranoAjiGothic-Heavy.otf
kpsewhich HaranoAjiGothic-Medium.otf

実行した結果、以下のように何も表示されなければ原ノ味フォントはインストールされていません。

$ kpsewhich HaranoAjiMincho-Light.otf

$ kpsewhich HaranoAjiMincho-Regular.otf

$ kpsewhich HaranoAjiMincho-Bold.otf

$ kpsewhich HaranoAjiGothic-Regular.otf

$ kpsewhich HaranoAjiGothic-Bold.otf

$ kpsewhich HaranoAjiGothic-Heavy.otf

$ kpsewhich HaranoAjiGothic-Medium.otf

$

以下のように何らかのパス名が出てくるようであれば原ノ味フォントはインストール済です。出てくるパス名は違っても構いません。古いフォントのままになっていないかバージョンを確認して、必要なら更新してもよいと思います。

$ kpsewhich HaranoAjiMincho-Light.otf
/usr/share/texmf-site/fonts/opentype/public/haranoaji/HaranoAjiMincho-Light.otf

$ kpsewhich HaranoAjiMincho-Regular.otf
/usr/share/texmf-site/fonts/opentype/public/haranoaji/HaranoAjiMincho-Regular.otf

$ kpsewhich HaranoAjiMincho-Bold.otf
/usr/share/texmf-site/fonts/opentype/public/haranoaji/HaranoAjiMincho-Bold.otf

$ kpsewhich HaranoAjiGothic-Regular.otf
/usr/share/texmf-site/fonts/opentype/public/haranoaji/HaranoAjiGothic-Regular.otf

$ kpsewhich HaranoAjiGothic-Bold.otf
/usr/share/texmf-site/fonts/opentype/public/haranoaji/HaranoAjiGothic-Bold.otf

$ kpsewhich HaranoAjiGothic-Heavy.otf
/usr/share/texmf-site/fonts/opentype/public/haranoaji/HaranoAjiGothic-Heavy.otf

$ kpsewhich HaranoAjiGothic-Medium.otf
/usr/share/texmf-site/fonts/opentype/public/haranoaji/HaranoAjiGothic-Medium.otf

$

インストール

原ノ味フォントがインストールされてなければインストールします。

ダウンロード

まずはダウンロードしましょう。とりあえず、
https://github.com/trueroad/HaranoAjiFonts/releases
から一番新しい(一番上にある) ziptar.gz をダウンロードすればよいでしょう。後で解凍するときに都合がいい方を選べばよいです。

インストール先のディレクトリ・フォルダ

インストール先のディレクトリ・フォルダを決めて堀ります。インストールする環境で管理者権限が使えるのであれば、以下のコマンド

kpsewhich --var-value=TEXMFLOCAL

管理者権限が使えなければ、TeX Liveを使用するユーザで以下のコマンド

kpsewhich --var-value=TEXMFHOME

を実行して表示されるパス名を確かめます。例えば、

$ kpsewhich --var-value=TEXMFLOCAL
/usr/share/texmf-site

$

であれば /usr/share/texmf-site です。あるいは

$ kpsewhich --var-value=TEXMFHOME
/home/username/.local/share/texmf

$

であれば /home/username/.local/share/texmf です。

こうして得られたパス名の下にインストール先のディレクトリ・フォルダを掘ります。名前は fonts/opentype/public/haranoaji/ のようにすればよいでしょう。

つまり、さきほどの最初の例の場合は
/usr/share/texmf-site/fonts/opentype/public/haranoaji/
というディレクトリ・フォルダを掘ります。2番目の例の場合は
/home/username/.local/share/texmf/fonts/opentype/public/haranoaji/
というディレクトリ・フォルダを掘ります。

解凍してフォントファイルを置く

ダウンロードした原ノ味フォントのファイル( .zip.tar.gz のファイル)を解凍します。フォントファイル(拡張子が .otf のファイル)が14個出てくるので、それらのファイルを先ほど掘ったインストール先のディレクトリ・フォルダにコピーします。

TeXから見つけられるようにする

インストールする環境で管理者権限が使えるのであれば、管理者権限で mktexlsr を実行しておきましょう。

インストールできたか確認

インストールできたか確認するため「既にインストールされているか確認」のときと同じコマンドを実行してみます。

kpsewhich HaranoAjiMincho-Light.otf
kpsewhich HaranoAjiMincho-Regular.otf
kpsewhich HaranoAjiMincho-Bold.otf
kpsewhich HaranoAjiGothic-Regular.otf
kpsewhich HaranoAjiGothic-Bold.otf
kpsewhich HaranoAjiGothic-Heavy.otf
kpsewhich HaranoAjiGothic-Medium.otf

置いたフォントファイルのパス名が出てくるようになれば完了です。出てこなければ何かが間違っていますので、手順を再確認してみましょう。

LuaLaTeXで原ノ味フォントを使う

簡単な例

最新のLuaTeX-ja環境1であれば、以下のようにすると原ノ味フォントを使うことができます。

\documentclass{ltjsarticle}

\usepackage[haranoaji,nfssonly]{luatexja-preset}

\begin{document}

\section{吾輩は猫である}

吾輩は猫である。名前はまだ無い。

\end{document}

少し古いLuaTeX-ja環境2の場合は上記のソースでは原ノ味フォントになりません。その場合は以下のようにするとよいでしょう。

\documentclass{ltjsarticle}

\usepackage[nfssonly]{luatexja-preset}
\ltjnewpreset{HaranoAji}{%
  mc-l = HaranoAjiMincho-Light.otf,
  mc-m = HaranoAjiMincho-Regular.otf,
  mc-bx = HaranoAjiMincho-Bold.otf,
  gt-m = HaranoAjiGothic-Regular.otf,
  gt-bx = HaranoAjiGothic-Bold.otf,
  gt-eb = HaranoAjiGothic-Heavy.otf,
  mg-m = HaranoAjiGothic-Heavy.otf}
\ltjapplypreset{HaranoAji}

\begin{document}

\section{吾輩は猫である}

吾輩は猫である。名前はまだ無い。

\end{document}

マルチウェイト

原ノ味フォントはマルチウェイトなので、以下のようにして太字を使うこともできます。これはIPAフォントやIPAexフォントのようなウェイトが一つしかないフォントでは基本的にできませんし、無理やり太字にするとみっともなくなってしまいます。原ノ味フォントなら問題ありません。

\documentclass{ltjsarticle}

\usepackage[haranoaji,deluxe,match,nfssonly]{luatexja-preset}

\begin{document}

\section{吾輩は\textbf{}である}

吾輩は\textbf{}である。名前はまだ\textbf{無い}\end{document}

少し古いLuaTeX-ja環境の場合は以下のようにします。

\documentclass{ltjsarticle}

\usepackage[deluxe,match,nfssonly]{luatexja-preset}
\ltjnewpreset{HaranoAji}{%
  mc-l = HaranoAjiMincho-Light.otf,
  mc-m = HaranoAjiMincho-Regular.otf,
  mc-bx = HaranoAjiMincho-Bold.otf,
  gt-m = HaranoAjiGothic-Regular.otf,
  gt-bx = HaranoAjiGothic-Bold.otf,
  gt-eb = HaranoAjiGothic-Heavy.otf,
  mg-m = HaranoAjiGothic-Heavy.otf}
\ltjapplypreset{HaranoAji}

\begin{document}

\section{吾輩は\textbf{}である}

吾輩は\textbf{}である。名前はまだ\textbf{無い}\end{document}

原ノ味フォントだからできること

ここまでの内容はLuaTeXであれば原ノ味フォントである必要はなく、源ノフォントでも同様のことができます。では、何か原ノ味フォントを使うメリットはあるでしょうか。

LuaTeXが出力したPDFは、各フォントにToUnicode CMapというものが埋め込まれています。源ノフォントの場合はPDFからテキストを抽出する(コピペする)ためにはToUnicode CMapが必須です。一方、原ノ味フォントの場合はToUnicode CMapが無くてもテキスト抽出できます。そこで、pdf-rm-tucというツールを使うとToUnicode CMapを削除することができ、PDFのファイルサイズを小さくすることができます。また、条件によってPDFに埋め込まれたToUnicode CMapに起因する問題が発生することもある3のですが、その問題を解消できるかもしれません。

詳しいことは「原ノ味フォントとToUnicode CMap」をご覧ください。

おわりに

TeX Liveの環境に原ノ味フォントをインストールして、LuaTeXで使うところまでを紹介しました。

いまどきのLuaTeXの場合は普通に源ノフォントを使うことができるため、原ノ味フォントのメリットはToUnicode CMapを消せばPDFのサイズを小さくすることができる、ぐらいかなぁと思っています。XeTeXならToUnicode CMap周りでもっとメリットがありそう4ですが、現状ではXeTeXは日本語組版に向いていないのではないかと思います。

原ノ味フォントのメリットが大きいのはpTeXやupTeXでしょう。特にpTeXで源ノフォントを使うには工夫が必要なため、原ノ味フォントのメリットが最大限享受できる環境であると言えると思います。ですが、現状ではTeX LiveのpTeXやupTeXで和文フォントを扱う仕組みであるptex-fontmapsに原ノ味フォントがプリセットされていないため、この枠組みで使うにはひと手間必要になります5。なお、ptex-fontmapsのリポジトリには原ノ味フォントのプリセットが追加されたため、TeX Live 2020では使えるようになると思います。

本記事では原ノ味フォントを各種TeXエンジンで使いやすいフォントとして紹介しましたが、TeX以外の環境でもメリットはあります。例えば、楽譜作成プログラムLilyPondで日本語に源ノフォントを使うと、日本語のテキスト抽出ができないPDFになってしまいますが、原ノ味フォントならばできます6

最後になりますが、こうしたフォントの違いに興味を持たれた方は「原ノ味フォントとToUnicode CMap」が参考になるのではないかと思いますので、ご覧いただければと思います。


  1. LuaTeX-ja 20191117.0で原ノ味フォントがプリセットに入りました。TeX Live 2019を最新に更新していればこれが収録されていると思います。つまり、TeX Live 2019 frozenやTeX Live 2020以降には収録されると思います。 

  2. TeX Live 2019初版などが該当します。 

  3. ToUnicode CMapを逆変換によって生成した場合に問題が発生することがあります。XeTeXはxdvの時点でUnicodeが失われてしまうので、xdvipdfmxは逆変換でToUnicode CMapを生成するしかなく、問題が発生しやすいと思います。LuaTeXの場合は元のUnicodeを知っている状態でPDFを生成するので、必ずしも逆変換の必要がなく、問題にならないことが多いかもしれません。 

  4. XeTeXはToUnicode CMapの生成がどうしても逆変換になってしまうため、源ノフォントだと条件によってテキスト抽出に問題が発生します。原ノ味フォントならば最初からToUnicode CMapを生成せず埋め込みもしませんので、逆変換に起因するテキスト抽出の問題も発生しません。 

  5. とりあえず使いたいだけであれば、本記事の方法で原ノ味フォントをインストールしてから、原ノ味フォントのマップファイルをダウンロードしてどこかに置いておき、dvipdfmxの -f オプションで必要なマップファイルを指定してやることで使えます。 

  6. LilyPondはGhostscriptでPDFを生成していますが、この場合GhostscriptはToUnicode CMapを生成しないようです。源ノフォントはテキスト抽出にToUnicode CMap必須なので無ければできないのに対して、原ノ味フォントなら必須ではないので問題なくできる、ということです。 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away