ここ数日、異常な暑さが続いています。いや、もはやこの「異常な暑さ」が正常なのかもしれません。考えてみれば、他にも「異常な物価高」など、「異常」が常態化して……(中略)……ゆきだるま☃!
今日は、皆さんお待ちかねの、ナントカの日!☺
— 某ZR(ざんねん🙃) (@zr_tex8r) 2023年8月7日
☃ #ナントカ #の日 ⛄ pic.twitter.com/kIZX2zJAC0
というわけで、今年も正常に「ゆきだるま☃の日」がやってきました!
某氏🙃がざんねん🙃な話
……といいたいところですが、某氏🙃については残念ながら今年は異常なことになってしまいました。少し体調が思わしくない状況が続いていて、事前に構想していた大ネタが完成できませんでした。
何か小ネタで代わりになるものはないかと、「X」(旧ツイッタァー)1を眺めていると……。
— Haruhiko Okumura (@h_okumura) 2023年8月4日
よし、コレに決めました(奥村先生、ありがとうございました🙇(えっ))
というわけで「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で出力する必要があります。
ヒラギノフォントは、CID+8218とかがいいですね☺#フォント #ナントカ pic.twitter.com/flOwZ31H35
— 某ZR(☃︎ん☃︎ん😀) (@zr_tex8r) 2023年8月4日
結局「“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つのファイルを使います。
まずは、macOSのコマンドシェルで、genschira.shを何も引数を付けずに実行します。
genshira.sh
すると、XeLaTeXが実行されて「“Macのヒラギノ”の☃」のPDF画像ファイル“schira-k.pdf”が生成されます。
※あいにく自分は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の困難な問題を解決することができました。やっぱり☃はスゴイ!😃
まとめ
ヒラギノの無表情な☃も非ヒラギノの無表情な☃も、どっちも素敵😊
- 最近のニュース記事だとこの書き方が多いようです😉↩
- 本当は書く予定でしたが時間切れのため省略(ざんねん🙃)↩
- この例はあくまで説明のためのものなので、初級者はマネをしないでください。↩
- LuaTeX+luaotfloadではフォント名は英語名のみが認識されるようです。↩
- . "kanji-config-updmapで標準和文フォントをヒラギノに設定して、(u)pLaTeX+japanese-otf(deluxe付)を使った場合と同じです。「ヒラギノ明朝W2」があればそれも利用できます。"↩
- TeX関連のソフトウェアとしては極めて例外的なのですが、macOS上のXeTeXは「macOSのフォント管理」を通してフォント名の解決処理を行います。だから「macOSでヒラギノが使える限りはLaTeXでも使える状態が維持されてほしい」という目的に鑑みるとXeLaTeXを使うのが最適ということになります。↩