多言語・装飾対応のリッチテキストレンダリングライブラリ。
minikin によるテキストレイアウト、glyphware(FreeType)によるグリフのラスタライズ、自前のマスク合成による描画を組み合わせて、高品質なテキスト描画を実現する。
- 1行 / 複数行テキスト描画(左揃え・中央・右揃え)
- 多言語対応(CJK、RTL、ロケール別字形)
- フォントフォールバック
- カラー絵文字(CBDT / COLRv1)
- インラインタグによるスタイル変更
- ストローク(縁取り)・影の装飾
- バリアブルフォント(wght / ital / wdth 軸)
- ルビ(振り仮名)
- 逐次表示(文字送り)
- GPU テクスチャアトラス
- 縦組み(JLReq 水準。約物の詰め・禁則・追い込み/追い出し・ルビ・縦中横・圏点・割注・字取り・段組・ページ流し込み)
- PDF 出力(同一の組版結果から画面と PDF を出す。任意ターゲット)
事前準備として VCPKG_ROOT 環境変数を設定する。
# テスト用フォントのダウンロード
make fontdata
# CMake 構成
make prebuild
# ビルド
make build
# サンプル実行
# 直下の data フォルダ参照するのでこのフォルダで実行してください
build/x64-windows/Release/sample_render.exerichtext_lib— 静的ライブラリ(コア機能)sample_render.exe— 動作確認サンプルsample_sequential.exe— 逐次表示サンプルsample_texture.exe- テクスチャグリフ展開サンプルsample_vertical.exe— 縦組みサンプル(ベタ組み・JLReq 組版・ルビ等)sample_vertical_page.exe— 縦組みのブロック組版サンプル(段組・ページ流し込み)richtext_pdf— PDF 出力(任意ターゲット。-DRICHTEXT_PDF=ON、単体ビルドでは既定 ON)sample_vertical_pdf.exe— 同じ組版結果から画面と PDF を出すサンプル
| ファイル | 内容 |
|---|---|
設計.md |
クラス設計・詳細仕様(縦組みは 11 章、PDF は 12 章) |
縦組み設計.md |
縦組みの方針・判断の根拠・フェーズ計画 |
タグ仕様.md |
インラインタグの仕様 |
実装.md |
フェーズ別の実装進捗と積み残し |
本ライブラリは MIT License の下で提供される。詳細は LICENSE を参照。
| ライブラリ | ライセンス | 管理方法 |
|---|---|---|
| minikin | Apache License 2.0 | git submodule |
| glyphware | — | 外部ツリー(GLYPHWARE_DIR) |
| FreeType | FreeType License (BSD-like) | vcpkg(glyphware 経由でも使用) |
| HarfBuzz | MIT License | minikin に内包 |
| ICU | Unicode License | minikin に内包 |
| zlib | zlib License | vcpkg |
| libpng | libpng License | vcpkg |