タコ部屋 - デジタルブックに関するTipsあれこれ

デジタルブックに関するTipsあれこれ

1998年 4月 28日 登録

 『タコ壺の会』会員番号3番のRikiが、最近いろいろブックの普及に頑張ってますので、ちょっと調べてみましたら、以下のTipsがわかりました。いやぁ、ブックってホントにすごいですねぇ。

1. タイトルを正しく日本語で表示する方法

 NLK環境下では、ブックのタイトルが日本語であった場合には文字化けしてしまいます。これはブック・リーダーの日本語化が間に合わなかったためということですが、とりあえず日本語を表示することが出来ることがわかりましたので御紹介しましょう。

 この機能は、もともとブックが持っているスクリプト組み込み機能を利用します。本来はページがタップされたときに何か動作を行わせるようなときに使うのですが、これをパッチに応用してページが表示されるときに日本語フォントを使うようにパッチしてしまうという荒技です。ですが、ちゃんと動くようですし、原理的にはMP130でも影響はないはずです。

 スクリプトを書くためにはブックの原稿段階で書く方法もあるのですが、今回は各ページ単位でスクリプトを書かなくてはいけないということと、僕があまりブック・メーカーを知らないという二つの理由から、ブック・メーカーが作ったNTK用のファイルを直接いじることにしましょう。NewtonScriptの知識はほとんど無くても大丈夫でしょうが、あればもちろん楽にわかるでしょう。また複雑なブックになると、こう簡単には行きませんので注意して下さい。

 では実際にそのやり方を説明します。

  1. 通常通り、NTKでコンパイルできる直前までを終わらせます。NTK用のプロジェクトファイルが出来上がったらそれをNTKで開いて下さい。

  2. NTKでプロジェクト・ウィンドウの中から、ブックのソースファイルを開きます。

  3. ブックによって違うと思いますが、先頭からしばらく行ったところに以下のような部分があると思います。ここに赤字で示されているスクリプトを追加します。これがパッチの本体です。

    // Shared Scripts
    gotoDestScript := func() begin
    	if (curRendering = 0) then
    		:TurnToPage(destPage);
    	else
    		:TurnToPage(:FindPageByContent(kioskDest, 0, NIL));
    end;
    
    setTitleFontScript := func()
    begin
    	inherited:?viewSetupDoneScript();
    	
    	local siblings := :Parent():ChildViewFrames();
    	if Length(siblings) >= 2 AND siblings[1] = self then
    		siblings[0].viewFont := @100;
    end;
    
    //styles
    s1 := { // plain
    ...
    

  4. パッチ本体の用意が出来たので、このパッチを、各ページに設定していきます。追加した場所からさらにしばらく行くと以下のような行があると思います。

    // contents
    
    これが本文始まりの合図であり、ここから各ページの定義が始まっています。それに続く c1 := { ... } という部分が、各ページの定義になっています。よく見ると、ユニコード化された文字列とか、viewFontというスロットなどがあることがわかります。その中に、以下のようなscriptsというスロットがあることがわかるでしょうか?

    c5 := {
    	data: "\u305F3002\u
    \u3000305D306E65E54EE56765300130CA30D630FB30A230D830FB30A8\u
    \u30EA30D0535A58EB306F300165E530543068554F984C306E56F366F8\u
    \u9928FF08305D308C306F3001305D306E5F8C4E8C767E5E74306B3057\u
    \u306657304E0B306B57CB6CA13057300166F4306B4E8C53434E09767E\u
    \u5E74306B3057306650767136767A63983055308C308B904B547D3092\u
    \u308230643082306E30673042308B304CFF09306B901A306330664E07\u
    \u5DFB306E66F8306B76EE3092305530893057306430647814947D306B\u
    \u803D3063305F30024E216CB3573065B93067306F57C353CA30689055\u
    \u306330667D198349309275233057306A304430024EBA3005306F3001\u
    \u7C98571F306E677F306B786C7B463092308230633066890796D1306A\u
    \u69545F62306E7B2653F730925F6B308A306430513066304A3063305F3002\u
    \u66F87269306F74E630673042308A300156F366F89928306F702C6238\u
    \u72695C4B306E50095EAB306B4F3C30663044305F30028001535A58EB\u
    \u306E53535B50FF08305D306E811A306B306F3001672C7269306E7345\u",
    	viewFont: s1,
    	scripts: ['viewLineSpacing, 17]
    };
    
    このscriptsの行を以下のように修正して下さい。
    	scripts: ['viewLineSpacing, 17, 'viewSetupDoneScript, setTitleFontScript]
    
    これでパッチをページに追加したことになります。

  5. この作業を全ページに対して行って下さい。ページ数が多いと大変ですが、単純な検索置換で終わる作業でしょうから、一度NTKでファイルを閉じて、エディタなどで作業してしまえば一瞬で終わります。

  6. これで、コンパイルすれば完成です。実際にタイトルが日本語化されているかどうか確認してみましょう。

2. ブックのカスタムアイコンでグレースケールアイコンを使う方法

 NTKの1.6.4を使ってコンパイルすると、プロジェクトの設定画面のところでグレーのアイコンを設定できるようになっています。しかし、これをちゃんと設定しても、なぜかダウンロードしたものは白黒ニ値のアイコンになってしまいます。

 調べてみると、これはどうもシステム側の仕様ミス(バグのことをこういう人もいるのです)である感じがします。ブックのパッケージ自体には白黒アイコンに加えてグレーのアイコンもちゃんと入っていることがわかりました。また、手作業で設定してあげればブックにグレーのアイコンもつけられることもわかりました。ただ、システムがパッケージをダウンロードしたときに、どうもグレーのアイコンを無視してしまうようなのです。

 まあバグかどうかは別として、表示できることがわかったらそれをしないわけには行きません。血が騒ぎます。ただし、これは上で説明したようなブックレベルでのパッチでは済みそうもないことは明らかです。だって、ブックをダウンロードした段階では、ブックは開かれていないのですから、パッチを当てるタイミングさえやってこないからです。ではどうしましょう?

 これは、結局ブックに小さなコードを一緒につけてあげることで解決しました。以下のパッケージをダウンロードして、プロジェクトに追加してあげるだけで、この作業は完了です。

Book Icon enabler 1.0 (2K) をダウンロード

 このファイルをプロジェクトに追加して、再度コンパイルすれば、あら不思議、アイコンは無事グレーになったはずです。あ、もちろん、自分でアイコンを作って、それを設定しないと意味はありませんよ。


Copyright © 1995-1998 Yosuke "Basuke" Suzuki.
このホームページの内容について、ページの無断転載を禁止します。