このプロジェクトについて
rhwpはRustとWebAssemblyベースのオープンソースHWP/HWPXビューア兼エディタだ。HangulとComputerの公開文書を参考に開発しており、Hancomとの提携・後援・承認関係がない独立プロジェクトであることを明記する。MITライセンス。
## 文書処理の範囲
HWP 5.0バイナリ(OLE2複合ファイル)、HWPX(Open XMLベース)、HML(HWPML 2.9/2.91、検証済み構造のみ限定サポート)をパースする。段落・表・テキストボックス・画像・数式・チャート、ヘッダー/フッター、背景ページ、脚注/尾注を扱う。
レンダリングは行間・インデント・整列・タブストップ、セル結合と罫線スタイル、セル数式計算、段組レイアウト、段落番号/箇条書き、縦書き、奇数/偶数ページ別ヘッダー、背景ページ、オブジェクト配置(本文と一緒に/文字のように/文字の前後)をサポートする。数式は分数・根号・添字、行列(MATRIX/PMATRIX/BMATRIX/DMATRIX)、cases、EQALIGN、PILE系、大型演算子(INT/SUM/PRODなど)、REL/BUILDREL、極限、筆算、ギリシャ文字と100余りの数学記号を含む。ページ分割は段組分割、表の行単位分割、vposベースの段落位置補正を処理する。
## 出力とレンダラーバックエンド
CLIでSVG、PNG(native Skia機能が必要)、PDFを出力する。PDFはSVG互換パスが基本で、テキストをベクターパスに変換するオプションとバイト再現性を提供し、native Skia直接バックエンドは選択肢である。WebではCanvas/CanvasKitレンダリングを使用し、共通のpaint IR(PageRenderTree → PageLayerTree)を置き、legacy/layered SVG、Canvas2D、CanvasKit replay、native Skiaバックエンドが同じ再生平面契約を共有する。デフォルト要求はCanvas2Dで、`?renderer=auto`を明示すると文書事前検査を通過した場合にのみCanvasKitに固定される。複合shaping文字、古ハングル・PUAの組み合わせ、構造組版符号の表示などは該当文書全体をCanvas2Dに固定する。視覚回帰CIでレンダリング差分とPDFゲートを検証する。
## 利用経路
- Webデモ(GitHub Pages)、Chrome/Edge/Firefox拡張、VS Code拡張(Open VSXを含む)
- npmパッケージ:`@rhwp/editor`(iframe埋め込みエディタ)、`@rhwp/core`(WASMパーサー/レンダラーAPI)
- CLI:export-svg、export-png、export-pdf、dump、dump-pages、info、capabilities
- MCPサーバー内蔵:設定一行でClaude CodeなどMCPホストからhwp_info、hwp_search、hwp_fill_fields、hwp_open・hwp_doc_*セッションツールを使用
- リリースバイナリ:linux x86_64、macOS x86_64/aarch64、windows x86_64とSHA256SUMS.txtを提供
Webエディタ(rhwp-studio)はテキスト編集・書式ダイアログ・表編集とHancom Web起案機互換のhwpctl API層(30個のAction、ParameterSet/ParameterArray、Field API)を提供する。保存はHWP編集保存、HWPX/HML意味保存、HWPX→HWP変換をサポートする。
## 開発方式
Rust 1.93.1基準であり、WASMビルドはDockerで再現する。3,400以上のRustテストとstudio単体/e2e/視覚回帰CIを運用する。プロジェクトは人間の作業指示者が方向とアーキテクチャ決定を所有し、AIを実装倍率器として使う方式を明示的に採用し、計画書承認・コードレビュー・品質ゲートを経る。開発記録はmydocs/ディレクトリに蓄積される。貢献PRはmainではなくdevelブランチを対象に受け付ける。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.