プログラム講座 中級編2
- フォントメニューを作る -
中級編2です。今回はエディタやDTPソフト、お絵かきソフトなど数多くのソフトで出てくる「フォントメニュー」の作り方について説明します。
◆ビットマップフォント、Type-1フォント、TrueTypeフォント
今回はフォントメニューについて説明しますが、フォントをめぐる事情は変化がありますので、昔と比べると面倒になったり簡単になったり、いろいろあります。私も最初の頃のは知っているのですが、さすがにGXフォントとかになると、資料も手元にないので、よくわからない部分がほとんどです。
Macintoshで使用できるフォントは大きく分けて3種類あります。まず「ビットマップフォント」。これは昔からあるフォントタイプで、1ピクセルの点の表示/非表示の組み合わせで作成されています。そのため、使用メモリは非常に少ないのですが「拡大/縮小回転」などを行った場合にガタガタ(ジャギーともいいます)が目立ってしまって奇麗ではありません。そこで登場してきたのが、アウトラインフォントです。
Type-1フォントはAdobe Systems(アドビシステムズ)のPostScriptプリンタ用のフォントでした。このPostScriptの文字表示部分のプログラムをMacに移植したのが、ATM (Adobe Type Manager)です。このATMを使用する事でPostScriptプリンタに出力される結果とほぼ同じになり、さらに普通のドットプリンタでも奇麗に表示されるという仕組みになっています。
Type-1フォントはAdobe Systemsが開発したものですが、現在と違って仕様*1が公開されていませんでした。そこらへんの絡み(ライセンス料)があり、怒った(?)アップルとマイクロソフトが共同で開発したアウトラインフォントがTrue Typeです。True Typeは600dpi以上の解像度で文字を表示できない事になっていますが、プログラム上の問題ではなく、ハイエンド=Type-1、ローエンド=TrueTypeといったような住み分けを行うためだとも言われます。
アウトラインフォントには、今は見かけませんが「パラメトリックフォント」というものもあります。これは、漢字の部首などの部品から1文字を構築するという変わった方法でアウトラインフォントを表示しています。
最近ではGXフォントというものもあり、これは文字の組み合わせによって複雑に形状を変化させたりできたりします。が、ほとんど普及していません。
フォントをめぐる事情は複雑で、フォントの扱いに関して扱いが変わっていますが、今回のフォントメニューを作成する場合は、将来的にも変化はないでしょう。
という事で、やっと本題です(^.^b
- *1
- Type-1フォントのヒント情報等については、私のページのアルゴリズムの部屋に解説があります。
◆リソースエディタ
今回はリソースエディタを使用します。記述してある手順で作れば間違いなくフォントメニューを構築できます。よくわかっている人であれば、メニューを作成してフォントメニューを作るだけという一言で終わってしまいます(^^;
FileメニューからNew...を選択します
保存ダイアログが表示されますのでfont.resと入力します
すると以下のようなウィンドウが表示されます。
ResourceメニューからCreate New Resourceを選択します
リソースタイプでMENUを選択します
fontとメニューバー項目を入力します(名前は何でもOK)
入力が終わったらウィンドウを閉じます。
ID番号を変更します
ResourceメニューからGet Resource Infoを選択します。
ID番号を3に変更します。
ID番号を変更してもよいかどうか聞いてきますのでOKを押します。
◆ここからFuture BASICの登場
これでフォントメニューを表示する用意ができました。ここまでできれば9割型できあがったようなものです。今回はフォントメニューにチェックマークなどを付けたりしません。これは次回の講座にて説明します。
先ほど作成したリソースファイルを読み込むには
RESOURCES "font.res"
とします。これでリソースが読み込まれました。次にフォントメニューを作成するのですが、これは以下の1命令でできます。
MENU 3, _resMenu,_enable, "FOND"
これはFONDリソースから現在のフォント名を読み込んで先ほど作成したリソース(ID=3)にくっつけるというものです。
実行結果は以下のようになります。私のマシンにはフォントが大量に入っていて長いので途中で切ってあります。
これで、今回の講座はおしまいです(^^;
知らないと、どうやってフォントメニューを作っているのか不思議な所ですがFuture BASICでは、こんな具合に作成でき1行で終わってしまいますので非常に楽です。ただ、このような説明をした本がない上に、Macだとなんだか偉そうな文章で書いてあって余計に初心者プログラマを排除しているような感じさえあります。本当はFuture BASICで丁寧に解説した本でもあればいいのですが・・・
◆終わりに
今回はフォントメニューの作成について説明しました。次回は、どのフォントが選択されているかを知らせるための「チェックマーク」の付け方について解説します。チェックマーク付ける方が面倒という話もあります。チェックマークを付けると言っても人それぞれのやり方をしているようです。プログラムにも個性は出るものです(^^;
それでは、また次回。
◆今回のプログラムリスト
RESOURCES "font.res"
LOCAL FN initMenu
APPLE MENU "about..."
'File Menu
MENU 1,0,_enable,"File"
MENU 1,1,_enable,"/QQuit"
' Edit Menu
EDIT MENU 2
MENU 3, _resMenu,_enable, "FOND"
END FN
LOCAL FN doMenus
menuID = MENU(_menuID)
itemID = MENU(_itemID)
SELECT menuID
CASE 1 : ' File Menu
SELECT itemID
CASE 1: ' Quit
END
END SELECT
END SELECT
MENU
END FN
WINDOW OFF
ON MENU FN doMenus
FN initMenu
DO
HANDLEEVENTS
UNTIL theProgramEnds
END