なかせん(中村 英雄)氏製作/フリーウェア/1996年5月〜/入手はFSW倉庫にて
自分のウェブサイト、いわゆるホームページを持っている人なら HTML(Hyper Text Markup Language) がその表示の中心となっていることはご存知のとおり。ちょっとかじった人であれば、 HTML は SGML を土台として成り立っており、さらに XML が SGML に代わる次の土台として提唱されていることも知っていることと思う。
HTML のどこらへんが SGML なのかというと、おおざっぱに言えば <tagname> と </tagname>で囲まれた部分が tagname によって定義された何らかの意味をもつ所。もちろん HTML では tagname に h1 や p などが使われる、ということになるわけだ。
世の中には MSX で動く WWW ブラウザを作ってしまう方がいるらしい。が、それは置いといて、印刷制御に SGML に似た形を採用した MSX 用フリーソフトがあった、と書いたらどう思われるだろうか。こんな堅苦しい文章を読んでいる濃い人は、その内容をご存知の方ばかりなのかもしれないが、せっかくここまで出だしを書いたので紹介させていただきたい。
一応、作者のなかせん氏には失礼ながら今更知ってど〜する系の話であるのはお断りしておく。
MSX用の、あるいはWindows普及以前のプリンタを使ったことのある人なら、エスケープシーケンスというのを聞いたことがあるだろう。 LPRINT CHR$(&H1B)"X";"ABCDE"
とかやると ABCDE が下線付きで印刷される等のアレだ。ESCコード、つまり CHR$(&H1B)
を使わない物をひっくるめたプリンタ制御コードをこの APRICOT ではタグの形で表す。
<u>ABCDE<\u>
や <下線>ABCDE<\下線>
という指定で下線をひく。<bl>ABCDE<\bl>
や <太字>ABCDE<\太字>
という指定で字が太くなる。
APRICOT では、この <u><bl>
等をマクロと呼ぶ。
実はプリンタの種類ごとにマクロを定義したファイルというのが別にあって、印刷の際にはこのプリンタ毎の定義ファイルを <include ファイル名>
の形で読み込むことになっている。つまり、この定義ファイルだけ差し替えてしまえば、MSX 用のプリンタでも ESC/P 用プリンタでも同じ印刷用テキストを流用できるという寸法だ。ちなみにはじめから MSX, ESC/P, ESC/P v2 用の定義ファイルが用意されていて、下線、太字など基本的なものは共通して使えるようにしてくれている。
これがなかなか面白い。
太字だの下線だの4倍角だのとわりと簡単に指定できてしまう。ただ、残念なことにその手軽さのままでワープロ並みの表現をするのはちょっと不可能だ。内部でやっているのはおそらく単なるコード変換なのだろうから当然といえば当然なのだが、ちと積極的に使っていこうとは(発表当時でさえ)思えなかった。
何か面白い使い方はないかと案じながら、いまだに何も思い付かないでいる。
さて、APRICOT のマクロは、定義ファイルでなくとも各自が(基本的には)自由に定義することができる。
たとえば、 <def 見出し 太字>
と書けば、それ以降の <見出し>
の後の文字は太字で書かれることになる。もちろん「太字」の代わりに複数の任意のコードを表現することができるから、 <見出し>
以降を太字の斜体の倍角の下線付きにすることもできる。
さて、ここで私が何をやろうとしたのかおわかりだろうか。
そう、例えば <def h1 太字 横倍 縦倍>
とかやってみたら。
また、例えば<def br 改行>
とかやってみたら。
「HTML ファイルを印刷できるのではないのか?」
しかし残念ながらそれはできない相談だった。
マクロ名には &H20 〜 &H3f の文字は使えないことになっている。
このサイトの頁は一つ残らず2バイト目でアウトだ。嘘だと思うなら今すぐ HTMLソースの表示」をさせてみてはくれまいか。
もっとも、上記の話は相当趣味が悪い。 APRICOT の説明には SGML なんて単語はでてこないからだ。
代わりに 「マークアップ方式」なる言葉が出てきて「 HTML もその一つだ」としており、その対比方式に「 WYSIWYG 方式」を挙げている。
おそらくはこの時点でなかせん氏は SGML という言葉を知らなかったのだろう。
もし知っていたなら、文法を SGML に合わせ、そのことで HTML と何らかの形で互換性が取れるようにできたからである。あまりにもあんまりな結果論は承知の上で書いている。
ちなみにこの文章を書いている本人ももちろん SGML は知らなかった。それどころか HTML すら知らず、やっと SZMPR が安定したその少し後くらいの時期だったのだ。2年後にWebサイトを開設するなどとは微塵も考えていなかった頃である。
このソフトを見た当時、私は整形印刷ソフトとして興味を持ち、自分でもちょっとデータを作ってみた。が、いかんせん作ったデータは少なくともそのままでは他に応用が利かなかったりするわけで、あまり面白いとは思わなかったことを今ではちょっと後悔している。
話を戻す。
APRICOT のマクロはこうして SGML のタグとは似て非なる物になっているが、 HTML 等を意識して作られたと思われる部分がいくつかある。
APRICOT では <マクロ名>
と <\マクロ名>
には何の因果関係もないはずだが、添付されている定義ファイルのなかにはこの <\マクロ名>
の形の物が多めに定義されている。プリンタシーケンスコード上では黒色にするコマンドを <\赤>
等にも割り付けていたり、パイカ文字にするコードを <\elite>
等にも割り付けていたり、といった具合だ。
もっと強烈なものに <p>
なんてのがあって、これは「改行」だそうだ。 飽くまで HTML に似て非なるものなのである。(注: HTML における <p>
〜 </p>
は段落 ( Paragraph ) を定義するためのものであって決して改行ではない。内田さんのサイトなどに HTML 4.0 勧告邦訳があるので参照のこと。)
ところで、このAPRICOTのセットの中に、もう一つ面白い別のソフトがある。
"APRIMG"というそのソフトは、やはり同様のマクロを使うやり方で指定の画像ファイルを印刷できるというもの。同様の、というからには MSX と ESC/P のグラフィック印刷コードの違いを吸収するような機構が存在している。その上で SCREEN 5,6,7,8,10,11,12 の指定、拡大縮小、カラー印刷の場合はCMYK(シアン、マゼンダ、イエロー、ブラック)の濃度調整などが出来る。
画像ファイルに使えるのは上記画面モードのベタファイル(インターレース機能を使用した画像の時はは2ファイルに分けたもの)で、そのなかから印刷したい矩形範囲の指定が可能。これとは別にプリンタ側の単位で何ピクセル×何ピクセルを用いて印刷するという指定ができ、先の拡大縮小はこれを用いることで実現する。
その気になれば紙の上での印刷位置の制御なども設定は可能。そうなるとプリンタ依存の方面でちょっと怪しくなってくるきらいがあるけれど。
・・・それにしても、今や個人使用でも頁単位の印刷が普通となり、プリンタ制御コードを使って書体を変えて印刷、なんてのは遠い昔のことになってしまった。冒頭に知ってど〜する系、と書いたのも納得いただけることと思う。
ただこのソフト、ひょっとしたらラインプリンタとページプリンタの垣根をMSX上で取り払った例として発展する可能性もあった。そのまま忘れ去られるにはあまりにも惜しいソフトだと、今でも、いや今だからこそ思わずにはいられないのである。
さらに言えば、ゆくゆくは APRICOT と APRIMG を統合してそれこそ HTML の直接印刷なんてことになっていたら ! ああ、妄想は膨らむばかりなのであった。
(1999/09/08)