pango で縦書きとその能力
pango での縦書き
Pango の gravity 指定で縦書きが実現できる。
pango-view(1)
だと、--gravity east
オプション設定を指定すれば良い。
$ pango-view --output ipapgothic_render01.svg --font 'IPAPGothic 24' --text 'pangoで縦書き' --gravity east
--text 'pangoで縦書き' --gravity east
このとき90度傾いてレンダリングされるので、--rotate -90
も付けて文字全体を
90度回転させることで文字の進行方向を鉛直方向に変える。
$ pango-view --output ipapgothic_render02.svg --font 'IPAPGothic 24' --text 'pangoで縦書き' --gravity east --rotate -90
--text 'pangoで縦書き' --gravity east --rotate -90
余談だが gravity east
の east は東洋の東の意味ではなく方向を意味する。
よって東西南北(east/west/south/north)すべて指定できる。
縦書きと font feature
縦書き専用フォントでもそれなりに OTF font feature が動作する。
嵯峨本フォントプロトタイプの "liga" on
を設定すると、
連綿が OTF font feature の合字としてレンダリングされる。
なお、この連綿では、「と」および「か」が変体かな「と(登)」および「か(可)」となっている。
$ pango-view --output sagabon_render001.pdf --font '嵯峨本フォントプロトタイプ 24' --markup --text '<span font_features=""liga" on">いとおかし</span>' --gravity east --rotate -90
'<span font_features=""liga" on">いとおかし</span>'
ただし、複雑なタグを使うと文字が崩れるようだ。(Pango 1.38現在)
$ pango-view --output sagabon_render002.pdf --font '嵯峨本フォントプロトタイプ 24' --markup --text 'いとおかし <span font_features=""liga" on">いとおかし</span>' --gravity east --rotate -90
'いとおかし <span font_features=""liga" on">いとおかし</span>'
このバグがあるせいで pango の縦書き利用の利便性が大幅に下がって残念仕様。
2018-11-04追記: 現在の pango だと、この文字崩れのバグは直っているようだ。(Pango 1.42現在)
'いとおかし <span font_features=""liga" on">いとおかし</span>' (Pango 1.42)
参考文献
- 地獄のジェネレータ: Ruby Advent Calendar jp: 2010の24日目, 株式会社クリアコード ククログ, 2010-12-24
- 嵯峨本フォントプロトタイプ, 嵯峨本フォントプロジェクト, 2012