FontCompiler プロジェクト
AutoCADのシェイプソースファイル(拡張子 SHP)をコンパイル済みシェイプファイル(拡張子 SHX)に変換したり、コンパイル済みシェイプファイルをシェイプソースファイルに逆変換するフォントコンパイラを作ってみた。
SHPをSHXに変換するにはAutoCADのCOMPILEコマンドを使えば可能、SHXをSHPに変換するには、AutoCAD Express Tools の DUMPSHX.EXE を使えば可能だが、LT じゃない AutoCAD が必要になる。
SHX/SHP ファイルにはいくつか種類があって、それぞれ Shape 1.0、Shape 1.1 、Unifont、Bigfont、拡張ビッグフォント と呼ばれている。
Bigfont と拡張ビッグフォントの SHX ファイルのインデックス部分は、8バイト=1レコードで コード、データ長、データアドレス が含まれているが、他のフォントと異なり、コードの昇順には並んでいない。
| INDEX CODE SIZE ADDR
-----------------------------------
0023 0 00000 23 995B
002B 1 085BF 36 4DD36
0033 2 088BF 84 104FF
003B 3 089BF 69 144B1
0043 4 08ABF 104 18581
004B 5 08BBF 173 1C676
0053 6 08CBF 124 20789
005B 7 08DBF 84 2443A
0063 8 08EBF 95 28202
006B 9 08FBF 102 2BF5F
0073 10 090BF 98 2FEC1
007B 11 091BF 77 33E32
0083 12 092BF 87 379FC
008B 13 093BF 101 3B745
0093 14 094BF 57 3F4C1
009B 15 095BF 89 42DE9
00A3 16 096BF 93 4713C
00AB 17 097BF 95 4B036
00B3 18 0854C 20 4F26C
00BB 19 00000 0 0000
00C3 20 00000 0 0000
00CB 21 00000 0 0000
00D3 22 00000 0 0000
00DB 23 00000 0 0000
00E3 24 00000 0 0000
-----------------------------------
最初のコード 0000 はよいが、次のコードは 000A ではなく、85BF, 88BF,... となっている。途中に 1レコード 全部 0 の謎のパディング レコードもある。
他のビッグフォントのSHXファイルも確認したが、ビッグフォントのインデックス部分の規則性はわからなかった。
他の Shape 1.0/1.1 や Unifont ではコードの昇順でならんでいるので、Bigfont もコードの昇順で出力してみたところ、一応 使えるようだったので、
「よくわからんが、まぁ動いているからヨシ」の精神で、公開してみた。
最初のコード 0000 はよいが、次のコードは 000A ではなく、85BF, 88BF,... となっている。途中に 1レコード 全部 0 の謎のパディング レコードもある。
他のビッグフォントのSHXファイルも確認したが、ビッグフォントのインデックス部分の規則性はわからなかった。
他の Shape 1.0/1.1 や Unifont ではコードの昇順でならんでいるので、Bigfont もコードの昇順で出力してみたところ、一応 使えるようだったので、
「よくわからんが、まぁ動いているからヨシ」の精神で、公開してみた。
0 件のコメント:
コメントを投稿