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

[OSASK 1870] Re: PDS fonts



  こんにちは、川合です。


MURAKAMI Reki さんは 2001/08/06 23:52:24 の「[OSASK 1869] Re: PD
S fonts」で書きました:

>> >また、内部文字コードの扱いもちょっと気になっています。
>>   どんな点が気になるのか、教えていただければ参考にいたします。
>これはまだよく理解していないまま言っているのですが、GUI系のAPIでは内部でchar
>文字をintに変換してますよね? これを前のメールでは内部文字コードと呼んでし
>まったのですが、これがマルチバイト文字の扱いとどうからんでくるのかを気にして
>いるのです。書いててちょっとずれてるような気がしてますので、あまりつっこまな
>いでください…… :-)

  はい。では突っ込むことはしないで(笑)、現在実装・近日予定して
いる仕組みを説明いたします。

  まず、文字コードはすべてintで扱っています。charで扱っていると
ころが確かにありますが、それはアプリの中だけです。ASKAで書かれた
アプリは最初から文字をintで扱っていますが、C言語の場合はそれだと
C言語の常識とは大きく異なってしまうので、APIを呼ぶ前にコンバート
しています。

  マルチバイト文字、たとえば全角文字ですが、これは以下のような仕
組みを考えています。例として、「ABC漢」という文字列を表現する場
合、

    0x00000041 0x00000042 0x00000043 0x00003482 0x00003483
        'A'        'B'       'C'     '漢'の左側 '漢'の右側
 
という5ダブルワードで表現します('漢'のコードはJISコードをベース
に、ちょっと都合よく再編した独自コードです・・・しかしこれはUNIC
ODEをベースにしたものでもいいですし、他の文字コードでもなんでも
いいのですが)。

  一文字を表現するために8バイトも食っていますが、僕は気にしてい
ません。他の文字の2倍の大きさなんですから、それに比例してもいい
んじゃないかと思っています。

  誤解されたくないのですが、これはぐいぐい00仕様の「文字表示ファ
ンクション」に限定した話です。今後、ファイル内の文字処理やキーボ
ードからの漢字入力など、いろいろなところで文字コードをどうするか
考えなくてはいけないでしょう。そしてとりあえず、それらを統一的に
扱おうという意図は今の僕にはないのです。そりゃあもちろん、統一的
に扱えればそれにこした事はありませんが、それはまた今後の課題です
。

>ところで、VESA利用の画面ドライバについてですが、VESAは結局リアルモードのBIOS
>を利用するもので、プロテクトモードフルスクラッチのOSASKからでは呼び出しにく
>いのではと思っていました。VESA対応が復活できるのであれば、ぜひ導入したいです

  そうです。プロテクトモードからVESAファンクションを呼び出すのは
楽なことではありませんでした。しかし、そのために簡易エミュレータ
ーを作ることでこの問題を克服しました(このエミュレーターはOSASK/
AT ver.0.8のときにとりあえず完成しています)。

>ね。IOポートをたたくだけのVGAよりも互換性が相当低くなるのでしょうか??

  互換性はやはり落ちます。まず、VESAファンクションをサポートして
いないビデオカードが結構存在します。最近のものだからといってサポ
ートしているとは限らないようです。

  現在のバージョンでもF2を押すことで800x600に切り替えることがで
きますが、これは上記のエミュレーターを通じてVESAファンクションを
使った結果です。これができないビデオカードはVESAファンクションが
使えないか、もしくは800x600x4bitのモードをサポートしていないので
しょう。

  村上さんはきっとご存知だとは思いますが、VESAモードではVRAMをウ
ィンドウアクセスしなければいけません。これは非常に面倒です。そこ
でいくつか実験してみたところ、たいていのビデオカードではプロテク
トモード用のVRAMアドレスに直接アクセスするだけで、VESAモード中で
あっても、難なくアクセスできるようです。これで、ウィンドウ範囲を
切り替える手間から開放され、ドライバーがかなり書きやすくなります
。実際OSASK/AT ver.0.8の頃の1280x1024x8bitドライバーは、そうやっ
てVRAMにアクセスしていました。


  それでは。

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