TeX Alchemist Online

TeX を使って化学のお仕事をしています。

upLaTeX + Source Han Sans(源ノ角ゴシック)による縦書き実験

最近巷で話題沸騰中の Adobe の新フォント,Source Han Sans(源ノ角ゴシック)を使って TeX で縦書きをしてみようというお話です。

f:id:doraTeX:20140803220053p:plain

1. Source Han Sans の CMap(横書き用)

Source Han Sans は特殊なフォントであるため,TeX から使えるようにするには一手間を要します。
具体的には,Source Han Sans は Adobe-Japan1 のような標準化された文字集合を持つOpenTypeフォントではなく,Adobe-Identity-0 と呼ばれる,フォントごとに独自に定義された文字集合を持ちます。

そのため,upLaTeX + dvipdfmx で使用するには,UniJIS-UTF16-H のような,Adobe-Japan1を前提とした既存のCMapファイルは使えません。Source Han Sans専用の独自のCMapファイルを用意する必要があります。

Source Han Sans のGitHubレポジトリに,UniSourceHanSansJP-UTF32-H というCMapファイルが公開されています。ただし,dvipdfmx から使うには,UTF16からのCMapでなくてはなりません。

そこで,UTF32での表現をUTF16に書き換えて,UTF16からのCMap を作成しました。
ZRさんの tcsourcehans パッケージ,あるいは 拙作のその派生版パッケージ を使うと,upLaTeX + dvipdfmx で Source Han Sans が使えるようになります。

2. map ファイルの unicode 指定

「Source Han Sans 専用のCMapファイルを用意する」という方法以外では,dvipdfmx の map ファイルの指定を unicode にするという方法も考えられます。これは,CMapファイルを経由せず,Unicodeでフォントに直接アクセスするという指定です。

この方法の方が,CMapファイルを用意する必要がなくて簡単なのですが,TeX Live 2014 の dvipdfmx にはバグがあるようで,mapファイルの指定を

upgbm-h unicode SourceHanSans-medium.otf

のように指定しても,正しくグリフを埋め込むことはできません。

しかし,昨日 dvipdfmx にバグ修正が入ったようですので,TeX Live 2015 からは unicode 指定で正しく埋め込むことができるようになるはずです。

3. Source Han Sans の縦書き用 CMap

さて,TeX Live 2015 で無事に unicode 指定が使えるようになったとしても,縦書きには対応できません。

upgbm-h unicode SourceHanSans-medium.otf -w 1

のように -w 1 オプションを付ければ,グリフを90度回転して出力することが可能ですが,単純にグリフを90度回転するだけでは,句読点や括弧類といった約物の位置がおかしくなるため,正しい組版は実現できないのです。

縦書きを正しく実現するには,約物などを縦書き用グリフに置き換えて出力するための,縦書き用CMapファイルが必要になります。

Source Han Sans のGitHubレポジトリに公開されているCMapファイルはUTF32-Hのみで,縦書き用CMapファイルは公開されていないようでしたので,GSUB table の vert feature の記述をもとに,自分で作成してみました。UniSourceHanSansJP-UTF16-V という名前で公開しておきました。

4. upLaTeX + dvipdfmx + UniSourceHanSansJP-UTF16-V を用いた Source Han Sans による縦書き実験

実験として,青空文庫に公開されている宮沢賢治『セロ弾きのゴーシュ』のデータを用いて,縦書きで組版してみました。
実験ですので,upLaTeXのデフォルトの状態に対して,機械的に

  • 明朝体 → Source Han Sans Normal
  • ゴシック体 → Source Han Sans Bold

と置き換えてあります。
ちゃんと使う際には,PXcopyfont パッケージ を用いるなどして,専用の tfm/vf を用意し,それを使用するパッケージを作成するのがよいでしょう。

組版結果のPDF],[TeXソース

[追記]縦横両対応パッケージの公開 (2014/08/21)

ZRさんの tcsourcehans パッケージ を拡張することで,縦横両対応パッケージを作成しましたので,GitHubにて公開しました。