[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ]


E 追加された文字エンコーディング

この章では,次のことについて説明します。

E.1 提供されるエンコーディング・ベクタ

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.2 エンコーディング・ベクタの例

例 E-1では,DECMCSエンコーディング・ ベクタの定義方法を示しています。これらのエンコーディング・ ベクタの定義方法についての詳しい説明は,『Digital PostScript Printers Programmer's Supplement 』を参照してください。

エンコーディング・ベクタDECMCSEncodingは,ISOLatin1Encodingというベクタを変更することにより定義されます。

例 E-1 DECMCSエンコーディング・ ベクタの定義

%! 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

E.3 追加エンコーディングの使用

Adobe Standard Encoding以外の文字エンコーディングを使用するには, 次の操作を実行します。

  1. 新しいフォントを作成するために,PostScriptプログラムのプロローグで, エンコーディング・ベクタをフォントに適用するプロシージャ, たとえば,encodefont を定義します。findfont を起動する前に,ユーザ・プログラムで encodefont を呼び出すことにより, 適切なエンコーディング・ベクタを使用してフォントをエンコーディングします。 encodefont のコードは次のとおりです。
         /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
    

  2. encodefont プロシージャを使用して新しいフォントを作成します。 このプロシージャは3つの引数を必要とします。

    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エンコーディング・ ベクタの定義方法が示されています。

E.4 プリント・ジョブでのDECMCSエンコーディング・ モジュールの指定

DECMCSエンコーディング・モジュールを使用するには,次のように指定します。

     $ PRINT/SETUP=(LPS$DECMCSENCODING) filename.PS

E.5 サード・パーティ・プリンタのためのISO Latin-1 の定義

弊社以外で製造され,バージョン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で未定義だった文字は定義しません。


[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ]