So-net無料ブログ作成

Fontについて [PostScript]

Fontについて


Font永00.png
PostScriptではフォントはフォント辞書のことです。 フォントのグリフ(字形)を使って文字を描画します。 フォントと書体が混同されてしまっていますのでここで簡単な定義をしておきます。
・字体(type):文字の骨組み
・字形(gryph):図形として表現したもの
・書体(type face):一貫したデザインで形成された字形の集合体
・フォント(font):同じサイズで、書体デザインの同じ活字の一揃い
・文字:抽象的なシンボル
・テキスト:文章等のひとまとまり 文字列

何故こんな間違いが普及したのかというと、恐らくパソコンのFontsフォルダに収められていたからフォントと呼ぶようになったのかと思います。

モリサワ フォント用語集 字体・字形・書体

【サンプルコード】
Font01.png %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:書体の指定の仕方 0 setgray 0 0 240 240 rectstroke % 黒背景 120 120 translate % 座標の原点を中央に移動 /Helvetica findfont % 使用するフォントの選択 32 scalefont setfont % フォントを32倍に拡大し、カレントフォントに設定する 0 0 moveto % 描画する位置(0,0)を指定 (Sample) show % 文字列Sampleを描画する
文字列をセンター合わせにします。 Font02-1.png % 背景、座標設定等は略しています /Helvetica findfont % 使用するフォントの選択 32 scalefont setfont % フォントを32倍に拡大し、カレントフォントに設定する (Sample) stringwidth % テキストの横幅を求め、移動する距離を返す。 Wx Wy % スタック内のWyとWxを入れ替えて距離Wxを-2で割ってマイナス側に始点を移動 exch -2 div 0 moveto (Sample) show % 文字列Sampleを描画する
改行します。 Font02-2.png /center_show { % センター合わせのプロシージャ % 文字列を複製し(dup)文字列の幅を得て(stringwidth)、辞書を削除し(pop) % -2で割る( -2 div)→x方向の移動量 y座標の移動量(0) 移動し(rmoveto)文字列を描画(show) dup stringwidth pop -2 div 0 rmoveto show } def % 改行プロシージャ 0(x座標) 現在の座標を得る(currentpoint)→20.0 0.0を入れ替え(exch)→ % 0.0 20.0、0.0を削除(pop)→20.0(y座標) 38を引く(38 sub) 始点の移動(moveto) /newline { 0 currentpoint exch pop 38 sub moveto } def % 背景、座標設定等は略しています 0 20 moveto /Helvetica 32 selectfont (Sample) center_show newline % 文字列Sampleを描画し改行する (PostScript) center_show
文字間の空きを設定します。 Font02-3.png /text (Sample) def % 文字列の定義 /aki 20 def % 文字間の空きの定義 /center_show { % センター合わせのプロシージャ text stringwidth pop -2 div 0 rmoveto ashow % 空きを入れた分センター合わせが狂ってくるのでその補正プロシージャ /aki_hosei { text length 1 sub aki mul -2 div } def % 背景、座標設定等は略しています aki_hosei 0 moveto%始点を移動 /Helvetica 32 selectfont aki 0 text center_show % 文字列Sampleを 文字間を開けて描画する
文字列を右合わせにします。 Font03-3.png /right_show { % 左合わせのプロシージャ dup stringwidth pop neg 0 rmoveto show } def /newline { 50 currentpoint exch pop 38 sub moveto } def % 背景、座標設定等は略しています 50 0 moveto /Helvetica 32 selectfont (Sample) right_show newline (PostScript) right_show
日本語を表示します。MacのOsakaは特別な設定は必要ありません。 ファイルはShift_JISで保存します。他のフォントは文字化けします。 Font04.png /center_show { dup stringwidth pop -2 div 0 rmoveto show } def % 背景、座標設定等は略しています 0 0 moveto /Osaka 32 selectfont (サンプル) center_show
ヒラギノ角ゴ Std W6を指定します。プレビュー.appやIllustrator、PhotoShopではエラーで 変換できませんが、Distillerでは変換できました。 CIDフォントに関してはこちらのサイトを参考にいたしました。 Tips on PostScript hiragino.png /center_show { dup stringwidth pop -2 div 0 rmoveto show } def % CIDフォントの設定 /HiraKakuStd-W6-RKSJ-H /RKSJ-H [/HiraKakuStd-W6] composefont /HiraKakuStd-W6-RKSJ-H 48 selectfont % 背景、座標設定等は略しています 0 0 moveto (サンプル) center_show
ヒラギノ明朝 Std W6を指定し縦書きで表示します。RKSJ-HのHをVに変えます。 hiraginoV.png /HiraMinStd-W6-RKSJ-V /RKSJ-V [/HiraMinStd-W6] composefont pop /HiraMinStd-W6-RKSJ-V 32 selectfont % 背景、座標設定等は略しています 0 64 moveto (サンプル) show

【オペレータの説明】

キー findfont
キー名のフォント辞書を得て、オペランドスタックにpushする。
(例)/Times-Roman findfont
フォント 拡大・縮小率 scalefont
フォントを拡大・縮小する。フォントの標準サイズは高さが1 単位。
(例)/Times-Roman 12 scalefont
フォント setfont
フォントをカレントフォントに設定する。
(例)/Times-Roman setfont
(文字列) show
カレントフォントで文字列を描画する。
(例)(Sample) show
Ax Ay (文字列) ashow
描画するグリフの幅を一括して調整する。
(例)10 0(Sample) ashow
キー CMap ファイル CIDFont composefont
CMapファイル、CIDFontを参照し、CIDフォント辞書を作成。definefontを実行しフォント辞書にキーの名前を付けてFont リソースカテゴリに登録する。
※CIDフォントとは日本語や中国語、朝鮮語のような膨大な文字セットを持つ言語を扱うためのフォーマット。
CIDフォント
キー 拡大率 selectfont
キー名のフォント辞書を得て拡大・縮小し、カレントフォントに設定する。
従来の指定の仕方より短くてすむ。
/Helvetica findfont 12 scalefont setfont

/Helvetica 12 selectfont

文字列 stringwidth
文字列のグリフ幅の合計値を求め、カレントポイントの移動距離(Wx、Wy)を返す
(例)
/HiraMinStd-W6-RKSJ-H /RKSJ-H [/HiraMinStd-W6] composefont
/HiraMinStd-W6-RKSJ-H 12 selectfont
(サンプル) stringwidth pstack
結果:0.0 72.0044 -dict-

結果から分かるようにスタックの先頭に辞書があるので、stringwidthを使う場合は辞書をpopすること。
currentpoint
カレントポイントの座標値(x、y)を返す。
pstack
オペランドスタック上のオブジェクトを標準出力(Distiller等のジョブログ画面)に表示する。 スタックの内容は変更しないのでバグ取りに利用する。
==
オペランドスタック上のオブジェクトをpopしテキストに変換して標準出力に表示する。 主にバグ取りに使用する (例)x ==
文字列 length
文字列の文字数を返す。
lengthはポリモーフィックなオペレータの一つで、型が異なるオペレータ、例えば配列、辞書などにも型に応じて適用されます。配列の場合は配列の要素数を返します。
ポリモーフィックなオペレータは他にはget、put、copyなどがあります。

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:アート

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました