PostScript

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
PostScript
パラダイムマルチパラダイムスタックベース手続き型
によって設計されたジョン・ワーノックチャック・ゲシュケダグ・ブロッツエド・タフトビル・パクストン
デベロッパーアドビシステム
初登場1982 ; 40年前 (1982
安定リリース
PostScript 3/1997 ; 25年前 (1997
規律の入力ダイナミックで弱い
主な実装
Adobe PostScript、TrueImageGhostscript
に影響を受けた
Mesa[1] InterpressLisp
影響を受け
PDF
PostScript(ファイル形式)
ファイル名拡張子
.ps
インターネットメディアタイプ
アプリケーション/追記
ユニフォームタイプ識別子(UTI)com.adobe.postscript
マジックナンバー%!
によって開発されたアドビシステム
フォーマットの種類印刷ファイル形式
に拡張カプセル化されたPostScript

PostScriptPS)は、電子出版およびデスクトップパブリッシングビジネスにおけるページ記述言語です。これは、動的に型付けされた連結プログラミング言語です。1982年から1984年にかけて 、 Adobe Systemsで、John WarnockCharles Geschke、Doug Brotz、Ed Taft、BillPaxtonによって作成されました。

歴史

PostScript言語の概念は、1976年にEvans&SutherlandJohnGaffneyによってシードされました[ 2] [3] [4]コンピュータグラフィックス会社。当時、ガフニーとジョンワーノックは、ニューヨーク港の大規模な3次元グラフィックスデータベースの通訳を開発していました

同時に、Xerox PARCの研究者は最初のレーザープリンターを開発し、ページ画像を定義する標準的な手段の必要性を認識していました。1975-76年、ボブスプロールウィリアムニューマンはプレスフォーマットを開発しました。これは最終的にゼロックススターシステムでレーザープリンターを駆動するために使用されました。しかし、言語ではなくデータ形式であるPressは柔軟性に欠け、PARCは後継者を作成するために Interpressの取り組みを開始しました。

1978年にジョンガフニーとマーティンニューウェルはXeroxPARCでJ&MまたはJaM [5] [6](「ジョンとマーティン」の略)を書きました。これはVLSI設計とタイプおよびグラフィックス印刷の調査に使用されました。この作品は後に進化し、Interpress言語に拡張されました。

ワーノックはチャック・ゲシュケと共に去り、1982年12月にアドビシステムズを設立しました。彼らはダグ・ブロッツ、エド・タフト、ビル・パクストンとともに、1984年に発売されたPostScriptと呼ばれるInterpressに似たより単純な言語を作成しました。スティーブ・ジョブズが訪問し、レーザープリンターを駆動するための言語として使用されるようにPostScriptを適応させるように促しました。

1985年3月、Apple LaserWriterはPostScriptを搭載した最初のプリンタであり、1980年代半ばにデスクトップパブリッシング(DTP)革命を引き起こしました。技術的なメリットと幅広い可用性の組み合わせにより、PostScriptは印刷アプリケーションのグラフィカル出力に最適な言語になりました。しばらくの間、PostScript言語のインタプリタ(ラスターイメージプロセッサのRIPと呼ばれることもあります)は、1990年代までレーザープリンタの一般的なコンポーネントでした。

ただし、実装のコストは高かった。コンピューターは、プリンターによって解釈される生のPSコードを、プリンターの自然な解像度でラスターイメージに出力します。これには、高性能のマイクロプロセッサと十分なメモリが必要でした。LaserWriterは12MHz Motorola68000を使用しました、接続されているどのMacintoshコンピュータよりも高速になります。レーザープリンターエンジン自体のコストが1,000ドルを超える場合、PSの追加コストはわずかでした。しかし、プリンターメカニズムの価格が下がると、PSの実装コストは、プリンター全体のコストの何分の1かになりすぎました。さらに、デスクトップコンピュータがより強力になるにつれて、ラスタライズ作業をリソースに制約のあるプリンタにオフロードすることはもはや意味がありません。2001年までに、PostScriptをサポートするローエンドプリンターモデルはほとんどありませんでした。これは主に、はるかに安価な非PostScriptインクジェットプリンターとの競争の激化と、コンピューター上でPostScriptイメージをレンダリングする新しいソフトウェアベースの方法により、あらゆるプリンターに適したものになっています。 ; PDFは、PostScriptの子孫​​であり、そのような方法の1つを提供し、電子文書配布の 事実上の標準としてPostScriptに大きく取って代わりました。

ハイエンドプリンターでは、PostScriptプロセッサーが一般的であり、それらを使用することで、ドキュメントの印刷に伴うCPU作業を大幅に削減し、PostScriptイメージのレンダリング作業をコンピューターからプリンターに転送できます。

PostScriptレベル1

PostScript言語の最初のバージョンは、1984年に市場にリリースされました。レベル2が導入されたときに、 接尾辞レベル1が追加されました。

PostScriptレベル2

PostScriptレベル2は1991年に導入され、速度と信頼性の向上、ラスター内画像処理(RIP)分離のサポート、画像の解凍(たとえば、JPEG画像はPostScriptプログラムでレンダリングできます)、コンポジットのサポートなど、いくつかの改善が含まれています。フォント、および再利用可能なコンテンツをキャッシュするためのフォームメカニズム。

PostScript 3

PostScript 3(Adobeは単純なバージョン管理を優先して「レベル」の用語を削除しました)は1997年の終わりに登場し、古い演算子の多くの新しい辞書ベースのバージョンとともに、より優れた色処理と新しいフィルター(プログラム内圧縮を可能にする)を導入しました/解凍、プログラムチャンク、および高度なエラー処理)。

PostScript 3は、既存の独自のカラー電子プリプレスシステムを置き換えるという点で重要であり、その後、最大4096のグレー(PostScriptレベル2で使用可能な256ではなく)のスムーズなシェーディング操作を導入することで、雑誌の制作に広く使用されました。また、DeviceNは、複合カラーページ に追加のインクカラー(スポットカラーと呼ばれる)を追加できるカラースペースです。

印刷に使用

PostScriptの前

PostScriptが導入される前は、プリンタは、入力としてテキスト(通常はASCII)を指定して文字出力を印刷するように設計されていましたこの作業には多くの技術がありましたが、ほとんどの場合、タイプライターの鍵盤、金属の帯、または光学板に 刻印されているため、グリフを物理的に変更するのは難しいという特性を共有していました。

これは、ドットマトリックスプリンタの人気の高まりとともにある程度変化しましたこれらのシステムの文字は、プリンター内のフォントテーブルで定義されているように、一連のドットとして描画されました。高度化するにつれて、ドットマトリックスプリンターには、ユーザーが選択できるいくつかの組み込みフォントが含まれるようになり、一部のモデルでは、ユーザーが独自のカスタムグリフをプリンターにアップロードできるようになりました。

ドットマトリックスプリンターは、ラスターグラフィックスを印刷する機能も導入しましたグラフィックはコンピューターによって解釈され、一連のエスケープシーケンスを使用して一連のドットとしてプリンターに送信されましたこれらのプリンター制御言語はプリンターごとに異なり、プログラム作成者は多数のドライバーを作成する必要があります。

ベクターグラフィックスの印刷は、プロッタと呼ばれる専用デバイスに任されていましたほとんどすべてのプロッタは、共通のコマンド言語であるHPGLを共有していましたが、グラフィックスの印刷以外には使用が制限されていました。さらに、それらは高価で遅い傾向があり、したがってまれでした。

PostScript印刷

レーザープリンターは、プリンターとプロッターの両方の最高の機能を兼ね備えています。プロッタと同様に、レーザープリンタは高品質の線画を提供し、ドットマトリックスプリンタと同様に、テキストとラスターグラフィックのページを生成できます。プリンタやプロッタとは異なり、レーザープリンタを使用すると、高品質のグラフィックとテキストを同じページに配置できます。PostScriptは、あらゆるブランドのプリンターで使用できる単一の制御言語を提供することにより、これらの特性を十分に活用することを可能にしました。

PostScriptは、通常のプリンタ制御言語を超えており、独自の完全なプログラミング言語でした。多くのアプリケーションは、ドキュメントをPostScriptプログラムに変換できます。その実行により、元のドキュメントが作成されます。このプログラムは、プリンターのインタープリターに送信してドキュメントを印刷したり、別のアプリケーション内のインタープリターに送信してドキュメントを画面に表示したりできます。ドキュメントプログラムは宛先に関係なく同じであるため、デバイスに依存しないと呼ばれます。

PostScriptは、テキストも含めてすべてが直線と3次ベジェ曲線(以前はCADアプリケーションでのみ見られた)で指定される「オンザフライ」ラスタライズを実装することで注目に値します。これにより、任意のスケーリング、回転、およびその他の変換が可能になります。PostScriptプログラムが解釈されると、インタプリタはこれらの命令を出力を形成するために必要なドットに変換します。このため、PostScriptインタープリターはPostScriptラスターイメージプロセッサーまたはRIPと呼ばれることもあります。

フォント処理

PostScript自体とほぼ同じくらい複雑なのは、フォントの処理です。フォントシステムは、PSグラフィックスプリミティブを使用してグリフを曲線として描画し、それを任意の解像度でレンダリングできます。このアプローチでは、多くの活版印刷の問題を考慮する必要がありました。

1つの問題は、フォントが小さいサイズで直線的に拡大縮小せず、グリフの特徴が比例して大きすぎたり小さすぎたりして、不快に見え始めることです。PostScriptは、フォントヒントを含めることでこの問題を回避しました。この問題では、ラスタライザーが維持するのに重要な各文字の機能を識別するのに役立つ追加情報が水平または垂直のバンドで提供されます。その結果、低解像度でもフォントの見栄えが大幅に向上しました。以前は、このタスクには手動で調整されたビットマップフォントが必要であると考えられていました。

当時、これらのヒントをフォントに含めるための技術は慎重に保護され、ヒント付きフォントは、AdobeがType 1フォントPostScript Type 1フォントPS1T1、またはAdobe Type 1とも呼ばれる)と呼ばれるものに圧縮および暗号化されていました。タイプ1は、完全な言語ではなく、アウトライン情報のみを格納するためのPSシステムの実質的な簡略化でした(PDFはこの点で類似しています)。その後、アドビは、独自のフォントにヒントを追加したい人に、タイプ1テクノロジーのライセンスを販売します。テクノロジーのライセンスを取得しなかった人には、Type 3フォントPostScript Type 3フォントPS3、またはT3)。タイプ3フォントは、PostScript言語のすべての洗練を可能にしましたが、ヒントへの標準化されたアプローチはありませんでした。

タイプ2フォント形式は、Compact Font Format(CFF)文字列で使用するように設計されており、全体的なフォントファイルサイズを縮小するために実装されました。CFF / Type2形式は、後でOpenTypeフォント でPostScriptアウトラインを処理するための基礎になりました。

CIDキー付きフォント形式は、 OCF / Type 0フォント問題を解決し、複雑なアジア言語(CJK)エンコーディングと非常に大きな文字セットの問題に対処するためにも設計されました。CIDキーのフォント形式は、標準のCIDキーのフォントの場合はType 1フォント形式で、CIDキーのOpenTypeフォントの場合はType2で使用できます。

アドビのシステムと競争するために、アップルは1991年頃に独自のシステムTrueTypeを設計しました。TrueTypeの発表の直後に、アドビはタイプ1フォントフォーマットの仕様を公開しました。Altsys Fontographer (1995年1月にMacromediaによって買収され、2005年5月からFontLabによって所有されている)などの小売ツールは、タイプ1フォントを作成する機能を追加しました。それ以来、多くの無料のType1フォントがリリースされています。たとえば、TeX植字システムで使用されるフォントはこの形式で利用できます。

1990年代初頭には、たとえばビットストリームメタフォントによって開発されたアウトラインベースのフォントを保存するためのシステムが他にもいくつかありましたが、汎用の印刷ソリューションが含まれていなかったため、広く使用されていませんでした。

1990年代後半、AdobeはMicrosoftに加わり、本質的にType1およびTrueType形式の機能的なスーパーセットであるOpenTypeを開発しました。PostScript出力デバイスに印刷する場合、OpenTypeフォントの不要な部分は省略され、ドライバーによってデバイスに送信されるものは、アウトラインの種類に応じて、TrueTypeまたはType1フォントの場合と同じになります。 OpenTypeフォントで存在します。

その他の実装

1980年代、アドビは、ラスターイメージプロセッサまたはRIPとして知られるプリンター用のPostScriptの実装のライセンス料から収益の大部分を引き出しました。1980年代半ばに 多くの新しいRISCベースのプラットフォームが利用可能になったため、アドビによる新しいマシンのサポートが不足していることに気付いた人もいました。

これとコストの問題により、PostScriptのサードパーティによる実装が一般的になりました。特に、低コストのプリンタ(ライセンス料が問題でした)やハイエンドの植字装置(速度の追求で新しいプラットフォームのサポートが必要な場合)で一般的になりました。アドビが提供できるよりも速い)。ある時点で、MicrosoftはAppleにTrueImageと呼ばれるPostScript互換のインタープリターをライセンス供与し、Appleは新しいフォント形式であるTrueTypeをMicrosoftにライセンス供与しました。Appleは最終的にAdobeと合意に達し、そのプリンター用に正規のPostScriptのライセンスを取得しましたが、TrueTypeはWindowsとMacintoshの両方 の標準のアウトラインフォントテクノロジーになりました。

現在、サードパーティのPostScript互換インタプリタは、プリンタや多機能周辺機器(MFP)で広く使用されています。たとえば、CSRplcのIPSPS3 [7]インタープリター(以前はPhoenixPageと呼ばれていました)は、Hewlett-Packardによって開発され、 LaserJetおよびColor LaserJetラインで販売されているものを含め、多くのプリンターおよびMFPで標準となっています。印刷およびMFPメーカーが使用するその他のサードパーティのPostScriptソリューションには、GlobalGraphicsのJaws [ 8 ]およびHarlequinRIPがあります。他のいくつかのアプリケーションを含む無料のソフトウェアバージョンはGhostscriptですいくつかの互換性のあるインタプリタは、文書化されていない印刷Wikiにリストされています。[9]

一部の基本的で安価なレーザープリンターはPostScriptをサポートしていません。代わりに、プラットフォームのネイティブグラフィックス形式を最初にPostScriptに変換するのではなく、単にラスタライズするドライバーが付属しています。このようなプリンタでPostScriptのサポートが必要な場合は、Ghostscriptを使用できます。TeleType Co.のT-Script など、多くの商用PostScriptインタープリターもあります。

表示システムとして使用

PostScriptは、グラフィカルユーザーインターフェイス(GUI)の導入により商業的に成功し、設計者はレーザープリンターで最終的に出力するページを直接レイアウトできるようになりました。ただし、GUI独自のグラフィックシステムは、一般的にPostScriptほど洗練されていませんでした。たとえば、AppleのQuickDrawは、基本的な線と円弧のみをサポートし、PostScriptの複雑なBスプラインと高度な領域塗りつぶしオプションはサポートしていませんでした。PostScript印刷を最大限に活用するには、コンピューター上のアプリケーションは、ホストプラットフォーム独自のグラフィックシステムを使用してこれらの機能を再実装する必要がありました。これにより、これらの機能の実装の違いにより、画面上のレイアウトが印刷出力と正確に一致しないという多くの問題が発生しました。

コンピュータの能力が向上するにつれて、PSシステムをプリンタではなくコンピュータでホストすることが可能になりました。これにより、PSは、印刷システムから、ホスト独自のグラフィック言語としても使用できるシステムへと自然に進化しました。このアプローチには多くの利点がありました。画面とプリンターで異なる出力が発生する可能性を排除するだけでなく、コンピューターに強力なグラフィックシステムを提供し、レーザーエンジンのコストが下がっているときにプリンターを「ダム」にすることができました。本番環境では、PostScriptを表示システムとして使用するということは、ホストコンピューターが画面に低解像度、プリンターに高解像度をレンダリングしたり、PSコードをスマートプリンターに送信してオフボード印刷したりできることを意味します。

ただし、PostScriptは印刷を念頭に置いて作成されており、インタラクティブディスプレイシステムでの直接使用には適さない多くの機能を備えていました。特に、PSは、コマンドが表示されるまでPSコマンドを収集するという考えに基づいていました。showpageコマンドが表示されると、その時点までに読み取られたすべてのコマンドが解釈されて出力されます。インタラクティブシステムでは、これは明らかに適切ではありませんでした。また、PSにはいかなる種類の双方向性も組み込まれていませんでした。たとえば、PSがプリンタで使用されている場合、マウスの双方向性のヒット検出のサポートは明らかに適用されませんでした。

スティーブジョブズがアップルを離れてNeXTを始めたとき、彼は新しいワークステーションコンピュータのディスプレイシステムとしてPSを使用するというアイデアをアドビに売り込みました。結果は、 Display PostScript、またはDPSでした。DPSは、多くの文字列ルックアップを32ビット整数に変更し、すべてのコマンドで直接出力のサポートを追加し、GUIがダイアグラムを検査できるようにする関数を追加することにより、パフォーマンスを向上させる基本機能を追加しました。さらに、PSコードをCプログラミング言語から直接呼び出すことができるように、一連の「バインディング」が提供されましたNeXTは、NeXTStepシステムでこれらのバインディングを使用して、オブジェクト指向を提供しましたグラフィックシステム。DPSはNeXTと組み合わせて作成されましたが、Adobeはそれを商業的に販売し、1990年代のほとんどのUnixワークステーションに共通の機能でした。

Sun Microsystemsは別のアプローチを取り、NeWSを作成しました。PSがCプログラムと対話できるようにするというDPSの概念の代わりに、NeWSはPSをコンピューターのGUI全体を実行するのに適した言語に拡張しました。Sunは、対話性に必要なタイマー、マウスコントロール、割り込み、およびその他のシステム用の新しいコマンドをいくつか追加し、データ構造と言語要素を追加して、内部で完全にオブジェクト指向にすることができるようにしました。完全なGUI(実際には3つ)はNeWSで作成され、ワー​​クステーションで一時的に提供されました。ただし、X11システムを標準化するための継続的な取り組みにより、X11システムが導入され、Sunシステムで広く使用されるようになり、NeWSが広く使用されるようになることはありませんでした。

言語

PostScriptはチューリング完全プログラミング言語であり、連結グループに属しています。通常、PostScriptプログラムは人間によって作成されるのではなく、他のプログラムによって作成されます。ただし、他のプログラミング言語と同じように、PostScriptでコンピュータプログラムを作成することは可能です。[10]

PostScriptは、Forthに似た、解釈されたスタックベースの言語ですが、強力な動的型付け、 Lispにあるものに触発されたデータ構造スコープメモリ、および言語レベル2以降のガベージコレクションを備えています。言語構文は逆ポーランド記法を使用します。これにより、操作の順序が明確になりますが、スタックのレイアウトを念頭に置く必要があるため、プログラムを読み取るにはある程度の練習が必要です。ほとんどの演算子(他の言語で関数と呼ばれるもの)は、スタックから引数を取り、その結果をスタックに配置します。リテラル(たとえば、数値)には、自分自身のコピーをスタックに配置する効果があります。洗練されたデータ構造は配列辞書の型に基づいて構築できますが、型システムに宣言することはできません。型システムでは、それらはすべて配列と辞書としてのみ認識されるため、このようなユーザー定義の「型」に適用される型付けの規律は残ります。それらを実装するコードに。

文字「%」は、PostScriptプログラムでコメントを導入するために使用されます。一般的な規則として、すべてのPostScriptプログラムは、すべてのデバイスがPostScriptとして適切に解釈できるように 、インタプリタディレクティブとして文字「%!PS」で開始する必要があります。

「Helloworld」

特定の言語で完全なプログラムの小さな例を表示する通常の方法であるHelloWorldプログラムは、PostScript(レベル2)では次のようになり ます

 %!PS 
 / Courier              %目的のフォントに名前を付けます
 20  selectfont         %ポイントでサイズを選択し
                      、フォントを現在のフォントとして確立します
 72  500  moveto         %現在のポイントを
                      %座標72、500に配置します(原点は
                      %下にあります-ページの左隅)
 (Hello world!) show   %括弧内のテキストをストローク
 showpage              %ページにすべて印刷

または、出力デバイスにコンソールがある場合

 %!PS 
 (Hello world!) =

長さの単位

PostScriptは、ポイントを長さの単位として使用します。ただし、ポイントの他のバージョンの一部とは異なり、PostScriptはインチに対して正確に72ポイントを使用します。したがって:

1ポイント=1/72インチ=25.4/72mm =127/360mm = 352.777…マイクロメートル

たとえば、長さ4 cmの垂直線を描画するには、次のように入力するだけで十分です。

0 0 moveto
0 113.385827linetoストローク

より読みやすく、慣用的に、次の同等のものを使用することができます。これは、単純な手順の定義と数学演算子の使用を示していmulますdiv

/ cm  { 72  mul  2.54  div }  def %1               インチ= 2.54cm正確
 00 moveto 0  4 cm linetostroke 
     

PostScriptのほとんどの実装は単精度実数(24ビット仮数)を使用するため、実数を指定するために9桁を超える小数を使用することは意味がなく、計算を実行すると許容できない丸め誤差が発生する可能性があります。

ソフトウェア

PostScriptドキュメントのレンダリングに使用できるソフトウェアのリスト:

も参照してください

参考文献

  1. ^ ペリー、TS(1988年5月)。「」「PostScript」は何でも出力します:ケース履歴」。IEEESpectrum。25 542–46。doi10.1109 / 6.4550。S2CID33376390 
  2. ^ Reilly、Edwin(2003)。コンピュータサイエンスと情報技術のマイルストーングリーンウッド出版グループ。p。 206ISBN 9781573565219
  3. ^ Peterson、JK(2018年6月28日)。光ファイバーイラスト辞書テイラーアンドフランシスグループ。ISBN 9781138455757
  4. ^ Nguyen、Binh(2004)。Linux辞書(0.16版)2019年9月28日取得
  5. ^ Reilly、Edwin(2003)。コンピュータサイエンスと情報技術のマイルストーングリーンウッド出版グループ。p。 206ISBN 9781573565219
  6. ^ Biancuzzi、Federico; ウォーデン、シェーン(2009)。「第16章PostScript」。プログラミングの首謀者O'Reilly Media、Inc。ISBN 9780596515171
  7. ^ IPS PS3 、CSR、 2012年7月24日にオリジナルからアーカイブ
  8. ^ Jaws 、グローバルグラフィック、 2016-03-06にオリジナルからアーカイブ、2012-06-13を取得
  9. ^ 「ページ記述言語:Postscript」、フォーマット(wiki)、文書化されていない印刷
  10. ^ PostScriptライブラリドンランカスターの達人の隠れ家。

さらに読む

外部リンク