改定の理由と背景 |
TRONには行換えの機能を持つ制御文字として「改行」と「改段落」の二つがあるが、TRONプロジェクトで把握している限りにおいて、「改行」についての実装例が2001年2月の「超漢字3」(パーソナルメディア株式会社製)に至るまでなく、「改行」と「行頭移動指定付箋」に関係する今回の仕様書誤記が顕在化しなかった。
「改行」の機能は「超漢字3」ではじめて実装されたが「行頭移動指定付箋」(いわゆる「字下げ」)と「改行」に関係する動作が、表示と印刷で異なって実装され、そのバグの修正に伴い仕様の確認の依頼があった。
1. 問題の顕在化
[a][b][c]3つの例で共通で、「我が世・・・」の先頭には「字下げ」が指定してある。
[a]では「今」の後ろで、行の巾の右端までいき、折り返されている。「字下げ」が指定してあるため、「日・・・」は「我が世・・・」と先頭が揃っている。
「越えて」の後ろには[改段落]が入っているため、「浅き・・」は左端に戻っている。
[b][c]は「越えて」の後ろに[改行]が入っている。
[b][c]は同じデータにもかかわらず、動作が異なっている。注目点は[改行]のあとの「浅き」の位置。[b]は[a]と同じ結果だが、[c]は「浅き・・」の先頭が「我が世・・・」と揃っている。
ちなみに、バグのため「超漢字3」の印刷の結果は[b]、基本文章エディタの表示は[c]、印刷と画面表示の結果が異なって実装された。
![]()
従来のTAD仕様書 Ver 1.30に基づけば、[b]の動作が正しく[c]が誤りである。
- 3.5.3 行書式指定付箋
行頭移動指定付箋 : 拡張レベル
行頭位置を一時的に移動する。
直後の文字の文字開始位置に行頭位置を一時的に移動する。 改行、改段落、改コラムコード、もしくは、改行、改段落を伴う付箋が出現するまで有効となる。1行内に複数個の「行頭移動指定付箋」が存在した場合は、最初のみ有効となり、2番目以降は無視される。
2. 仕様誤記という結論
TAD仕様書 Ver.1.30に従うと[b]が正しい一方、[b]は[a]と同じ効果になっていて、改行と改段落の違いがない。また、利用上を考えても一つの段落内で行替えする目的でこそ「改行」の意味があり、「改段落」と区別しているのであり、意味論から[c]が合理的である。
この例の場合「字下げ」の機能を果たす「行頭移動指定付箋」の効果が「改行」では終わらないというのが、もともとの考えにもかかわらず、仕様書では「改段落」と区別をしていなかったのは仕様書記載上の誤りという結論に帰着した。
今回の仕様の誤記訂正については、修正による影響を考察した上で、修正による実質上の問題は少ないと考えられるため、TAD仕様書 Ver.1.40として改定を行うことにした。
なお、「超漢字3」の実装については、表示と印刷の実装が異なるバグの状態であったため、「TAD仕様書 Ver 1.40」のWeb上での公開以前に早々にTAD仕様書 Ver 1.40準拠の形で修正版をリリースしてよい旨通知してある。