[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ]
この章では,次のことについて説明します。
PostScriptでは,Adobe Standard Encodingベクタを使用してエンコーディング( コード付け)された文字セットが提供されます。PostScriptプログラムがフォントを呼び出す場合には, findfont オペレータはこのベクタを使用して文字と文字コードを対応づけます。
PostScriptではまた,ISOLatin1Encodingという名前のISO Latin-1エンコーディング・ ベクタも提供されます。これはISO Latin Alphabet Number 1 Standard (ISO 8859/1)で使用されるエンコーディング方式です。大部分のPostScript テキスト・フォントでは,ISO Latin-1エンコーディングで使用されるすべての文字が提供されます。ISO Latin Alphabet Number 1 Standardに含まれている文字の一覧については,『Digital PostScript Printers Programmer's Supplement 』を参照してください。
Adobe StandardおよびISO Latin-1エンコーディングの他に,DECprint SupervisorソフトウェアではDECMCS (DEC マルチナショナル文字セット)エンコーディングも提供されます。DEC マルチナショナル文字セットに含まれる文字の一覧については, 『Digital PostScript Printers Programmer's Supplement』を参照してください。
ISO Latin-1およびDECMCSエンコーディングに含まれる文字は,独立したフォント・ メトリックス・ファイル(.AFMファイル)を持ちません(.AFMファイルについての詳しい説明は『Digital PostScript Printers Programmer's Supplement』を参照してください) 。フォント・メトリックス・ファイルに登録されている文字情報を検索しなければならない場合には, エンコーディングによってではなく,名前で文字を検索してください。
例 E-1では,DECMCSエンコーディング・ ベクタの定義方法を示しています。これらのエンコーディング・ ベクタの定義方法についての詳しい説明は,『Digital PostScript Printers Programmer's Supplement 』を参照してください。
エンコーディング・ベクタDECMCSEncodingは,ISOLatin1Encodingというベクタを変更することにより定義されます。
%! DECMCSEncoding.PS % % Create DEC Multinational Character Set (MCS) encoding vector. /DECMCSEncoding ISOLatin1Encoding 256 array copy def mark 8#177 8#240 8#244 8#246 8#254 8#255 8#256 8#257 8#264 8#270 8#276 8#320 8#336 8#360 8#376 8#377 counttomark {DECMCSEncoding exch /questionmirror put} repeat % stack now contains mark 8#250 /currency 8#327 /OE 8#335 /Ydieresis 8#367 /oe 8#375 /ydieresis counttomark 2 idiv {DECMCSEncoding 3 1 roll put} repeat % stack now contains mark cleartomark
Adobe Standard Encoding以外の文字エンコーディングを使用するには, 次の操作を実行します。
/encodefont { findfont dup % Get the old font dict maxlength dict begin % Make a new one just as big { 1 index /FID ne % Copy everything but FID { def } { pop pop } ifelse } forall /Encoding exch def % Install the new encoding dup /FontName exch def % new font dict is still current. currentdict definefont % Create the new font. end } bind def
encodefont プロシージャは新しい名前とエンコーディングを使用して新しいフォントを作成し, 新しいフォントを戻します。新しいフォントに対しては任意の名前を選択できます。 古いフォントの名前とエンコーディング・ ベクタを含む名前を選択すると適切です。
新しいフォントを作成し,ただちにそのフォントを使用できます。また, 新しいフォントを作成した後,プログラムでそのフォントを使用することも可能です。 たとえば,ISO Latin-1を使用してエンコーディングされるTimes-Roman フォントを作成し,使用するには,次のコードを使用します。
/Times-Roman-ISOLatin1 ISOLatin1Encoding /Times-Roman encodefont 12 scalefont setfont
フォントを作成した後,プログラムでそのフォントを使用するには, 次のコードを使用します。
/Times-Roman-ISOLatin1 ISOLatin1Encoding /Times-Roman encodefont pop . . . /Times-Roman-ISOLatin1 findfont 12 scalefont setfont
DECMCSエンコーディングを使用するには,このエンコーディング・ベクタを定義する装置制御ライブラリ・ モジュール(LPS$DECMCSENCODING)も指定しなければなりません。LPS$DECMCSENCODING モジュールはエンコーディング・ ベクタだけを提供します。バージョン40以前のPostScriptで未定義だった文字は定義されません。
例 E-1では,DECMCSエンコーディング・ ベクタの定義方法が示されています。
DECMCSエンコーディング・モジュールを使用するには,次のように指定します。
$ PRINT/SETUP=(LPS$DECMCSENCODING) filename.PS
弊社以外で製造され,バージョン40以前のPostScriptバージョンのPostScript プリンタを使用する場合には,このエンコーディングを使用するPostScript ファイルを印刷するために,ISO Latin-1エンコーディング・ ベクタを定義しなければなりません。たとえば,PostScriptの以前のバージョンを使用するタイプセッタで印刷するために,ISO Latin-1 エンコーディング・ ベクタを必要とするPostScriptプログラムがあるとします。
この場合には,encodefont プロシージャを使用できますが, PostScriptプログラムのプロローグでISO Latin-1エンコーディング・ ベクタを定義しなければなりません。装置制御ライブラリからLPS$ISOLATIN1ENCODING モジュールを取り出してください。
$ LIB - /Extract=LPS$ISOLatin1Encoding - /Out=ISOLatin1Encoding.ps - Sys$Library:DCPS$DEVCTL.TLB
LPS$ISOLATIN1ENCODINGモジュールはエンコーディング・ベクタだけを提供します。 このモジュールはバージョン40以前のPostScriptで未定義だった文字は定義しません。