バージョン8までIllustratorの「aiデータ」はPostScript形式で保存されていました。
このPostScript形式は中味がテキストで記載されていて、エディタなどで直接この「aiデータ」を開いて編集することもできますし、比較的簡単に自分で「aiデータ」を作成することもできます。
バージョン8までの「aiデータ」形式でデータを作成すれば、バージョン9以降でも開くことができます。

以前に写研電算写植用の「くみ子」のデータをIllustratorに変換するソフト(ps.exe)を作成するために調べた「aiデータ」の構成内容を今回もう一度整理してまとめてみました。

直線
m
l
S
100 733 m
500 733 l
S
始点   x座標 y座標 m が始点となる
終点 x座標 y座標
S (オープンパス)
曲線
m
y
S
167 750 m
237 750 279 718 y
S
前が曲線で次が直線
はアンカーポイント(x座標 y座標)
は前のアンカーポイントから出るハンドル(x座標 y座標)
m
V
S
84 479 m
121 608 202 608 V
S
前が直線で次が曲線
はアンカーポイント(x座標 y座標)
は次のアンカーポイントから出るハンドル(x座標 y座標)
m
C
S
90 329 m
90 378 133 456 217 456 C
S
前後が曲線
は前のアンカーポイントから出るハンドル(x座標 y座標)
は次のアンカーポイントから出るハンドル(x座標 y座標)

罫線は始点「m」から罫の「線と塗り」の属性までが1つのオブジェクトとなります。
複数の直線と曲線を組み合わせてオブジェクトを作成できます。
1オブジェクトでアンカーポイントが3つ以上ある場合は、「終点」に「始点と同じアンカーポイント」を追加してクローズパスとすることもできます。

●「線と塗り」の属性
S   = 線のみ  (小文字「s」はクローズパス)
N   = (線+塗り)なし   (小文字「n」はクローズパス)
F   = 塗りのみ (小文字「f」はクローズパス)
B   = 線+塗り (小文字「b」はクローズパス)
四角形
m
L
L
L
L
s
500 600 m
100 600 L
100 800 L
500 600 L
500 600 L
s
始点   右下(x座標 y座標)
左下(x座標 y座標)
左上(x座標 y座標)
右上(x座標 y座標)
終点 右下(x座標 y座標)
s (クローズパス)
円形
m
c
c
c
c
s
100 50 m
100 22.3867 77.6143 0 50 0 c
22.3857 0 0 22.3867 0 50 c
0 77.6143 22.3857 100 50 100 c
77.6143 100 100 77.6143 100 50 c
s
ベジエ曲線
はアンカーポイント(x座標 y座標)
は前のアンカーポイントから出るハンドル(x座標 y座標)
は次のアンカーポイントから出るハンドル(x座標 y座標)
s  (クローズパス)
罫線 その他の属性
w 2.8346 w 罫線太さ
J 0 J 線端の形状 0=バット 1=丸型 2=突出
j 0 j 角の形状(結合) 0=マイター 1=ラウンド 2=ベベル
k 0 1 1 0 k 塗りの色 CMYK順 (M=100% Y=100%)
K 0 0 0 1 K 線の色 CMYK順 (K=100%)
g 0.8 g 塗りの色 グレースケール (20%)
G 0.2 G 線の色 グレースケール (80%)

RGBの指定
Xa 0.4274 0.3098 0.2823 0.1255 0.502 0.502 0.502 Xa 塗り CMYK値+RGB(/255)
XA 0.4274 0.3098 0.2823 0.1255 0.502 0.502 0.502 XA 線  CMYK値+RGB(/255)
d [2 1 ]0 d 波線/間隔  []0 d =波線なし
M 4 M 角の比率



文字入力

0 To 一つの文字列として扱われます。
Tp (座標)
Tv (組方向)
TP
文字設定/段落設定と文字列など
TO
To 0 To テキストの設定
1 To エリア内テキストボックスの設定
Tp 1 0 0 1 0 16 0 Tp (1 0 0 1部分は文字の回転・シアーの設定)
x座標 y座標 0は不明


文字回転の設定 文字シアーの設定
回転 リフレクト
(垂直)
回転 シアー リフレクト
(水平)
シアー リフレクト
(垂直)
回転 シアー リフレクト
(水平)
-180° -1 0 0 -1 -60° 1 0 -1.7321 1
-150° -0.866 -0.5 0.5 -0.866 -45° 1 0 -1 1
-120° -0.5 -0.866 0.866 -0.5 -30° 1 0 -0.5774 1
-90° 0 -1 1 0 -20° 1 0 -0.364 1
-60° 0.5 -0.866 0.866 0.5 -10° 1 0 -0.1763 1
-45° 0.7071 -0.7071 0.7071 0.7071 1 0 0 1
-30° 0.866 -0.5 0.5 0.866 10° 1 0 0.1763 1
1 0 0 1 20° 1 0 0.364 1
30° 0.866 0.5 -0.5 0.866 30° 1 0 0.5774 1
45° 0.7071 0.7071 -0.7071 0.7071 45° 1 0 1 1
60° 0.5 0.866 -0.866 0.5 60° 1 0 1.7321 1
90° 0 1 -1 0
120° -0.5 0.866 -0.866 -0.5
150° -0.866 0.5 -0.5 -0.866
180° -1 0 0 -1

横組の場合、保存されたデータ文字列の基準のy座標はベースライン上になっています。

Illustrator上で左下のy座標を0にしても、実際の保存されたデータはディセント分を足した位置の座標となります。

電算写植コーディングの場合、文字基準は中央にあって計算も楽だったのですが、PCのフォントで困ったことはフォント(メーカ)によって、アセントとディセントは異なった値を採っていることです。

サイズ指定では、アセントとディセントの値は省略若しくは適当な数値でも、Illustratorでデータを読み込んだ段階で実際に使用されるフォントのディセント値が使われています。

(1 To)=エリア内テキストボックスは、この位置にクローズパスのオブジェクトを挿入する。
例) 四角形
   100 0 m
   0 0 L
   0 16 L
   100 16 L
   100 0 L
   n
Tv 0 Tv 組方向(0 Tv=横組 1 Tv=縦組)
TP TP 座標設定終わり

文字設定/段落設定はこの位置に入る。
Tx (0123456789) Tx 文字入力データ

文字列の表記方法は、1バイト文字はそのまま表記されます。
ただし、「(」「)」「\」は特殊な意味を持ちますので、「\」を付けて、「(」→「\(」、「)」→「\)」、「\」→「\\」となります。

日本語の2バイト文字、例えば「あ」のシフトJISコード「82A0」の上位2桁「82」と下位2桁「A0」の2つに分け、それぞれを16進数から8進数に変換(82 → 202)(A0 → 240)し、先頭に\を付けて(\202\240)と表記されます。
改行は「\r」で表記されます。

また、イラストレータで保存し直すのであれば、直接「テキスト」を入力しても大丈夫です。
ただし、シフトJISコード「5C」を含む「ソ噂浬欺圭構蚕十申曾箪貼能表」等の文字は「5C」を「\」と認識するためか、「文字化け」、又は「エラー」が起きますので、それらの文字の後ろにそれぞれ「\」を付加すれば回避できるようです。

文字列表記には1行の長さの制限があるようです。正確には調べていませんが240バイトを超えた辺りで読み込みのエラーとなるようです。
100バイトくらいで一旦「) TX」で閉じて、次の行で「(」から始めるように折り返すようにしたほうがいいでしょう。もちろんIllustratorでは1行となります。

(あいうえおかきくけこさしすせそ) TX
(たちつてとなにぬねのはひふへほ) TX
(まみむめも) Tx

(\202\240\202\242\202\244\202\246\202\250\202\251\202\253\202\255\202\257\202\261) Tx
(\202\263\202\265\202\267\202\271\202\273\202\275\202\277\202\302\202\304\202\306) Tx
(\202\310\202\311\202\312\202\313\202\314\202\315\202\320\202\323\202\326\202\331) Tx
(\202\334\202\335\202\336\202\337\202\340) Tx

TO TO 文字列の終わり

文字設定
Tf /_Helvetica 12 11.172 -2.6999 Tf フォント名(PostScript name) 
/_Helvetica 12 11.172 -2.6999 Tf フォントサイズ(pt)
/_Helvetica 12 11.172 -2.6999 Tf (アセント)省略可能
/_Helvetica 12 11.172 -2.6999 Tf (ディセント)省略可能

フォント名は必ずPostscript名での表記が必要です。
そのフォントがインストールされていないとエラーになってしまいます。
Tl 20 0 Tl 行送り(段落の間隔とセット) 0=自動
Tk 0 -500 Tk カーニング(/1000em)マイナスはアキ
1 0 Tk (自動)
Tt 50 Tt トラッキング(/1000em)
Tz 100 90 Tz 垂直比率(横組=平体90%/縦組=長体90%)
90 100 Tz 水平比率(横組=長体90%/縦組=平体90%)
Ts 3.5433 Ts ベースライン移動
多国語オブション
XL %_ 0 XL 言語:0〜 リスト順
TY
TV
0 TY
0 TV
文字の方向:通常
0 TY
1 TV
文字の方向:半角文字回転
1 TY
0 TV
文字の方向:縦中横
Xu %_1 0 100 100 Xu 詰め 0=詰めなし
%_0 1 100 100 Xu 組み 和欧間 0=組みなし
%_0 1 100 100 Xu 組み 和欧間 0=組みなし
XQ %_ 1 50 XQ 割り注 拡大・縮小% 0=割り注なし
段落設定
Ta 0 Ta 左揃え
1 Ta 中央揃え
2 Ta 右揃え
3 Ta 両端揃え
4 Ta 最終行も両端揃え
Ti -10 20 0 Ti 1行目左インデント
0 30 0 Ti 左インデント
0 0 20 Ti 右インデント
Tl 0 4 Tl 段落の間隔(行送りとセット)
TW 100 100 200 TW 単語間の空白
TC 0 0 50 TC 文字間の空白
段落設定オプション
Th 1 1 2 2 3 Th 自動ハイフネーション(オプション設定含む) 0=解除
Tq 1 Tq ぶらさがり 0=解除
Tg 0 Tg 解除(繰り返し文字の処理+禁則処理)
1 Tg 禁則(弱い)
2 Tg 繰り返し文字の処理
3 Tg 繰り返し文字の処理+禁則処理(弱い)
114 Tg 繰り返し文字の処理
112 Tg 繰り返し文字の処理なし
113 Tg 禁則処理(弱い)
121 Tg 禁則処理(強い)
115 Tg 繰り返し文字の処理+禁則処理(弱い)
123 Tg 繰り返し文字の処理+禁則処理(強い)
120 Tg 解除(繰り返し文字の処理+禁則処理)
文字の塗り/線
Tr 0 Tr 文字 塗りのみ
1 Tr 文字 線のみ
2 Tr 文字 塗り+線
3 Tr 文字 (塗り+線)なし
k 0 1 1 0 k 塗りの色 CMYK順 (0=0% 〜 1=100%)
K 0 0 0 1 K 線の色 CMYK順 (0=0% 〜 1=100%)
w 1 w 線の太さ
その他
A 1 A ロック  0=解除
Ap 1 Ap 中心を表示
TA 1 TA 選択範囲を隠す
u u ..... U グループ
q q ..... Q マスク
*u *u ..... *U 複合パス
*w *w ..... *W 回り込み 実行
Ar 800 Ar アウトプット
O 1 O 塗りにオーバープリント
R 1 R 線にオーバープリント
Lb
Ln
LB
%AI5_BeginLayer
1 1 1 1 0 0 1 0 79 128 255 0 50 Lb
(\203\214\203C\203\204\201[ 1) Ln
 ・
 ・
 ・
LB
%AI5_EndLayer--
レイヤー範囲の指定
%AI5_BeginLayer レイヤーの始まりマーク(省略可)
Lb レイヤーの属性
Ln レイヤーの名前
LB
%AI5_EndLayer-- レイヤーの終わりマーク(省略可)