JIS bdf -> gdr プリプロセッサ
Author: TSUMURA,Tomoaki
Created: 2005/01/31
Modified: 2006/06/28
自分で変換するなんて面倒なことやってられない!
という人はこっちへ。
はじめに
東雲12
Symbian SDK に含まれる fnttran は,Unicode BDF から gdr を生成するための
ツールです。これを用いることで,Series60 端末向けの
追加フォントおよび置き換えフォントを
作成することができます。しかし,好みの JIS BDF から Unicode BDF を
作成するのは,それなりに手間がかかります。
本ページでは,fnttran の前処理を行う script を公開します。
これを使うと,
日本語BDF,半角カナBDF,半角英数BDF から,fnttran で処理可能な
Unicode BDF に変換することができ,手間が軽減できます。
また本 script は,fnttran で Unicode BDF を処理する際に必要となる
gd ファイルも,同時に自動生成します。
免責
- 本 script は,Series60機 全てに対応すると思われますが,
筆者は Vodafone 702NK 以外の Series60機 を所有していないため,702NK 以外での
動作を保証するものではありません。
- 変換を行う際は,変換元フォントのライセンス条項を十分理解し,
問題がないことを確認した上で,自己の責任において行ってください。
- 本script を用いて作成したフォントを使用して生じた何如なる
不具合に対しても,筆者は一切の責任を負わないものとします。
現段階での仕様
開発中です。
バグ報告等いただけると幸いです。
- 個人使用を前提に,UIDは 0x01000000〜0x0FFFFFFF のいずれかの値をランダム生成します。(作成したフォントを2次配布するには,Symbian から正式に UID を取得する必要があります)
- Bold および Italic フラグは,決めうちで 0 です。
- 生成される BDF は,fnttran で処理されることを前提としています。
このため,ヘッダ記述等が BDF の厳密な定義とは異なり,
通常の Unicode BDF としてそのまま使用することはできません。
- 「-JP」オプションを使用した場合以外では,標準フォントの置き換え
フォントとして小さいドットサイズのフォントを用いた場合でも,
絵文字だけはオリジナルの大きさで表示されます。
Table of Contents
-
What's New?
- 更新履歴です。
-
必要なもの
- フォント作成に必要となるツールおよびソースの説明。
プリプロセッサもここでダウンロード可能。
-
準備
- フォント作成のための準備。
-
使い方
- プリプロセッサの使い方と,フォント作成の具体的な手順。
-
bdf2gdr.pl オプション一覧
- プリプロセッサで使用できるオプションリファレンスです。
-
フォントのインストール・アンインストール
- 作成したフォントを実機上にインストール・アンインストールする手順。
-
絵文字について
- 702NKの絵文字についての免責。
-
謝辞
- お世話になったプログラム等。
- 2006/06/28
- SYMBOL24.HEX を公開。
目視による確認だけ行っており,実機上では未テストのため bug
が混入している可能性があります。
- 2006/01/31
-
bdf2gdr.pl v.3.12:
- 0x00 〜 0x1f のコントロール文字グリフを自動的に削除します。
- JIS bdf のみへの対応版はこの版が最後です。次の版からは multilingual
対応になり,多少の仕様変更があります (予定)。
- 2005/08/30
-
bdf2gdr.pl v.3.11:
- ASCII文字のみを proportional 対象とするオプション「-pa」を追加。
これを指定した場合,日本語文字のマージン削除を行いません。
- Proportional を指定した場合,
従来は全ての文字に対して DWIDTH を「文字幅+1」としており,右マージンが
一律「1」となっていましたが,
ASCII文字に限り,グリフ最右列を埋める dot数が 1 の場合は
DWIDTH を文字幅と同じになるようにしました。
これにより,「T」「V」などの右側の間延びした印象が軽減されたり,
フォントによっては「fi」が ligature っぽく表示できたりします。
(→サンプル画像)
- v.3.10 は欠番です (^^;
- 2005/06/30
- bdf2gdr.pl v.3.9:
-n により指定された名前から LatinPlain/LatinBold 互換フォントと判断した
場合,グリフサイズを適切に設定するよう小手先対応。
例えば 12dot の bdf を入力として
-n LatinBold13 を指定した場合,
SIZE および FBBX の height を 13 に設定します。
- 2005/06/02
- bdf2gdr.pl v.3.8:
DoCoMo 絵文字用「-d」オプション追加。;-p
- 2005/03/29
- bdf2gdr.pl v.3.7:
「-JP」オプションを指定した際に,bdf の bbx の高さが 12未満の場合
絵文字が表示されなかったのを修正。現在のオプション一覧を掲載しました。
- 2005/03/11
- SYMBOL??.HEX:
U+301C を追加しました。
メール本文等で「〜」が表示されなかったバグが解消されます。
- 2005/02/25
- bdf2gdr.pl v.3.6:
「-JP」オプションを指定した際にできる gdr に無駄があったのを修正。
JapanPlain16/JapanPlain12 に全く同じフォントを使うかたは,別々に作成
するよりも「-JP」を使うほうがメモリ容量が 200kB 前後節約できます。
- 2005/02/23
- bdf2gdr.pl v.3.5:
- オプション「-a」を指定すると,プリプロセス後自動的に fnttran を呼びだし,gdr を生成します。Gdr 生成後は,unicode bdf と gd を自動的に削除します。Windows 上で実行している場合で,かつ bdf の手修正を必要としない場合,このオプションを指定することで手間が低減します。
- オプション「-JP」により,メール画面でも小さい絵文字で表示できます。ただし,現時点では以下の制限があります。
- JapanPlain16 と JapanPlain12 の両方に,入力として与えた bdf フォントが使用されます。
- 入力として与える bdf フォントの FONTBOUNDINGBOX の高さは 12以下 である必要があります。
- 出力ファイル名は「Japan.gdr」固定です。
あくまで支援オプションであり,
詳細な調整を行いたい場合は手動でお願いします。
これ以前の更新履歴...
- bdf2gdr.pl
- プリプロセッサ (→ダウンロード)
- Perlの実行環境
- ActivePerlなど
- Symbian SDK
- これに含まれる fnttran が必要。Forum NOKIA から download 可能。
- マッピングテーブル
- Unicode 順に変換するために必要です。JIS0208.TXT (日本語用),JIS0201.TXT (半角カナ用)
- 記号用フォント
- efont-unicode-bdf から,702NK に必要な記号文字をいただいたデータ。
SYMBOL10.zip,
SYMBOL12.HEX,
SYMBOL14.HEX,
SYMBOL16.HEX,
SYMBOL24.HEX。
最低限必要なのは,変換しようとする bdf フォントと同サイズのもの。
なくても,記号文字が表示できないだけで変換は可能。
入力 bdf が記号グリフを持っている場合は,そちらが優先されます。
- 日本語,半角カナ,半角英数 の 3つの BDF ファイル
- 変換したい BDF ファイルを用意してください。
FONTBOUNDINGBOX の高さが揃っていることが必要です。
以下の説明では,それぞれ
jis.bdf (日本語),
rk.bdf (半角カナ),
ascii.bdf (半角英数)
というファイル名であると仮定します。
Symbian SDK と Perlの実行環境をインストールしておいてください。fnttran
と perl にはパスが通っている必要があります。
- bdf2gdr.pl
- 変換したい 3つの bdf フォント
- 上記 2つのマッピングテーブル
- 上記記号用フォントのうち,必要なサイズのもの (とりあえず全部置いても自動判別します)
の全てを同じフォルダに置き,コマンドプロンプトでそのフォルダに移動したのち
作業してください。
bdf2gdr.pl による処理
bdf2gdr.pl は,fnttran で gdr フォントを作成する際に必要となる
Unicode BDF と GD ファイルを生成するスクリプトです。以下は実行例です。
引数には,
オプション,
日本語 (JIS0208) BDF フォント,
半角カナ (JIS0201) BDF フォント,
半角英数 (ISO8859-1) BDF フォント
を指定します。
半角カナBDFが半角英数文字を持っている場合,半角英数BDFは省略することが
できます。半角英数BDFを指定した場合は半角英数BDFが優先して半角英数文字に
使用されます。
システム置き換えフォントを作成する場合
オプションに
「-16」あるいは「-12」を指定すると,
702NK/NOKIA6630 のシステムフォント JapanPlain16/JapanPlain12 の
置き換えフォントとして作成できます。
絵文字の表示にも対応します。たとえば「-16」を指定すると,
JapanPlain16 に対する置き換えフォントが作成できます。その際,入力として
与える BDFフォントは 16dot よりも小さくても構いません。
perl bdf2gdr.pl -16 jis12.bdf rk12.bdf ascii12.bdf
上記のようにして JapanPlain16 および JapanPlain12 に対する置き換えフォントを
それぞれ個別に作成することもできますが,JapanPlain16/JapanPlain12 の両方に
同じフォントを使用したい場合は,「-JP」オプションが使えます。
perl bdf2gdr.pl -JP jis.bdf rk.bdf ascii.bdf
追加フォントを作成する場合
オプション -n を使って
文字列を指定してください。default値は「MyFont」です。
perl bdf2gdr.pl -n MyFont jis.bdf rk.bdf ascii.bdf
fnttran による処理
上記の処理により,Unicode 順で merge された BDF と GD ファイルが
生成されます。以下はメッセージ例です。
##################################################
End of Preprocess
##################################################
You've got unicode bdf `21114.bdf' and gd file `21114.gd'.
The UID of the font is [71678673].
Okey, now run
-------------------------------------------
fnttran 21114.bdf 21114.gd MyFont14.gdr
-------------------------------------------
and you will get `MyFont14.gdr' font file. enjoy!
個人使用を前提としていますので,UIDはランダムに生成した値が使われます。
あとはメッセージに従い,fnttran を実行することで,gdr ファイルを作成できます。
なお,生成される BDF および GD ファイルの名前は実行のたびに異なります。
メッセージに表示された通りに fnttran で処理してください。
出力ファイル名は例では MyFont14.gdr となっていますが,任意に
指定できます。ただし,bdf2gdr.pl で「-JP」オプションを指定した場合は,
必ず「Japan.gdr」というファイル名にしてください。
fnttran 21114.bdf 21114.gd MyFont14.gdr
プリプロセッサで使用できるオプションを解説します。
- -16 / -12 / -JP
- 702NKのシステムフォントを生成する際に使用します。-16 を指定すると
JapanPlain16 互換フォントを,-12 を指定すると JapanPlain12 互換フォントを
生成します。これらを指定した場合は,絵文字は 16dot で表示されます。
-JP は,入力として与えた bdf を JapanPlain16/JapanPlain12 の両方に
使用したいときに指定します。-JP を指定した場合は,絵文字は 12dot で
表示されます。
- -p / -pp / -pa
- 入力として与えた bdf の各グリフに存在する左右の空白を取り除くことで,
字間が詰まった表示にすることができ,一覧性が向上します。-p を指定した
場合は,句読点や罫線文字などの左右余白は削除しません。これらの文字も
強制的に余白削除したい場合は,-pp を指定してください。-pa を指定した
場合,ASCII文字に対してのみ空白を取り除き,
日本語フォントは等幅のままにします。
- -n fontname
- 作成するフォントの名前 (ID) を指定します。なお,システム互換フォントを
作成する場合は,フォント名は強制的に JapanPlain12/JapanPlain16 と設定
されます。
- -a
- プリプロセッサによる処理の後,本来であれば fnttran を手動で実行することで
.gdr を作成する必要がありますが,-a を指定することで fnttran を自動的に
実行させることができます。
「プリプロセッサが生成した .bdf および .gd を手で調整したい」という
場合以外は,-a を指定することによって .gdr の作成までを自動的に行えるので,
手間が軽減します。
インストール
Windows上で,どこかに System\Fonts\ というフォルダ構造を作り,
作成した .gdr ファイルをこの Fonts フォルダの中に置きます。
そして,PC Suite などで System フォルダごと E: などにコピーします。
コピーが終了したら,デバイス (702NK/NOKIA6630) を再起動してください。
注意:
特に欧文システムフォント (「Al」から始まる名前を持つもの) を
置きかえる場合,702NK のシステム自体が起動しなくなることがあります。
他の場合でも,万一に備えてフォントのインストール先は
C: ではなく E: (MMC) とすることをお勧めします。
E: にしておけば,何かあった場合でも MMC を抜いた状態で 702NK を
起動することで復旧が可能となります。
アンインストール
FExplorer などのアプリを使って .gdr ファイルを削除すればいいのですが,
「使用中です」などのメッセージにより,そのままでは削除できません。以下の
手順を踏むことで削除できます。
- .gdr が格納されている Fonts フォルダを,別名
(以下では Fonts.bak としますが,何でも可) にリネームする。
- Fonts.bak の中の当該 .gdr を削除する。
- Fonts.bak を Fonts という名前に戻す
あとは端末を再起動してください。
Vodafone 絵文字は,各文字に文字コードが割当てられています。
702NKでは,メールおよびウェブ表示の際,これらの文字コードの文字の上に
絵文字を重ねうちする形で,絵文字を表示しています。
当プリプロセッサでは,この仕組に基づき,作成する置き換えフォントに,
絵文字に対応する文字コードを持つ空白文字を含むようにしています。
これにより,空白文字に重ねうちする形で,702NK は絵文字を表示しています。
すなわち,当プリプロセッサでは
絵文字と同じ文字コードを持つ空グリフをフォントに含めているにすぎず,
絵文字データの
抽出およびデータ変換などの操作は,一切行っていません。
よって,作成されたフォントにも絵文字データは一切含まれておらず,
絵文字の所有権・使用権に抵触するものではありません。
このプリプロセッサの作成には,efontプロジェクトによる
hex2bdf (efont-unicode-bdf に同梱),
および 1@2ch 氏による bdfmerge (モナーフォントに同梱)
のコードを参考にさせていただきました。記号文字のグリフデータは,
efont-unicode-bdf の各フォントから頂きました。
また,「Vodafone 702NK (Nokia6630) vol.28,vol.29」スレでは,
多くの名無しさんたちの動作報告を読ませていただき,参考にさせて
いただきました。特に
空白文字と改行文字のコードを発見された vol.28 の 777 氏,
10dot の外字を自ら作成された vol.29 の 104氏
(ぐらとらいだー 氏)
には敬意を表します。ありがとうございました。
参考にしたサイト
© 2005 津邑 公暁 / TSUMURA,Tomoaki <tsumura@tomo.gr.jp>