スキップしてメイン コンテンツに移動

源ノ明朝/源ノ角ゴシックをLuaLaTeXで使用する (Windows)

源ノ明朝 (Source Han Serif), 源ノ角ゴシック (Source Han Sans) はAdobeとGoogleが作成したCJKフォントで, オープンソースフォントとして公開されています (ライセンスはSIL Open Source License 1.1).

以下では, LuaTeXエンジンでこのフォントを (日本語で) 使用する方法を説明します. あるいは, otfファイルがダウンロードできれば, どのようなフォントにも適用可能です (PDFにフォント埋め込みすることに関してライセンスに注意が必要ですが). Windows10を前提としますが, 他の環境 (Linux/Mac) でもほぼ同じ方法で導入できるんじゃないでしょうか. 使用したのはTeX Live 2016 (LuaTeX-0.95) です.



本題: 源ノ明朝/源ノ角ゴシックのLuaLaTeXへの導入

(1) OTFファイルをダウンロードします: GitHub (1), (2) を開き, Region-specific Subset OTFsの欄にあるJapanをクリックするとzipファイルがダウンロードされます. 合計60MB.

(2) 上記zipファイルを任意の場所で展開して, その中に含まれるotfファイルを例えば


C:\texlive\texmf-local\fonts\opentype\adobe\sourcehanserifjp
C:\texlive\texmf-local\fonts\opentype\adobe\sourcehansansjp
にコピーします.

(3) [省略可能] 管理者権限でコマンドプロンプトを立ち上げて mktexlsr を実行します. (これは例えばCortanaで「cmd」または「コマンドプロンプト」と検索し, 右クリックメニューの「管理者として実行」を選択すればよいです. 念のため.)

(4) コマンドプロンプト (以下管理者権限は不要) で


luaotfload-tool --update
を実行します. これにより源ノ明朝/源ノ角ゴシックがLuaTeXで使用可能になります. そのことは, 例えば

luaotfload-tool --find="sourcehanserifjp"
luaotfload-tool --find="sourcehansansjp"
というコマンドによりチェックできます.

(5) 源ノ明朝/源ノ角ゴシックを使用したいTeXファイルにおいて, 和文フォント指定部分を


\usepackage[no-math]{luatexja-fontspec}
\setmainjfont{SourceHanSerifJP}
\setsansjfont{SourceHanSansJP}
\ltjsetparameter{jacharrange={-2}}
と書き直します (最終行は非ASCII文字がすべて和文と解釈されるのを防ぐためのものです). あとは普通にlualatex (またはluajitlatex) で処理すれば源ノ明朝/源ノ角ゴシックを使用したPDFが生成されます.


感想

XITSフォントとの組み合わせとしてはIPAexフォントよりも源ノ明朝/源ノ角ゴシックの方がバランスが良いと思います. この点が当初のモチベーションだったので大満足です.


参考文献

  1. 日本語フォントのセットアップ
  2. 天地有情 [LuaLaTeX] LuaLaTeX で『源ノ角ゴシック』を使ってみた

コメント

このブログの人気の投稿

matplotlib.histのnormedが変

以下の内容はPython 3.5.2 + matplotlib 1.5.1およびPython 3.6.2 + matplotlib 2.0.2で検証した. 作業日は2017年10月22日, 前者はUbuntu 16.04 on Win10 (WSL), 後者はDebian 8.9 (Anaconda). 規格化したいのにできない なにか数値の列dataがあったとして, そのヒストグラムをmatplotlibでプロットしたいとする. 普通に plt.hist( data ) とすると, これは縦軸が各bin内に入るデータ点が何個あるかを表すことになる. これをデータ総数len(data)で規格化したプロットにしようと思って plt.hist( data, normed=True ) またはnormed=1とかやっちゃうと, 思った通りのアウトプットにならずに頭を傾げることになる. 例えば: import numpy as np import matplotlib.pyplot as plt data = np.random.normal(0,0.1,1000) weights = np.ones(len(data))/len(data) plt.hist( data, weights=weights ) plt.show() アウトプットは で, 縦軸が1を超えるとか, 意味がわからない. 原因matplotlibのドキュメントを見ても何も書いてない. これはnumpyのドキュメントに答えが書いてあるからで, 要するにnormedオプションは事実上densityオプションと等しく, これは縦軸を確率分布関数と思って規格化するオプションである, と. 従って, normed=Trueオプションを指定すると, binの面積が1に規格化されることになる. いま欲しいものは値の総和が1に規格化されたアウトプットなのだから, binの幅が1でない限り, 欲しい結果は得られない. 対策 代わりにweightsオプションを指定すればこの問題は解決できる. これはdataの1つの値の重みを指定するパラメータで, デフォルトでは実質的に weights = np.ones(len(data)…

UbuntuのPDF編集ツールの使い方まとめ

PDFtkやpoppler-utilsに含まれるツールを使ってPDFを編集するコマンドのまとめです.
0. インストール sudo apt install pdftk sudo apt install poppler-utils UbuntuあるいはBash on Windowsならaptコマンドで一発.
1. PDFの文書情報の表示 pdfinfo (ファイル名)
2. PDFの分割と結合 pdftk (入力ファイル) cat (ページの指定) output (出力ファイル) ページ数の指定は1-12 14-endみたいな形で書けばよい. 入力ファイルを複数指定してページ数の指定を省略すればPDFの結合ができる.
3. PDFをJPEG/PNGに変換 pdftoppm [オプション] (入力ファイル名) (出力ファイル名の接頭辞) JPEGが欲しい場合-jpegを, PNGが欲しい場合-pngをオプションに指定する. デフォルトの解像度はDPI150で粗すぎるのでオプションで-r 300ないし-r 600を指定すべき. 白黒画像にしたい場合は-monoないし-grayを指定 (個人的には-grayのが好み). 複数ページのPDFを変換すると, 出力ファイルは (出力ファイル名の接頭辞)-1.jpg (出力ファイル名の接頭辞)-2.jpg みたいな形で生成される.
4. PDFからテキストを抽出 pdftotext (入力ファイル名) (出力ファイル名) 出力ファイルの文字コードはUTF-8, 改行コードはLF. 出力ファイル名は省略可能.
5. PDFから画像を抽出 pdfimages [オプション] (入力ファイル名) (出力ファイル名の接頭辞) オプションについて: -pngでPNG, -jでJPEG, -tiffでTIFF形式で出力される (オプションなしだとPPM形式)
6. PDFを回転 pdftk (入力ファイル名) cat 1-end(向き) output (出力ファイル名) 向きとしてはleft, right, downまたはnorth, east, west, southが使用可能. ※向きを指定する前にスペースを入れるとエラーになる.
関連ページ: PDFをコマンドラインから編集できるPDFtk使い方メモ - c-…