Vertical Writing

2024年4月24日更新
今回のテーマは「縦書き」です。
元来、日本語は縦書きが基本です。
上から下へ右から左へと書いていた歴史があります。
しかし、今では小説や新聞などの極一部の媒体でしか見られなくなり、
多くの方がその必要性を感じるのは年賀状くらいではないでしょうか。


その様な背景と多くのプログラミング言語が海外製という事情もあり、
殆どのプログラミング環境で縦書きはサポートされていません。
できないと言われても遣ってみたくなる性格なので遣ってみました。
縦書きを使いたい方には初めの一歩になるかも知れません。
[ 01 先ずは原型です ]
プロデルを使い始めて間もない頃に作成した物なので、
色々と問題が潜んでいそうなので動作確認からです。
Produire V1.5.915の指定をコメントに残していたので、
素直に従うと一応動作しました。

要素の配置は年賀状に特化しています。
通常のはがきの場合には多少の変更が必要かも知れません。
要素は「宛先住所」と「宛先氏名」および「郵便番号」です。
位置決めの参考に年賀状のダミー画像を背景に表示させています。
先ずはどの様な物か動かしてみて下さい。

※ダウンロードは こちら から。
[ 02 バージョン依存を改修してみた ]
取り合えず最新の環境でも動くようにしてみました。
他は何も弄っていないのですが位置がずれてしまったので、
その分の補正もして有ります。
見本なので文字列は決め打ちしています。
実用ソフトにするにはデータから読み込んで、
差し込み印刷が可能にする必要があります。

※ダウンロードは こちら から。
[ 03 横倒しには意味がある ]
既に紹介したサンプルは縦書きですが横倒しです。
勿論、普通に縦に並べる事も可能ですが、
敢えて横倒しにしたのには意味が有ります。
一口に縦書きと言っても縦書き表示と縦書入力とでは全く違います。
書式付きテキストの縦書き版が存在しないので、
縦書きを実現する方法はキャンバス文字の一択です。
キャンバス文字なので表示はできますが、
直接入力する事はできません。

リアルタイムに入力できないだけでなく、
通常の編集作業もできません。
拙作の「年賀状宛名印刷」ではデータ管理と印刷関係が分かれているので、
はがきの紙面上へ直接に縦書きをしないので問題有りません。
しかし、縦書きワープロのような物を作ろうとした場合には、
書式付きテキストの縦書き版が無いとできません。
横倒しはそれを作る為の手始めです。

それに関してはこれから少しずつ作っていく予定です。
既に紹介したサンプルを縦版にするのは難しくは有りません。
送りの方向を変えるだけですので此処では省略します。
今回は正攻法の紹介です。

プロデルのキャンバス文字は途中から縦書きに対応しました。
下記にサンプルが有ります。
https://rdr.utopiat.net/cgi/progbbs/forump.php?mode=viewcode&id=98
サンプルなので簡潔に書かれてありますが8行目が悩ましいです。
「その位置と大きさは、{150,10,50,100}」の部分です。
色々と試しましたが位置だけが必要で大きさに意味は無さそうです。
…でその位置の指定が問題です。

縦書きなので上から下へ、右から左へと書き込まれて行きます。
此処は普通に縦書きの仕様です。
ところが位置指定は注意が必要です。
「150」は書き始めの右肩の位置を左から指定するようです。
次の「10」は普通に上からの指定のようです。
サンプルでウィンドウの横幅が「300」なので、
「150」を「300」にかえて「{300,0}」とすれば、
ウィンドウの右上端から配置できそうですが、
実際にはこの指定だと表示されません。
ウィンドウには枠幅が有るので「300-16」にする必要があります。
これさえ分かっていればキャンバス文字での縦書きは難しくは無いです。