typeset / jtypeset¶
縦書き・横書きの日本語組版を 1 つのエンジンで行い、同じ組版結果を PDF / SVG / PNG に出すライブラリです。 Python パッケージ jtypeset と、Markdown から日本語の PDF を作るコマンド jtypeset-md が付いています。
まず何をしたいか¶
| したいこと | 読むところ |
|---|---|
| Markdown を書いて PDF にしたい | Markdown → PDF の手引き |
| ゲームのタグ付きテキストを組みたい | タグ記法 |
| Python から段落・表・画像を組んで PDF にしたい | Python ガイド、Python リファレンス |
| C++ から使いたい、組み込みたい | C++ ガイド、C++ リファレンス |
| ソースからビルドしたい | ビルド |
| 中の仕組みを知りたい | 技術解説 |
インストール(Python)¶
pip install "jtypeset[md]" # Markdown → PDF まで
jtypeset-md report.md # → report.pdf
wheel は Windows (x64) / Linux (manylinux_2_28 x86_64) / macOS (Apple Silicon・Intel) の CPython 3.9〜3.13 を用意しています。 ほかの環境は ビルド を見てソースから入れてください。
できること¶
- JLReq に沿った約物の詰め・禁則・追い込み/追い出し・ぶら下げ・両端揃え、Greedy / Knuth–Plass の行分割
- ルビ(グループ/モノ/熟語)・縦中横・圏点・割注・字取り
- 見出しの採番と PDF のしおり、目次、索引、図表番号と相互参照、脚注(ページごとの番号も可)
- 箇条書き、コードブロック(色付け)、表(自動列幅・colspan / rowspan・ヘッダ繰り返し・ページまたぎ)、画像と回り込み
- 段組・段抜き・最終ページの段揃え、柱・ノンブル、見開きの余白
- LaTeX 数式(同梱の MicroTeX、数式フォントで PDF に埋め込み)、グラフなど外部レンダラの出力(SVG)の差し込み
- 文字の装飾: 下線・打消し線(縦組みでは傍線)、影(ぼかし)、二重縁取りなどの多層外観、グラデーションの塗り
- フォント: 同じ family の複数ウェイト/斜体から最近傍を選ぶ、メタデータだけ登録して初回使用時に開く、言語ごとのフォント、
バリアブルフォントの軸指定、OpenType feature(
paltなど) - 欧文の折返しの選択(語/字/折り返さない)とハイフネーション(TeX のパターン)、禁則の強弱、省略記号、タブストップ、 ぶら下げインデント、箱に収まるまでの自動縮小
- 双方向テキスト(アラビア文字・ヘブライ文字を UAX #9 で並べ替え)
- ゲーム向けのタグ記法(
<b><ruby><color><outline><link>…)と、リンク・ヒットテスト・キャレット・ 段階表示のための取り出し口 - PDF はフォントをサブセットで埋め込み、埋め込み許可(fsType)を確認。SVG と PNG も同じ組版結果。カラー絵文字も 3 つで同じ色
出力例¶
同じ Markdown(report.md)を組んだ PDF をそのまま見られます:
- 横組み A4: report.pdf
- 縦組み A5: report_vertical.pdf(同じファイルを
--vertical --paper A5で)
1 ページ目の画像と作り方は サンプル(Markdown と PDF) に。C++ のサンプル(台本・小説・技術文書・レポート)は
リポジトリの samples/ にあります。