フォントは大事です。フォントの見易さは,PDAの使い易さに直結します。 しかし現在,J-OS ではフォントを自由に変更することができません。 また, ミニーの資料室 においては,CJKOS用の medium/large フォントが配布されていますが, tiny/small フォント,およびフォントのデータ構造は公開されていません。
個人的に,もっとフォントに自由度が欲しい。特に
ナガ10,
M+,
東雲などの良質なフォントを
CJKOS の tiny/small フォントとして使用したいと思い,
CJKOS同梱フォントのデータを眺めてみたところ,案外単純そうだったので
解析してみました。
CJKOS のフォントフォーマットを独自に解析し,そのフォーマットに沿って BDF から変換したものです。 これらの一部はダウンロードして,そのまま使用することができます。 個人的には,「M+(10),東雲(12),東雲bold(16),JISKAN24(24)」の 組み合わせが見易いのではないかと思いますが,いろいろお試しください。
画像は J-DOC reader を用いた場合の screenshot (画面左上160x160のみcropしたもの) です。 各フォントファイルの配布条件は,オリジナル BDF フォントの配布条件に 従います。Bold フォントの生成には,mkbold を使用させていただいています。 Tungsten E + CJKOS ver4.5 for Palm OS5 を用いて実機検証済ですが, 本フォントを利用したことにより発生した不具合等に関する責任は一切負わない ものとします。
注) これらは 全て変換スクリプトを用いて生成しました。 Perlの実行環境をお持ちでない方で,変換してほしいフォントがある場合は, 気軽に連絡してください。ただし,オリジナルフォントのライセンス条件によっては, このページで配布できない場合があります。
ナガ10 | ナガみん | ナガまる | M+ |
---|---|---|---|
Download (ZIP: 67kB) | Download (ZIP: 67kB) | Download (ZIP: 67kB) | Download (ZIP: 66kB) |
東雲 | 東雲 (bold) | 東雲明朝 | 東雲明朝 (bold) |
---|---|---|---|
Download (ZIP: 92kB) | Download (ZIP: 88kB) | Download (ZIP: 92kB) | Download (ZIP: 88kB) |
M+ | 蕨12 | ぱうS | |
Download (ZIP: 88kB) | イメージのみ (→BDF入手) | ||
東雲 | 東雲 (bold) | 東雲明朝 | 東雲明朝 (bold) |
---|---|---|---|
Download (ZIP: 133kB) | Download (ZIP: 130kB) | Download (ZIP: 134kB) | Download (ZIP: 132kB) |
JISKAN16 | JISKAN16 (bold) | へた字 (bold) | Ricoh HGゴシックB |
Download (ZIP: 146kB) | Download (ZIP: 141kB) | あくまでイメージです | |
JISKAN24 | JISKAN24 (bold) | 芦屋 | 芦屋 (bold) |
---|---|---|---|
Download (ZIP: 287kB) | Download (ZIP: 281kB) | Download (ZIP: 234kB) | Download (ZIP: 237kB) |
CJKOS のフォントDBの構造についての解説です。独自に解析したものであり, 正確でない部分や,間違いが含まれる可能性がありますが,完全に無保証とします。 また,記述は日本語フォントのみに関するものであり, 中国語,韓国語フォントに関しては今のところ関知しません。
なお,10,12dot フォントに関する記述は CJKOS 同梱の日本語フォント, 16,24dot フォントに関する記述はミニーの資料室で配布されている 日本語フォントに,それぞれ基づいています。
まず,通常の PDB のヘッダ情報を持ちます。各項目の値は以下のように なっています。
オフセット | サイズ (byte) | 項目 | Value |
---|---|---|---|
0000H | 32 | DB名 | CJK Font ??x?? JapaneseJIS (??はフォントサイズ) |
0020H | 2 | 属性フラグ | 0x01 (RESOURCE) |
0022H | 2 | バージョン | |
0024H | 4 | 作成日 | |
0028H | 4 | 更新日 | |
002CH | 4 | バックアップ日 | |
0030H | 4 | 更新回数 | |
0034H | 4 | アプリ情報 | |
0038H | 4 | ソート情報 | |
003CH | 4 | タイプ | dFnt |
0040H | 4 | クリエータID | dCJK |
0044H | 4 | ユニークID |
10dotの例
43 4a 4b 20 46 6f 6e 74 20 31 30 78 31 30 20 4a |CJK Font 10x10 J| 61 70 61 6e 65 73 65 4a 49 53 00 00 00 00 00 00 |apaneseJIS......| 00 01 00 01 bb c4 00 1a bb c4 00 1a bb c4 00 1a |................| 00 00 00 00 00 00 00 00 00 00 00 00 64 46 6e 74 |............dFnt| 64 43 4a 4b 00 00 00 00 |dCJK.... |
次にロケーション情報が入ります。10,12dot フォントには4つ, 16,24dotフォントには16のロケーション情報が書きこまれています。 属性IDは「FBLK」です。
オフセット | サイズ (byte) | 項目 | Value |
---|---|---|---|
0048H | 4 | 次レコードリスト | 0 |
004CH | 2 | レコード数 | 10,12dotの場合,4。16,24dotの場合,16。 |
10dotの例
00 00 00 00 00 04 | ...... |
フォントサイズ | オフセット | ロケーション数 | ロケーション間隔 |
---|---|---|---|
10dot | 0078H | 4 | 6800H |
12dot | 0078H | 4 | 9000H (256文字ぶん) |
16dot | 00F0H | 16 | 4000H (64文字ぶん) |
24dot | 00F0H | 16 | 9000H (64文字ぶん) |
10dotの例
46 42 | FB| 4c 4b 00 00 00 00 00 78 46 42 4c 4b 00 01 00 00 |LK.....xFBLK....| 68 78 46 42 4c 4b 00 02 00 00 d0 78 46 42 4c 4b |hxFBLK.....xFBLK| 00 03 00 01 38 78 |.....8x |
あとは,グリフデータがコード順に 0x2121 から 0x747e まで, ベタに書きこまれているだけです。たとえば,12dot のBDFフォントで
4100 ・■・・・・・■・・・・ 2fe0 ・・■・■■■■■■■・ 0120 ・・・・・・・■・・■・ 9ff0 ■・・■■■■■■■■■ 4120 ・■・・・・・■・・■・ 0fe0 ・・・・■■■■■■■・ 0100 ・・・・・・・■・・・・ 2fe0 ・・■・■■■■■■■・ 4100 ・■・・・・・■・・・・ 5ff0 ・■・■■■■■■■■■ 8100 ■・・・・・・■・・・・ 8100 ■・・・・・・■・・・・
と表される文字は,単純に 41 02 fe 01 29 ff 41 20 fe 01 02 fe 41 05 ff 81 08 10 というデータとして格納されます。
ただし,10dot フォントのみ,ちょっと違う格納のされ方をしています。 まず,グリフの左側 横8dot × 縦10dot の部分を順に格納した後, グリフの右側 横2dot × 縦10dot を格納しています。そして文字の最後に 4bitの0がpaddingされています。結果,1文字に13byteを使用していることに なります。具体的には,例えば 10dot のBDFフォントで
4200 ・■・・・・■・・・ 2F80 ・・■・■■■■■・ 12C0 ・・・■・・■・■■ 4F80 ・■・・■■■■■・ 2200 ・・■・・・■・・・ 0F80 ・・・・■■■■■・ 2200 ・・■・・・■・・・ 3FC0 ・・■■■■■■■■ 4200 ・■・・・・■・・・ 0000 ・・・・・・・・・・
と表される文字は, 42 2F 12 4F 22 0F 22 3F 42 00 2E 23 00 というデータとして格納されます。
以上の構造に基づき,BDF 形式のJISフォントを,CJKOS の 日本語用フォントに変換する perl script (LF) です。BDF の parse 部分が 大ざっぱで,BDF によっては上手く変換できない場合があるかも しれません。特に,FONTBOUNDINGBOX と異なる BBX が現れる場合の テストを行っていない*1ので, そのような場合は上手くいかないかもしれません。
*1) そういう JIS BDF フォントを 見つけられなかったので...。対応するためのコードは入れてあるつもりなので, テストされた方は是非ご一報ください。
本 script を用いたことにより 発生したいかなる問題に関しても,一切責任を負いません。また変換は, オリジナルフォントのライセンス規定に十分注意した上,自己の責任において 行ってください。
必要とするサイズの埋め込み bitmap を持つ TTF を選ぶことを, 強くお勧めします。以下のような手順で行うと, 簡単でかつ最も良い結果が得られると思います。
視認性のよいビットマップフォントを作成・公開してくださっている 方々に,心より感謝いたします。以下は,使用させていただいた BDFフォントのオリジナル配布元です。
その他 参考サイト