リリース v0.14.0

Kusuma Plava
(クスマ・プラヴァ) — Vertical-Writing Editor

木漏れ日と花筏。横で書き、縦で組む。
左の執筆ペインに流すように書けば、右の原稿用紙が縦に埋まっていく。

GitHub リポジトリ

まだ発展途上のソフトウェアです。文書ファイル(.chkpf・テキスト・青空ZIPなど)を開く前に、バックアップをお取りください。
Kusuma Plava の執筆モード — 左の連鎖テキストに横書きで書かれた文章が、右の升目つき原稿用紙へ縦書きで組まれている

「書く」と「組む」は、別の仕事だった。

小説や教材を、縦書きの本に仕立てる。ワープロは縦書きの本文を 書けますが、「版面に枠を置いて文を配る」発想の道具ではなく、 図版の回り込みは文中のオブジェクト位置と噛み合わず、 ずれやすいものでした。本格DTPは縦組・回り込み・フレーム連結を すべて持つ本命ですが、職業道具の重さと価格が伴います。 執筆エディタは書くことには快適でも、組版はまた別の工程でした。

とりわけ教科書や挿絵つきの本では、作業の発想順序が 「先に絵の位置を決め、文章をそこへ流し込む」 形になります。「方眼紙 × 実寸 × 縦書き文字送り × 回しこみ」の 4点セットを軽い操作感で持つツールは、ありませんでした。

Kusuma Plava は、横書き版の3点セットを先に実現した Silim Murlun をフォークし、 縦軸へ倒したエディタです。「絵を置いてから文を回す」を そのまま操作にした、本を作る人のための軽量縦組エディタ—— それがここの立ち位置です。

横で書く。縦で組む。

執筆モードは2ペイン構成です。左の連鎖テキストペインに 横書きでガンガン書いていくと、右の版面が縦書きの原稿用紙として ガンガン組まれていきます。入力面が横書きなのは、IME と 執筆速度の相性を考えた結論——「書く」と「組む」を 分けたことが、このエディタの芯です。

四六判・縦43字×横17行の版面に長編小説が組まれた画面。62ページ・34,104字と進捗が表示されている

  • 字下げと話区切りは日本語式 Enter で段落頭に全角1字の字下げ。*/◇ の話区切りはボタン一発で挿入。選択範囲の太字・斜体・下線と書式解除にも対応します
  • 文字数は作家の共通言語で 総字数・選択範囲・400字詰換算を常時表示。目標字数と進捗バーを設定でき、応募規定の「400字詰N枚」にそのまま対応します
  • 検索・置換 Ctrl+F で検索バー。次/前・1件/全置換に対応し、検索ジャンプは版面のスクロールと同期します
  • 自動保存と下書き復元 1.5秒デバウンスで文書全体を IndexedDB へ保存。次回起動時に下書きから再開できます
  • ペインと版面は双方向 キャレット位置へページが追従し、「頁」「文」ボタンで版面とテキストを行き来できます
  • 青空文庫をそのまま読む .txt の直接読込に加え、青空ZIP書庫(txt+同梱画像)を丸ごと取り込めます。[#…]注記は描画側で解釈され、文頭の凡例ブロックは組版から除外します
  • テキスト出力は投稿用に なろう・カクヨム提出用のプレーンテキストを出力。入力糖衣は |《》 正規形に整えて書き出します(UTF-8 BOM 付き)
  • 仕上げは組版モードで レイアウト編集(テキスト連鎖・画像・シェイプ・整列)は組版モードに格納。書くときは執筆モード、版面を詰めるときは組版モードです

原稿用紙は、日本語を知っている。

描画面は1字1マスの字セルとルビ欄でできた升目です。 「升目 縦N字×横N行」を指定すれば字サイズは自動で決まり、 版面 spec は用紙サイズから独立して持てます—— 実務の版面指定が「字サイズ×行字数×行数」で来ることへの対応です。 400字詰・文庫・単行本・四六判のプリセットも用意しています。

  • ルビ記法は青空文庫テキストフォーマット準拠 |親字《ヨミ》 と 親字《ヨミ》(直前の漢字連続)を受理。青空文庫の注記書式と同じものを、なろう・カクヨムも受け付けるため、既存原稿のコピペがそのまま動きます。入力糖衣 親字(-ヨミ-) も内部で正規化されます
  • 禁則は実務ルール準拠 行頭禁則(句読点・中点・感嘆疑問・閉じ括弧・長音繰返し・小さい仮名ほか)と行末禁則(開き括弧)を、分割点の境界調整で処理します
  • 半角は縦中横と回転の使い分け 短い連続は縦中横、長い連続は1字1マスの回転表示。計測と描画が同じトークナイザを共有するので、版面と見た目がずれません
  • 傍点はルビ欄の「・」 青空文庫式の傍点注記は、縦組ではルビ欄に点として描かれます

絵を置いてから、文を回す。

「画」メニューや貼り付けで版面へ画像を置くと、 文章はそれを回りこんで組まれます。注記の位置へ 「次の段から画像+次の段から本文再開」のゾーンで配置し、 収まらなければ改ページ——教科書や挿絵つきの本の 版面設計を、そのままの発想順序でできます。

左が編集画面、右が印刷プレビュー。升目に沿って 回りこんだ版面が、そのまま実寸で出ます。

編集画面 — A6判のページ。左上に置いた社殿の画像の右側と下を、縦書きの文章が升目に沿って回りこんでいる

編集

印刷プレビュー — 升目の枠線を外した同じ版面

印刷プレビュー

  • 画像の編集は版面の上で 配置した画像は移動・縮尺・数値指定で調整でき、ドロップで最上段/最下段へ吸着。縦横比ロックの解除もできます。画像の位置と回りこみは注記形式で連鎖テキストへ記録され、書庫にも保存されます
  • 青空文庫の画像注記にも対応 [#…入る]注記を持つ青空ZIPは、読み込むと空枠を生成して同梱画像を自動充填。「注記の次の段から画像+次の段から本文再開」のゾーンで版面に組み込まれます

教科書の版面は、段でできている。

中学の教科書や文芸誌、学習教材のような大きな版面では、 段組が事実上の必須です——縦書きの1段は、1行が長すぎて 読めないからです。1〜3段の段組と段間指定に対応し、 文章は右の段から左の段へ、ページをまたいでも 連鎖のまま流れていきます。

B5判2段組の見開き — 右の段から左の段へ、文章が升目を渡っていく

  • 右綴じの見開き表示 spread 表示では綴じ側の余白(ノド)が左右ページで反転。綴じたあとの見え方を、編集しながら確認できます
  • 柱(はしら)とノンブル 書名や章名を柱として版面の余白に載せ、ノンブルを下中央に配置。製本の体裁を印刷でそのまま出せます

印刷は、ブラウザに任せる。

独自の PDF エクスポート機能は持ちません。ブラウザの印刷機能に 任せる方針で、その代わりに実寸出力を真面目に作り込んでいます—— @page を用紙に合わせて設定し、ノンブルを下中央に 載せ、升目の印刷出し分けと用紙色の透過に対応します。 印刷先に PDF を選べば、版下 PDF もこの経路で完結します。

メニューの「印刷」はアプリ内のプレビューオーバーレイを開き、 そこからブラウザの印刷を呼び出します。

印刷ダイアログ — 62ページ分の縦書き版面がプレビューされ、送信先に PDF が選ばれている

名前の由来

Kusuma はサンスクリット語で「花」、 plava は「筏・浮くもの」。 合わせて「花筏」——散った花が流れに乗って筏を成すように、 横書きで書いた文が文字送りに乗って縦の版面を成す。 この製品の姿を、そのまま名指しています。

出自は Silim Murlun のフォーク。 エンジンの Kimetron Isle と 文字送り中間層の INIMBAL を継承し、縦版の組版計算は inimbal 側で「1字=1単位」のカウント方式へ置き換えられています。

正直な現状

小説一冊分の執筆から印刷まで通るところまで来ていますが、 まだ発展途上です。注意点も正直に書きます。

  • 開く前に、バックアップを 発展途上のソフトウェアです。作成・読込する文書ファイル(.chkpf・.slm・テキスト・青空ZIP)は、開く前に必ずバックアップをお取りください
  • 品質向上は継続中 v0.9.0 時点で把握していた不具合(青空ZIP読込直後のフィット未適用・テキスト読込の空行・判型変更時の画像追従)は v0.10.0 で修正しています。印刷PDFへのフォント埋め込みは環境依存の確認中です
  • 日本語のみ UI・ドキュメントとも日本語版のみです
  • ホスト版はありません リポジトリを clone して npm install → npm run dev でローカル起動します。データは外部へ送信されません
  • ローカルファースト 保存は独自書庫 .chkpf(zip: doc.json+画像バイナリ)。旧 .slm も読み込めます。共同編集・クラウド保存はスコープ外です

ソースコード

MIT ライセンスで公開しています。TypeScript + React + Vite 製、 app → inimbal → kimetron(vendored workspace)の モノレポ構成です。npm install → npm run dev で起動します。

github.com/cuculhart/kusuma-plava