OTF パッケージは,齋藤修三郎さんによる,Adobe-Japan1-7 相当のフォントあたり最大23,060文字の和文 OpenType フォントを upLaTeX, pLaTeX で使うためのパッケージです。 ここでは OTF パッケージを Microsoft Windows と macOS で使う方法を説明します。
OTF パッケージでも文字が足りない場合は,TeX と外字を参照してください。
TeX Live とともにインストールされるので,特に追加でインストールする必要はありません。
Adobe 提供の CMap ファイルが2009年9月、オープンソースになりました。 adobe-type-tools/cmap-resources · GitHub から "Clone or download" > "Download ZIP" をクリックすると、 Adobe-Identity-0, Adobe-Japan1-7, Adobe-GB1-5, Adobe-CNS1-7, Adobe-KR-9, Adobe-Korea1-2 が含まれている cmap-resources-master.zip を取得できます。
\CID や \UTF を使いたい場合は,次のパッケージを使います。
まず OpenType フォントを持っていなくても試せる方法です。 Ryimun-Light と GothicBBB-Meduim は埋め込まれていないフォントを表します。 Adobe Acrobat Reader は埋め込まれていない Ryumin-Light と GothicBBB-Medium を適切なフォントに代替して表示・印刷します。 Adobe Acrobat Reader で使えるアジア・拡張言語フォントパック
はインストール済みとします。
これで次のものをテストしてみます。
を使います。
\documentclass{jsarticle} \usepackage[jis2004]{otf} \begin{document}
森\UTF{9DD7}外と内田百\UTF{9592}とが\UTF{9AD9}島屋に行くところを想像した。
\CID{7652}飾区の\CID{13706}野家
\end{document}
これを “hoge.tex” という名前で UTF-8 で保存します。 Windows PowerShell またはコマンドプロンプトやターミナルエミュレータで次のようにして処理します。
- TeX Live の場合
ptex2pdf -l -od "-f uptex-noEmbed-04.map -f otf-up-noEmbed.map" hoge.tex
出力された PDF ファイルを表示します。
start hoge.pdf
open hoge.pdf
PDF ファイルが Adobe Acrobat Reader に関連付けされている場合は hoge.pdf が Adobe Acrobat Reader で表示されると思います。
upLaTeX でも利用可能です。その場合はプリアンブルを
\documentclass[uplatex]{jsarticle} \usepackage[uplatex,jis2004]{otf}
としてください。
\usepackage[uplatex,jis2004]{otf}
を記述しなかった場合は dvipdfmx で
char=0x20bb7(134071) Tried to set a nonexistent character in a virtual font
と表示されて Adobe Acrobat Reader で 𠮷 (U+20BB7) の字が表示されませんでした。
LuaTeX-ja では otf パッケージ自身は使えませんが,代わりに同等の機能を提供する luatexja-otf パッケージが利用可能です。
\documentclass{ltjsarticle} \usepackage{luatexja-otf}
とします。
upLaTeX や LuaTeX-ja で使う場合は,Unicode で直接入力ができます。 例えば upLaTeX の場合は,
\documentclass[uplatex]{jsarticle} \usepackage[uplatex,jis2004]{otf} \begin{document}
森鷗外と内田百閒とが髙島屋に行くところを想像した。
葛飾区の𠮷野家
\end{document}
となります。
Adobe-Japan1-6 の文字を表示させて見ましょう。 OTF パッケージはベータ版を使用します。
テスト用のソースは,例えば次のものを用いてみます。
% uplatex か LuaTeX かを自動判定し正しいパッケージを読み込む。 \ifdefined\kanjiskip \documentclass[uplatex]{jsarticle} \usepackage[uplatex,jis2004]{otf} \kcatcode`゜=18 \else \documentclass{ltjsarticle} \usepackage{luatexja-otf} \usepackage[noembed,jis2004]{luatexja-preset} \fi \begin{document} Adobe-Japan1-5で追加された文字を使った例 \begin{itemize} \item 「\゜か」,「\゜き」,「\゜く」,「\゜け」,「\゜こ」, 「\゜カ」,「\゜キ」,「\゜ク」,「\゜ケ」,「\゜コ」は鼻濁音を表す。 \item Macintosh用キーボードの\UTF{2318}(Command key)を押す。 \item \UTF{2672}を心がけよう。 \end{itemize}
Adobe-Japan1-6で追加された文字を使った例 \begin{itemize} \item ほげほげ番組\CID{20556} \item ほげほげフェスティバル\CID{20656} \item \CID{20939}(Bq: becquerel)は放射能の強さを表す単位である。 \item フラーレン(fullerene) C$_{60}$は サッカーボール状(\CID{20957})の構造をしている。 \item \UTF{9B87}とは岩魚(イワナ)のことであり,嘉魚とも書く。 \end{itemize} \end{document}
最初の3項目に Adobe-Japan1-5 で追加された文字を,次の5項目に Adobe-Japan1-6 で追加された文字を使っています。 コマンド処理は上と同様です。
uplatex で処理する場合に \kcatcode`゜=18 を追加しています。 これを追加しない場合は uplatex でエラーが発生します。 upTeX での kcatcode の既定値が pTeX から変更されているようです。
を参考にしてください。
upLaTeX を使用すると丸附き数字(e.g. ① [U+2460])なども使用できます。
上の方法で作った PDF ファイルは,和文フォントが埋め込まれていないので軽いのですが,PDF の仕様に違反しており,どんな環境でも文字化けせず読めるというわけではありません。 実際,上のファイルを upLaTeX (ptex2pdf) で処理して,SumatraPDF と Windows 版の TeXworks の公式ビルドと Windows 版の TeXstudio の公式ビルドで開いた場合に 𠮷 (U+20BB7) の字が表示されませんでした。
どのような環境でも読めるようにするには,フォントを埋め込まなければなりません。 そのためには OpenType フォントが必要です。
なお,Adobe に問い合わせたところ,アジア・拡張言語フォントパック内の OpenType フォントの用途として,Adobe Acrobat Reader または Adobe Acrobat でのプレビュー・印刷用途を想定しているようです。 dvipdfmx, lualatex, luajitlatex を利用した Adobe Acrobat Reader または Adobe Acrobat 用フォントの埋め込みはライセンス違反となりますのでご注意下さい。 TeXWiki:フォント にある Adobe-Japan1-6 に完全対応した和文フォント(有償)を購入している場合には問題ありません。
$TEXMF/fonts/opentype/Adobe/ に、購入した KozMinPr6N-Regular.otf ・ KozGoPr6N-Medium.otf のシンボリックリンクを作成して必要があれば mktexlsr を実行します。 シンボリックリンクは管理者権限で「Windows PowerShell 」を開き,New-Item コマンドレットを実行あるいは管理者権限で「コマンド プロンプト」を開き, mklink を実行すれば作成できます。 C:/Windows/Fonts/ にある KozMinPr6N-Regular.otf 等の otf ファイルを $TEXMF/fonts/opentype/Adobe/ に直接コピーすることはライセンス上できません。
Windows PowerShell またはコマンド プロンプトで次のようにして処理します。
- TeX Live の場合
ptex2pdf -u -l -od "-f uptex-kozuka-pr6n-04.map -f otf-up-kozuka-pr6n.map" hoge.tex
\usepackage[noembed,jis2004]{luatexja-preset} を \usepackage[kozuka-pr6n,jis2004]{luatexja-preset} に変更 lualatex hoge.tex
\usepackage[noembed,jis2004]{luatexja-preset} を \usepackage[kozuka-pr6n,jis2004]{luatexja-preset} に変更 luajitlatex hoge.tex
これで明朝体については「小塚明朝 Pr6N R」が,ゴシック体については「小塚ゴシック Pr6N M」がそれぞれ埋め込まれるので,Adobe-Japan1-6 の範囲なら誰でも読めるようになります。
$TEXMFLOCAL/fonts/opentype// ディレクトリ以下に、購入した KozMinPr6N-Regular.otf ・ KozGoPr6N-Medium.otf のあるディレクトリをシンボリックリンクして mktexlsr を実行します。
次のようにして処理します。
ptex2pdf -u -l -od "-f uptex-kozuka-pr6n-04.map -f otf-up-kozuka-pr6n.map" hoge.tex
\usepackage[noembed,jis2004]{luatexja-preset} を \usepackage[kozuka-pr6n,jis2004]{luatexja-preset} に変更 lualatex hoge.tex
これで明朝体については「小塚明朝 Pr6N R」が,ゴシック体については「小塚ゴシック Pr6N M」がそれぞれ埋め込まれるので Adobe-Japan1-6 の範囲なら誰でも読めるようになります。
ヒラギノを買ったら MacBook Air がオマケに附いてきました(ウソ)。
TeX Live をインストールしてヒラギノフォント#macos-hiragino-setup を参考に設定しました。 これで2万グリフのヒラギノが使えるようになりました。めでたしめでたし。
\usepackage[uplatex,jis2004,expert]{otf} とすると, ご覧のように,縦書きと横書きで一部の字形が変わります(拙著旧版 『[改訂版]LaTeX2e 美文書作成入門』も ヒラギノですが変わらなかったのは OpenType 版ヒラギノではなかったから)。 ちなみに無指定の OTF パッケージでは \bfseries で同じウェイトのゴシックになるだけですので,上の図の例では “bold” オプションも加えて太いゴシックにしてあります。
OTF パッケージを(“noreplace” オプション以外で)使うと,\UTF{...} や \CID{...} で指定した文字以外についても,新しい和文用メトリックが使われます。 これは JIS フォントメトリックとほぼ同じですが,JIS フォントメトリックが今までの min10 などのしがらみを引きずって「高さ + 深さ < 幅」であったのに対し,OTF パッケージの新 JIS メトリックは正方形(高さ + 深さ = 幅)です。 従って,1 zw = 1 zh です(公称 10 pt のフォントで 1 zw = 1 zh = 9.62216 pt)。 また,一般的な PostScript の和文フォントにならって「高さ : 深さ = 88 : 12」です。
さらに,「?」と「!」(JIS の用語では「区切り約物」)の後に, 横書きの場合も 0.5 zw のグルー(スペース)が入るようになりました (縦書きでは tmin10 などと同様 1 zw が入ります)。 このグルーを禁止するには
あっ!\inhibitglue と驚く
または
あっ!\<と驚く
と書かなければなりません。
TeX Live と W32TeX には OTF パッケージで使用する map ファイルが最初から用意されています。
TeX Live には,(e-)(u)pTeX エンジン用の map ファイルが準備されています。 (→ updmap and kanji - TeX Live - TeX Users Group を参照。) 埋め込み制御は
$ sudo updmap-sys --setoption jaEmbed noEmbed (埋め込まない) $ sudo updmap-sys --setoption jaEmbed haranoaji (原ノ味フォントを埋め込む) $ sudo updmap-sys --setoption jaEmbed ipaex (IPAexフォントを埋め込む) $ sudo updmap-sys --setoption jaEmbed ipa (IPAフォントを埋め込む)
などを実行すれば dvipdfmx/dvips/xdvi の設定がすべて切り替わります。 kanji-config-updmap を使用すれば PDF へのフォント埋め込みの指定、および埋め込み状況の確認ができます。
$ sudo kanji-config-updmap-sys <fontname> (otf-<fontname>.map にしたがってフォントを埋め込む) $ sudo kanji-config-updmap-sys auto (自動的に <fontname> のいずれかを埋め込む) $ sudo kanji-config-updmap-sys nofont (PDF にフォントを埋め込まない) $ sudo kanji-config-updmap-sys status (現在の埋め込み設定を確認する)
自動的に埋め込み設定されるフォント <fontname> は例えば次のものがあります。
haranoaji, ipaex, ipa (いずれもないときは nofont になります)
dvipdfmx の設定を一時的に変更したいだけなら,コマンドラインから
dvipdfmx -f uptex-haranoaji-04.map -f otf-up-haranoaji.map hoge.dvi
などとオプション “-f” で直接指定する方法もあります。
W32TeX には,(e-)(u)pTeX エンジン用の map ファイルが準備されています。 埋め込み制御はすべて dvipdfmx の -f オプションを使います。 (→ OTF利用の際のフォント埋め込みの切り替えなど を参照。)
dvipdfmx dviname (デフォルト,otf は Hiragino ProN、一般漢字は ipaex) dvipdfmx -f haranoaji.map dviname (原ノ味) dvipdfmx -f haranoaji04.map dviname (原ノ味, JIS2004字形) dvipdfmx -f hiragino.map dviname (Hiragino) dvipdfmx -f hiraginopron.map dviname (Hiragino ProN) dvipdfmx -f hiraginopron04.map dviname (Hiragino ProN, JIS2004字形) dvipdfmx -f ipa.map dviname (ipa) dvipdfmx -f ipaex.map dviname (ipaex) dvipdfmx -f kozuka.map dviname (小塚 Pro) dvipdfmx -f kozukapr6n.map dviname (小塚 Pr6N) dvipdfmx -f kozukapr6n04.map dviname (小塚 Pr6N, JIS2004字形) dvipdfmx -f morisawa.map dviname (Morisawa) dvipdfmx -f morisawapr6n.map dviname (Morisawa Pr6N) dvipdfmx -f morisawapr6n04.map dviname (Morisawa Pr6N, JIS2004字形) dvipdfmx -f msmingoth.map dviname (msmincho and msgothic) dvipdfmx -f yu-win10.map dviname (游明朝・游ゴシック) dvipdfmx -f noembed.map dviname (埋め込まない) dvipdfmx -f noembed04.map dviname (埋め込まない, JIS2004字形)
dvips の場合は
dvips -Pdl dviname (デフォルト,otf は Hiragino ProN) dvips -Pdl -u+haranoaji-ps.map dviname (原ノ味) dvips -Pdl -u+haranoaji04-ps.map dviname (原ノ味, JIS2004字形) dvips -Pdl -u+hiragino-ps.map dviname (Hiragino) dvips -Pdl -u+hiraginopron-ps.map dviname (Hiragino ProN) dvips -Pdl -u+hiraginopron04-ps.map dviname (Hiragino ProN, JIS2004字形) dvips -Pdl -u+kozuka-ps.map dviname (小塚 Pro) dvips -Pdl -u+kozukapr6n-ps.map dviname (小塚 Pr6N) dvips -Pdl -u+kozukapr6n04-ps.map dviname (小塚 Pr6N, JIS2004字形) dvips -Pdl -u+morisawa-ps.map dviname (Morisawa) dvips -Pdl -u+morisawapr6n-ps.map dviname (Morisawa Pr6N) dvips -Pdl -u+morisawapr6n04-ps.map dviname (Morisawa Pr6N, JIS2004字形) dvips -Pdl -u+standard-ps.map dviname (Ryumin-Light, GothicBBB-Medium のみ) dvips -Pdl -u+standard04-ps.map dviname (Ryumin-Light, GothicBBB-Medium のみ, JIS2004字形)
結果の PS は Ghostscript で処理できます。
ps2otfps old.ps new.ps
によって、new.ps を作成し、この new.ps を Ghostscript で処理します。 あるいは,最新の ps2otfps はフィルタにもなるので (オプション -f)
dvips -f -Pdl ... dviname | ps2otfps -f >psname
を使うほうが便利でしょう。
ptex2pdf -u -l -od "-f uptex-noEmbed-04.map -f otf-up-noEmbed.map" hoge.tex
ptex2pdf -u -l -od "-f noembed04.map" hoge.tex
ptex2pdf -u -l -od "-f uptex-haranoaji-04.map -f otf-up-haranoaji.map" hoge.tex
ptex2pdf -u -l -od "-f haranoaji04.map" hoge.tex
ptex2pdf -u -l -od "-f uptex-ipaex.map -f otf-up-ipaex.map" hoge.tex
ptex2pdf -u -l -od "-f ipaex.map" hoge.tex
- Windows の場合
ptex2pdf -u -l -od "-f uptex-yu-win10.map -f otf-up-yu-win10.map" hoge.tex- macOS の場合
ptex2pdf -u -l -od "-f uptex-yu-osx-04.map -f otf-up-yu-osx.map" hoge.tex
ptex2pdf -u -l -od "-f yu-win10.map" hoge.tex
ptex2pdf -u -l -od "-f uptex-ms.map -f otf-up-ms.map" hoge.tex
ptex2pdf -u -l -od "-f msmingoth.map" hoge.tex
なお,Microsoft Windows に 付属している日本語フォントのウェイトに関する分類は次のようになっています。
weight | serif | sans serif | |
---|---|---|---|
明朝体 | 角ゴシック体 | 丸ゴシック体 | |
Ultra bold | HG創英角ゴシックUB (hgrsgu.ttc) | ||
Heavy | HG創英角ポップ体 (hgrpp1.ttc) | ||
Extra bold | HG創英プレゼンスEB (hgrpre.ttc) | HGゴシックE (hgrge.ttc) | |
HG明朝E (hgrme.ttc) | |||
Bold | HG明朝B (hgrmb.ttc) | HG ゴシックB Sun (HG-GothicB-Sun.ttc) | |
MS ゴシック (msgothic.ttc) | |||
Semi bold | |||
Medium | HGゴシックM (hgrgm.ttc) | HG丸ゴシックM-PRO (hgrsmp.ttf) | |
Regular | |||
Semi light | |||
Light | HG 明朝L Sun (HG-MinchoL-Sun.ttc) | ||
MS 明朝 (msmincho.ttc) | |||
Extra light | |||
Ultra light |
ここで「MS 明朝」 「MS ゴシック」は それぞれ RYOBI IMAGIX の 「本明朝-L」 「ゴシック-B」の 字母を基に RICOH が作成したものなので, 「MS 明朝」「MS ゴシック」を それぞれ “Light”,“Bold” のウェイトに分類しています。
ptex2pdf -u -l -od "-f uptex-hiragino-highsierra-pron-04.map -f otf-up-hiragino-highsierra-pron.map" hoge.tex
ptex2pdf -u -l -od "-f hiraginopron04.map" hoge.tex
ptex2pdf -u -l -od "-f uptex-kozuka-pr6n-04.map -f otf-up-kozuka-pr6n.map" hoge.tex
ptex2pdf -u -l -od "-f kozukapr6n04.map" hoge.tex
Microsoft Windows から利用する場合は $TEXMF/fonts/opentype/adobe/ に KozMinPr6N-Regular.otf 等のシンボリックリンク(管理者権限で「Windows PowerShell 」を開き,New-Item コマンドレットを実行あるいは管理者権限で「コマンド プロンプト」を開き, mklink を実行します。)を作成します(C:/Windows/Fonts/ にある KozMinPr6N-Regular.otf 等の otf ファイルを $TEXMF/fonts/opentype/Adobe/ に直接コピーすることはライセンス上できません)。
ptex2pdf -u -l -od "-f uptex-morisawa-pr6n-04.map -f otf-up-morisawa-pr6n.map" hoge.tex
ptex2pdf -u -l -od "-f morisawapr6n04.map" hoge.tex
Microsoft Windows から利用する場合は $TEXMF/fonts/opentype/morisawa/ に C:/Windows/Fonts/ にある A-OTF-RyuminPr6N-Light.otf 等のシンボリックリンク(管理者権限で「Windows PowerShell 」を開き,New-Item コマンドレットを実行あるいは管理者権限で「コマンド プロンプト」を開き, mklink を実行します。)を作成します(C:/Windows/Fonts/ にある A-OTF-RyuminPr6N-Light.otf 等の otf ファイルを $TEXMF/fonts/opentype/morisawa/ に直接コピーすることはライセンス上はおろか,プロテクトがかかっているため技術的にもできません)。
$TEXMF/dvips/config/config.ps に OTF パッケージ用の map ファイル (例えば $TEXMFLOCAL/fonts/map/dvips/local/psfonts-local.map)のファイル名を
p +psfonts-local.map
のように追記した上で, 次のような OTF パッケージ用の map ファイル (ここでは $TEXMFLOCAL/fonts/map/dvips/local/psfonts-local.map)を $TEXMFLOCAL/fonts/map/dvips// 以下に作成します。
rml Ryumin-Light-H rmlv Ryumin-Light-V
gbm GothicBBB-Medium-H gbmv GothicBBB-Medium-V
%%% OTF package hminr-h Ryumin-Light-H hminr-v Ryumin-Light-V otf-ujmr-h Ryumin-Light-UniJIS-UTF16-H otf-ujmr-v Ryumin-Light-UniJIS-UTF16-V otf-cjmr-h Ryumin-Light-Identity-H otf-cjmr-v Ryumin-Light-Identity-V
hgothr-h GothicBBB-Medium-H hgothr-v GothicBBB-Medium-V otf-ujgr-h GothicBBB-Medium-UniJIS-UTF16-H otf-ujgr-v GothicBBB-Medium-UniJIS-UTF16-V otf-cjgr-h GothicBBB-Medium-Identity-H otf-cjgr-v GothicBBB-Medium-Identity-V
hminb-h FutoMinA101-Bold-H hminb-v FutoMinA101-Bold-V otf-ujmb-h FutoMinA101-Bold-UniJIS-UTF16-H otf-ujmb-v FutoMinA101-Bold-UniJIS-UTF16-V otf-cjmb-h FutoMinA101-Bold-Identity-H otf-cjmb-v FutoMinA101-Bold-Identity-V
hgothb-h FutoGoB101-Bold-H hgothb-v FutoGoB101-Bold-V otf-ujgb-h FutoGoB101-Bold-UniJIS-UTF16-H otf-ujgb-v FutoGoB101-Bold-UniJIS-UTF16-V otf-cjgb-h FutoGoB101-Bold-Identity-H otf-cjgb-v FutoGoB101-Bold-Identity-V
hmgothr-h MidashiGo-MB31-H hmgothr-v MidashiGo-MB31-V otf-ujmgr-h MidashiGo-MB31-UniJIS-UTF16-H otf-ujmgr-v MidashiGo-MB31-UniJIS-UTF16-V otf-cjmgr-h MidashiGo-MB31-Identity-H otf-cjmgr-v MidashiGo-MB31-Identity-V
hminl-h HiraMinStdN-W2-H hminl-v HiraMinStdN-W2-V otf-ujml-h HiraMinStdN-W2-UniJIS-UTF16-H otf-ujml-v HiraMinStdN-W2-UniJIS-UTF16-V otf-cjml-h HiraMinStdN-W2-Identity-H otf-cjml-v HiraMinStdN-W2-Identity-V
otf-ucmr-h STSong-Light-UniGB-UTF16-H otf-ucmr-v STSong-Light-UniGB-UTF16-V otf-ccmr-h STSong-Light-Identity-H otf-ccmr-v STSong-Light-Identity-V
otf-ucgr-h STHeiti-Regular-UniGB-UTF16-H otf-ucgr-v STHeiti-Regular-UniGB-UTF16-V otf-ccgr-h STHeiti-Regular-Identity-H otf-ccgr-v STHeiti-Regular-Identity-V
otf-utmr-h MSung-Light-UniCNS-UTF16-H otf-utmr-v MSung-Light-UniCNS-UTF16-V otf-ctmr-h MSung-Light-Identity-H otf-ctmr-v MSung-Light-Identity-V
otf-utgr-h MHei-Medium-UniCNS-UTF16-H otf-utgr-v MHei-Medium-UniCNS-UTF16-V otf-ctgr-h MHei-Medium-Identity-H otf-ctgr-v MHei-Medium-Identity-V
otf-ukmr-h HYSMyeongJo-Medium-UniKS-UTF16-H otf-ukmr-v HYSMyeongJo-Medium-UniKS-UTF16-V otf-ckmr-h HYSMyeongJo-Medium-Identity-H otf-ckmr-v HYSMyeongJo-Medium-Identity-V
otf-ukgr-h HYGoThic-Medium-UniKS-UTF16-H otf-ukgr-v HYGoThic-Medium-UniKS-UTF16-V otf-ckgr-h HYGoThic-Medium-Identity-H otf-ckgr-v HYGoThic-Medium-Identity-V
hiramin-w3-h HiraMinProN-W3-Identity-H hiramin-w3-v HiraMinProN-W3-Identity-V hiramin-w6-h HiraMinProN-W6-Identity-H hiramin-w6-v HiraMinProN-W6-Identity-V hirakaku-w3-h HiraKakuProN-W3-Identity-H hirakaku-w3-v HiraKakuProN-W3-Identity-V hirakaku-w6-h HiraKakuProN-W6-Identity-H hirakaku-w6-v HiraKakuProN-W6-Identity-V hiramaru-w4-h HiraMaruProN-W4-Identity-H hiramaru-w4-v HiraMaruProN-W4-Identity-V