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)すべて指定できる。

pango gravity

縦書きと font feature

縦書き専用フォントでもそれなりに OTF font feature が動作する。

嵯峨本フォントプロトタイプの "liga" on を設定すると、 連綿が OTF font feature の合字としてレンダリングされる。 なお、この連綿では、「と」および「か」が変体かな「と(登)」および「か(可)」となっている。

$ pango-view --output sagabon_render001.pdf --font '嵯峨本フォントプロトタイプ 24' --markup --text '<span font_features="&quot;liga&quot; on">いとおかし</span>' --gravity east --rotate -90
'<span font_features="&quot;liga&quot; on">いとおかし</span>'

ただし、複雑なタグを使うと文字が崩れるようだ。(Pango 1.38現在)

$ pango-view --output sagabon_render002.pdf --font '嵯峨本フォントプロトタイプ 24' --markup --text 'いとおかし <span font_features="&quot;liga&quot; on">いとおかし</span>' --gravity east --rotate -90
'いとおかし <span font_features="&quot;liga&quot; on">いとおかし</span>'

このバグがあるせいで pango の縦書き利用の利便性が大幅に下がって残念仕様。

2018-11-04追記: 現在の pango だと、この文字崩れのバグは直っているようだ。(Pango 1.42現在)

'いとおかし <span font_features="&quot;liga&quot; on">いとおかし</span>' (Pango 1.42)

参考文献