PostScript の文字列長、文字幅

PostScript で日本語の文字列を扱う場合、半角文字は1文字を長さ1と数えますが、全角文字は1文字を長さ2として計算します。

%!

/Ryumin-Light-EUC-H findfont 20 scalefont setfont

% 文字列の長さ
(1)  length ==          % -> 1
(日) length ==          % -> 2
(abcあいう)  length ==  % -> 9

Times-Roman は文字によって幅が違います。(Century Helvetica も)
数字は等幅です。

%!
(------- Times-Roman --------\n) print
/Times-Roman-H findfont 20 scalefont setfont
(1)  stringwidth == == % -> 0.0 10.0
(0123456789) stringwidth == == % -> 0.0 100.0  % 数字は20ポイントの半分
(.)  stringwidth == == % -> 0.0 5.0
(a)  stringwidth == == % -> 0.0 8.87968731
(i)  stringwidth == == % -> 0.0 5.55976582
(H)  stringwidth == == % -> 0.0 14.4398441
(W)  stringwidth == == % -> 0.0 18.8796883

Courier は全ての文字幅が均一です。

/Courier-H findfont 20 scalefont setfont
(------- Courier --------\n) print
(1)  stringwidth == == % -> 0.0 12.0
(0123456789) stringwidth == == % -> 0.0 120.0
(a)  stringwidth == == % -> 0.0 12.0
(.)  stringwidth == == % -> 0.0 12.0
(i)  stringwidth == == % -> 0.0 12.0
(H)  stringwidth == == % -> 0.0 12.0
(W)  stringwidth == == % -> 0.0 12.0

Ryumin-Lightは半角文字が設定したフォント幅の半分、全角文字は設定したフォント幅です。(GothicBBB-Mediumも同じ)

/Ryumin-Light-EUC-H findfont 20 scalefont setfont
(------- Ryumin-Light --------\n) print
% 半角文字は設定したファントサイズの半分の幅
(1)   stringwidth == == % -> 0.0 10.0
(12)  stringwidth == == % -> 0.0 20.0
(abc) stringwidth == == % -> 0.0 30.0

% 全角文字は設定したファントサイズ
(日)     stringwidth == == % -> 0.0 20.0
(日本)   stringwidth == == % -> 0.0 40.0
(日本語) stringwidth == == % -> 0.0 60.0