Specification

English 4-Line Writer

この文書は、現在の実装状態に基づいて English 4-Line Writer の仕様を整理したものです。 入力、フォント、描画、出力、保存、PWA 化、および既知の制約を、運用と保守の両方を意識して記述します。

アプリへ戻る

目次

1. アプリ概要

本アプリは、英語初学者向けの 4 線付き文字列画像を生成する単一ページ Web アプリケーションです。 文字列の入力、ローマ字変換、フォント選択、色・線・余白・ワークシート行数などを調整し、 最終的に PNG として保存、または対応環境ではクリップボードへ画像コピーできます。

対象は「英語の書写練習」「教材用見本の作成」「配布用 PNG の作成」です。文書編集ソフトではなく、 4 線付き英字見本を素早く整えることを目的にしています。

2. 画面構成

左側: 設定パネル

右側: プレビューと出力

3. 入力と文字列処理

既定入力

初期表示文字列は Practice writing English です。保存済み設定がある環境では、 その入力値が優先して復元されます。

ローマ字変換

日本語からローマ字への変換は、アプリ内の変換テーブルを用いて処理します。 ひらがな、カタカナ、促音、長音の一部に対応し、入力欄の値そのものではなく描画前テキストに適用されます。

改行と折り返し

4. フォント仕様

同梱フォント

公開版に同梱するフォントは Klee OneKlee One SemiBold です。 現在のデフォルト選択は Klee One SemiBold です。

システムフォント読込

対応ブラウザでは queryLocalFonts() を使って端末内のフォント一覧を追加できます。 これはユーザーの端末に存在するフォントを参照するものであり、アプリがそれらを再配布するものではありません。

手動入力

手動フォント入力欄に値がある間は、その指定がプルダウン選択より優先されます。 見つからない可能性が高い場合は警告を表示します。

プルダウン表示

フォント一覧の option には、それぞれの font-family を割り当てています。 ただしネイティブ select の表示品質は OS とブラウザ依存です。

対応環境では、候補名そのものが各フォントで表示されます。したがって Word 風の一覧に近い見え方になりますが、 実際の描画品質や反映範囲はブラウザと OS のネイティブ UI に依存します。

5. 描画仕様

描画エンジン

描画は Canvas ベースです。文字列は 4 線モデルに沿って 1 行ずつ描画されます。 文字メトリクスはフォント読込後に計測し、可能であれば actualBoundingBoxAscent/Descent を使用し、 未対応時はピクセル走査にフォールバックします。

4 線の構成

各線はフォントメトリクスから算出され、ベースラインは別色で描画できます。

文字間隔

文字間隔は Canvas の標準レタースペーシングではなく、文字単位の描画位置制御で実現しています。

現在の実装では、左右の 4 線自体は十分な長さを保ったまま、文字列の描画開始位置だけを少し内側へ寄せています。 これにより、Live Preview 上で文字が 4 線の端に密着しない見え方になります。

6. ワークシートと行構成

ワークシートモード

見本の下に空の練習行を自動追加できます。追加行数はスライダーで指定します。

最低行数固定

入力行数が不足する場合、指定行数に達するまで空行を補完します。 これらの補完行は、手動空行やワークシート行と同じ空行ギャップルールに従います。

空行間隔

手動空行、ワークシート追加行、最低行数補完行は、通常行より広い空行ギャップを持ち、 4 線どうしの干渉を避けます。

7. 出力仕様

PNG ダウンロード

Canvas から PNG Blob を生成し、タイムスタンプ付きファイル名で保存します。

クリップボードコピー

対応ブラウザでは navigator.clipboard.write()ClipboardItem により画像コピーを行います。 非対応環境ではコピーボタンを無効化し、PNG ダウンロードへの利用を促します。

透明背景

プレビュー上では市松模様を表示しますが、出力画像自体は設定どおりの透過状態を維持します。

8. 保存・復元・初期化

バージョン情報の正本は app-meta.json です。現在のバージョンはサイドバー下部とマニュアル上部で確認でき、変更履歴は CHANGELOG.md で管理します。

主要設定は localStorage に保存され、再訪時に自動復元されます。 保存対象には入力文字列、フォント選択、色、線幅、余白、ワークシート設定、トレース状態などが含まれます。

「保存済み設定をリセット」は、保存済み状態の削除に加え、フォント UI の初期状態も復元する実装です。

9. マニュアルとプロフィール

マニュアル上部には現在のバージョンも表示されるため、表示中の仕様や説明がどの版に対応しているかをフロート内で確認できます。

マニュアルとプロフィールはフロート表示のオーバーレイです。 背景クリック、閉じるボタン、Escape キーで閉じられます。

クリエイターカードにはプロフィール写真、肩書き、外部リンクを含みます。

マニュアルは 使い方フォントガイド詳細仕様 の 3 タブ構成です。 詳細仕様 では同じフロート内でパネル幅を広げ、原版の仕様書を iframe で表示します。 タブ切替時には軽いフェードと横スライド、仕様表示時には幅の遷移を入れています。

10. PWA 実装

キャッシュ名には CACHE_VERSION を使い、公開時には app-meta.json のバージョンと揃えて更新します。これにより PWA 更新時のキャッシュ切り替えを明確にします。

本アプリは manifest、icon、service worker を備えた最小構成の PWA として実装されています。 インストール可能化とローカル shell キャッシュを目的とし、同一オリジンの静的資産を中心に扱います。

現在の service worker は、エントリ文書と manifest を network-first、それ以外のローカル静的資産を cache-first とする方針です。

11. 制約事項