[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 2296] trevize1, estoril1.



  こんばんは、川合です。

  とりあえず漢字表示に関する機能の追加が完了したので、ベータリリ
ースします。trevize1とestoril1です。点を描画するためのルーチンを
テストし終ってからリリースしようと思っていたのですが、待たせてし
まうことになるかもしれないので、とりあえずリリースすることにしま
した。

  ・漢字などの全角文字や半角カタカナを表示可能。

  ・グラフィックボックスに対してラインを引く速さが向上(しかし、
    i486 TOWNS以外ではその差を測定することはできませんでした)。

  ・ASKAのバージョンアップに伴い、TAPI0を改良。

  さて、今回の目玉はなんといっても漢字表示です(笑)。しかし、tr
evize1やestoril1だけでは漢字は出ません。というのは、フォントファ
イルが無いからです。

  ということで、フォントファイルジェネレーターがあります。gkfnt0
ってやつです。これの使い方や仕様を説明します。

  使い方は簡単で、アーカイブを展開してそのディレクトリの中に、

    ・ANK16.FNT
    ・KANJI16.FNT

の2つのファイルをコピーしておいて、DOSプロンプトからgenkfnt0.exe
を実行します。そうするとすぐにJPN16.BINというファイルができるは
ずです。・・・なお、先の2つのフォントファイルは、Windowsディレク
トリの中にあります(Win95の場合)。

  さて、このJPN16.BINはそのままですとあまりに大きいので(244KB)
exe2bin2を使ってパックします。大きいからパックするというよりも、
パックしてあることを前提にtrevize1やestoril1は書かれているので、
パックしなければ正しく読み込めません。パックするには、

prompt>exe2bin2 -n -c JPN16.BIN JPN16.FNT

とします。これはかなり時間がかかります。覚悟してください(笑)。
うまく行けば、半分近くのサイズ(137KB)になるはずです。

  さて、JPN16.FNTが準備できたら、フロッピーディスクにコピーして
おきます。

  そして、trevize1(面倒になってきたので以下ではestoril1について
は言及しないが、もちろん同じ操作でできます)を起動し、JPN16.FNT
が入っているディスクを入れ、ディスクを入れ替えた場合はInsertを押
してディスクキャッシュを入れ替えて、そしておもむろに「F5」を押し
ます。

  この「F5」を押すという動作は重要です。この動作によって、OSASK
はJPN16.FNTを読み込み始めます。起動直後から日本語フォントを自動
的にロードしたりはしません。

  ロードが完了したあとは、日本語フォントを使ったアプリを実行でき
ます。たとえば、test023です。これがどういうアプリかということに
ついてはソースを見てください。凝ったことは何一つしていなくて、単
に漢字を含む文字列を表示しているだけです。このソースをコンパイル
するためには新しいgglib07aが必要なんですが、このリリースはもうし
ばらくお待ちください。

  これからは使い方ではなく、仕様の説明です。

  まず、「F5」を押さなければいけないというのは不便です。起動直後
にJPN16.FNTをサーチして自動的に読み込んでしまえばいいというのは
確かに一理あるのですが、OSASK本体のサイズに対して137KBというのは
あまりに大きすぎます。大半のアプリに日本語が必要だというわけでは
なく、日本語フォントなんてなくていいから速く起動してほしいという
状況の方が多いでしょう。そのために、このような仕様になっています
。

  また「F5」をわざわざ押さなくても、日本語フォントをアプリが要求
しているのにフォントがロードされていなければ、OSASKは自動的にJPN
16.FNTをディスクから探します。したがって、test023とJPN16.FNTが同
じディスクに入っているなら、「F5」を押す必要はありません。

  フォントをロードすると、空きメモリがかなり減ります(ロードしな
くても、OSASK ver.1.7よりも結構減っています)。これは、テンポラ
リとしてmallocしたメモリをシステムに返しきれていないからです。ち
ゃんと管理させることもできるのですが、それはできればファイルシス
テムや仮想記憶がまともになってからやりたいです。・・・このような
事情のため、最低必要メモリは3MBです。

  JPN16.FNTはJPN16.BINを単にパックしただけですが、このJPN16.BIN
でさえも、元になったKANJI16.FNTよりもわずかに小さいサイズになっ
ています。これは、KANJI16.FNTのフォーマットがあまり賢くないから
です。一文字も捨てていません。

  JPN16.FNTを生成するのは結構手間ですので、こちらで用意したもの
をダウンロードできるようにしたいのは山々なんですが、著作権の問題
がありますのでそれもままなりません。それで、[OSASK 1863]で話題に
なったライセンスフリーなフォントからJPN16.FNTを生成してしまえば
いいのですが、今はちょっと忙しくてできません。時間が取れれば着手
したいのですが、今月の末になりそうです。もしどなたかやってみたい
という方がおられましたら、お願いしたいです。JPN16.BINのフォーマ
ットは非常に単純明快でして、それはgenkfnt0.cに書いてあります。分
からなければご質問ください。・・・なお、Windowsに固有のフォント
などについては、もし代替フォントがなければスペースにしておいて構
わないと思います。

  TOWNSには内蔵のROMにJISの第一水準と第二水準の漢字が収められて
いますので、これを利用すればフォントファイルのサイズを大幅に縮め
ることはできます。しかし、このような工夫はAT版には生かせないので
、とりあえず後回しです(すみません)。

  現在の仕様ではWindowsよりの仕様ですが、これは別に他の機種依存
文字を軽視しているわけではありません。フォントさえ入手できれば、
他の機種依存文字をWindowsの機種依存文字と混在して表示できます。
同様の原理で、フォントさえあれば、中国語と日本語とさらに他国のや
やこしい文字を混在表示することも可能です。

  test023.cをご覧になれば明確ですが、日本語を表示できるようにな
るためには、キャラクターセットを定義しなければいけません。いつも
の0x00c0ではだめです。面倒かもしれませんが、とりあえずはこれで我
慢してください。もし我慢できないほど不便でしたら、ぐいぐい01を策
定する時に改善しましょう。

  ウィンドウタイトルに0x00c0以外のキャラクターセットを許すかどう
かというのは一つの問題です。これはシェルの設計方針に深く関係する
ので、とりあえず0x00c0だけにしておいてください。

  tviewc01の日本語対応版としてtviewc02を計画しています。もうしば
らくお待ちください。

  ・・・これで、書き忘れはないはずです。書き疲れました(笑)。

  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/