マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

イマドキのmacOSで平和に“pLaTeXでヒラギノ”する話(※ただし画期的)

ここ数日、異常な暑さが続いています。いや、もはやこの「異常な暑さ」が正常なのかもしれません。考えてみれば、他にも「異常な物価高」など、「異常」が常態化して……(中略)……ゆきだるま☃!

というわけで、今年も正常に「ゆきだるま☃の日」がやってきました!

某氏🙃がざんねん🙃な話

……といいたいところですが、某氏🙃については残念ながら今年は異常なことになってしまいました。少し体調が思わしくない状況が続いていて、事前に構想していた大ネタが完成できませんでした。

何か小ネタで代わりになるものはないかと、「X」(旧ツイッタァー)1を眺めていると……。

よし、コレに決めました(奥村先生、ありがとうございました🙇(えっ))

というわけでpLaTeXで“Macヒラギノ”を使う」について考察してみます。

Macヒラギノ”の難しさを語る(つもりだった)話

最近のMac者なら「LaTeXで“Macヒラギノ”を使うのは極めて難しいので、素人は手を出すな」という話を聞いたことがあるでしょう。「“Macヒラギノ”でLaTeX」が困難である理由はTeX関連のソフトウェアの事情が深く関わっていて……(略2

LuaLaTeXなら簡単に“Macヒラギノ”できる話

実は、イマドキの日本語LaTeXの世界では“Macヒラギノ”を使う極めて簡単な方法があります。それはLuaLaTeX(+LuaTeX-ja)を使うことです。例えば、luatexja-fontspecを利用して次のように3書くと標準の明朝体を「ヒラギノ明朝ProN W3」に設定できます。

% LuaLaTeX文書
\documentclass{ltjsarticle}
\usepackage{luatexja-fontspec}
\setmainjfont{Hiragino Mincho ProN W3}

ここで注目すべきなのは「Hiragino Mincho ProN W3」というフォント名(英語名ですが4)を指定していることです。LuaLaTeXも「OSのフォント管理」とは全く独立に動いているという点では従来の(p)LaTeXと同じです。しかしLuaTeXでは自前の(Luaによる)実装により「フォント名からOSにインストール済のフォントファイルを見つける」という処理を実現しています。このため、LuaLaTeXでは「macOSのバージョンによるフォントファイルの構成の差異」の影響を受けることなく、OSに「Hiragino Mincho ProN W3」(という英語名のフォント)がある限りはその名前を指定して利用できるわけです。

やっぱりLuaLaTeXはスゴイですね🙂

チョット補足してみる

「LuaTeX-jaで“Macヒラギノ”」を実用したいという場合は、luatexja-presetパッケージが便利です。次のようにパッケージを読むだけで“Macヒラギノ”の明朝2ウェイト・ゴシック3ウェイト・丸ゴシック1ウェイトが標準の和文フォントに設定されます5

% LuaLaTeX文書のプリアンブルで
\usepackage[hiragino-pron,deluxe]{luatexja-preset}% ProN系を使う場合
%\usepackage[hiragino-pro,deluxe]{luatexja-preset}% Pro系を使う場合

deluxeは多ウェイト設定を有効にするためのオプションです(japanese-otfパッケージと同様)。

なお、jlreqクラスを利用する場合は注意が必要(参考)で、このときはluatexja-presetパッケージのオプションリストに

jfm_yoko=jlreq,jfm_tate=jlreqv

を追加する必要があります。

% LuaLaTeX文書
\documentclass[tate,book,paper=a6,fontsize=9pt]{jlreq}
\usepackage[hiragino-pron,deluxe,jfm_yoko=jlreq,jfm_tate=jlreqv]{luatexja-preset}

でもやっぱりpLaTeXで“Macヒラギノ”したい話

話を戻しましょう。LuaLaTeXはスゴイわけですが、今でも日本ではpLaTeXが広く使われています。先にあげた奥村氏のアンケート結果を見る限りは「pLaTeXで“Macヒラギノ”を使う」という課題は大いに考える価値があるでしょう。もちろん、「macOSをアップデートしたら何も動かなくなって詰んだ」というリスクを抱え続けるのも全く望ましくありません。「pLaTeXで“Macヒラギノ”を平和に使い続ける方法」が求められているわけです。

一見して極めて困難な問題です。しかしこれがLaTeXの困難な問題」の一つと判断できているのであれば、自ずと解決方針も見えてきます……そうです。

出力を☃に変えればよい。

今回もこの方針に従って画期的な解決方法を考えてみましょう。出力を☃に変えるといっても、そもそも目的が「ヒラギノフォントの文字を出力する」ことなので、いつものように「scsnowmanの赤マフラーの☃を出力して終わり(めでたしめでたし😊)」というわけにはいきません。あの“無表情な☃”pLaTeXで出力する必要があります。

結局「“Macヒラギノ”の文字をpLaTeXで扱う必要がある」ので全く問題が簡単になっていないようにも見えますが、大きな進展もあります。これまではヒラギノの2万グリフを全て使おうとしていたところを、本質的に必要な1つのグリフ(CID+8218)だけに絞ることに成功しました。1つの文字だけであればフォント自体を扱う必要はありません。そう、画像化すればよいわけです!

画期的な解決策のアイデア

先述の通り、LuaLaTeXでは“Macヒラギノ”を簡単に取り扱えるので、LuaLaTeXでstandaloneパッケージを使うなどの方法で「“Macヒラギノ”の☃」の「PDF形式の画像」を作り出すことができます。

% LuaLaTeX文書; UTF-8
\documentclass{standalone}
\usepackage{fontspec}
\setmainfont{Hiragino Mincho ProN W3}
\begin{document}% 中身は☃だけ
\end{document}

pLaTeX+dvipdfmxでは「PDF形式の画像」を貼り込めるので、あとは“まるで直接文字を書いたように見えるように適切に調整”してこの☃の画像を貼ればいいわけです。PDFの中にPDFを貼った形なので外の文字と全く同じように「フォントの字」が配置されている状態になるため、検索・コピーペーストも問題なく行えます。

pLaTeXで本質的に“Macヒラギノ”できる話

このアイデアに基づいて、実際にLaTeXパッケージをつくってみました

以下の2つのファイルを使います。

  • genschira.sh : ☃のPDF画像を生成するためのbashスクリプト
  • schira.sty: ☃のPDF画像を貼り込むためのLaTeXパッケージ。

まずは、macOSのコマンドシェルで、genschira.shを何も引数を付けずに実行します。

genshira.sh

すると、XeLaTeXが実行されて「“Macヒラギノ”の☃」のPDF画像ファイル“schira-k.pdf”が生成されます。

本質的な“Macヒラギノ”(もどき🙃)の画像

※あいにく自分はWindows者でヒラギノは持っていないので、この記事ではscsnowmanでつくった「ヒラギノもどき」の無表情な☃の画像を代わりに使います。賢明な読者の皆さんは「本当はヒラギノの無表情な☃である」と思い込んでください(えっ😲)

※先の説明ではLuaLaTeXを使いましたが、実は今の用途だとLuaLaTeXよりもXeLaTeXの方がより“安全”である6ため、genschira.shではXeLaTeXを使っています。

schiraパッケージは次の命令を提供します。

  • \schira: genschira.shで生成した☃のPDF画像を“まるで直接☃の字を書いた”ように適切に配置する。

※schiraパッケージはpLaTeX+dvipdfmxに限らず、全ての「PDF画像を扱えるワークフロー」をサポートします。ドライバオプションはグローバルオプションに指定してください。

% pLaTeX+dvipdfmx
\documentclass[dvipdfmx,a4paper]{jsarticle}
\usepackage{schira}
\begin{document}
吾輩は{\schira}である。
意味はまだない。
\end{document}

出力結果

もちろん、schiraパッケージは縦組みの文書もサポートしています。次に挙げるのはjlreqクラスを利用した縦組みの文書の例です。

% pLaTeX+dvipdfmx
\documentclass[tate,dvipdfmx]{jlreq}
\usepackage{schira}
\begin{document}
吾輩は{\schira}である。

意味はまだない。
\end{document}

出力結果

もちろん、☃以外の文字はdvipdfmxの既定設定のまま(上掲の画像では原ノ味フォント)なのでヒラギノではないのですが、そもそも☃以外の文字は全く本質的ではないため、結果として「pLaTeX文書が本質的にヒラギノになった」といって問題ないでしょう。

今回も「出力を☃に変える」という画期的なアイデアにより見事にLaTeXの困難な問題を解決することができました。やっぱり☃はスゴイ!😃

まとめ

ヒラギノの無表情な☃も非ヒラギノの無表情な☃も、どっちも素敵😊


  1. 最近のニュース記事だとこの書き方が多いようです😉
  2. 本当は書く予定でしたが時間切れのため省略(ざんねん🙃)
  3. この例はあくまで説明のためのものなので、初級者はマネをしないでください。
  4. LuaTeX+luaotfloadではフォント名は英語名のみが認識されるようです。
  5. . "kanji-config-updmapで標準和文フォントをヒラギノに設定して、(u)pLaTeX+japanese-otf(deluxe付)を使った場合と同じです。「ヒラギノ明朝W2」があればそれも利用できます。"
  6. TeX関連のソフトウェアとしては極めて例外的なのですが、macOSのXeTeXは「macOSのフォント管理」を通してフォント名の解決処理を行います。だから「macOSヒラギノが使える限りはLaTeXでも使える状態が維持されてほしい」という目的に鑑みるとXeLaTeXを使うのが最適ということになります。