最終更新日: 2025年2月20日

Title - PostScript: A Clear Explanation

PostScriptとは?

PostScript (PS) は1982年にAdobe Systemsによって開発されたページ記述言語(PDL)です。これは、主にデスクトップパブリッシング、印刷、グラフィックデザインにおいて、テキストや画像をページ上でどのようにレンダリングするかを記述するために使用されます。

PostScript: Features and Applications

PostScript (PS) の解説

PostScript (PS) は、ページ記述言語(PDL) であり、同時に 動的型付きスタックベースプログラミング言語でもあります。以下はその説明です:

1. ページ記述言語(PDL)とは?

ページ記述言語は、グラフィックとテキストが印刷ページや画面上でどのように表示されるかを定義します。PostScriptは、プリンター、出版ソフトウェア、デジタル組版でフォント、画像、レイアウトを正確にレンダリングするために使用されます。

2. スタックベースのプログラミング言語とは?

PostScriptはコマンドを処理するためにスタックを使用し、**後入れ先出し(LIFO)**アプローチに従います。例えばPostScriptで二つの数を加算するためには、スタックに数をプッシュし、オペレーターを呼び出して処理します:

10 20 add

これは 1020 をスタックにプッシュし、add コマンドがそれらをポップして結果 (30) を再びスタックにプッシュします。

3. 動的型付き

PostScriptは明確な型定義を必要としません。変数は事前に定義された型なしに異なる型(数値、文字列、配列など)を保持できます。

4. PostScriptの用途

PostScriptは主にデスクトップパブリッシングと電子出版で使用されており、フォント、レイアウト、グラフィックスを正確に制御して高品質のドキュメントを作成・印刷することに役立ちます。

5. チューリング完全な言語

チューリング完全 であるということは、理論的には十分なメモリと時間があれば任意の計算を行うことができることを意味します。つまり、単に印刷するだけでなく、一般的なプログラミングタスクにも使用できるということです。

6. 歴史と開発

  • 1982年から1984年までにAdobe Systemsによって開発されました。
  • ジョン・ウォーノック、チャールズ・ゲシュケ、ダグ・ブロツ、エド・タフト、ビル・パクストンにより作成されました。
  • 最新版の PostScript 31997年にリリースされ、性能向上、カラーマネジメント、画像圧縮が追加されました。

PostScriptの歴史

PostScriptの起源は1976年に遡ります。この時、ジョン・ギャフニーエバンス&サザーランドでグラフィックデータベースに取り組んでいる間に、ページ記述言語のコンセプトを開発しました。同時期に、ゼロックスPARCレーザープリンターを開発しており、ページ画像を定義するための標準を必要としていました。彼らは最初にPress形式を作成し、その後1978年にジョン・ギャフニーとマーティン・ニューウェルによって開発されたInterpressに進化しました。

The Evolution and Impact of PostScript

1982年ジョン・ウォーノックとチャック・ゲシュケはゼロックスPARCを離れ、Adobe Systemsを共同設立しました。ここで彼らはダグ・ブロツ、エド・タフト、ビル・パクストンと共に、Interpressのより簡素化された代替としてPostScriptを開発しました。1984年に商業的にリリースされました。

PostScriptの成功におけるAppleの役割

1983年スティーブ・ジョブズMacintosh用にPostScriptの可能性を見出し、Adobeからライセンスを150万ドルで、さらにAdobeの株式の20%の250万ドルで取得しました。また、Adobeを購入しようとしましたが失敗しました。続いてAppleとAdobeは協力して、1985年に発売されたAppleのLaserWriterプリンター用にPostScriptを最適化し、デスクトップパブリッシング革命において重要な役割を果たしました。

Adobeのフォントレンダリングとヒンティングにおけるブレークスルーにより、PostScriptは低解像度の300-dpi Canonレーザープリンタでも利用可能になりました。Adobeは、この技術を企業秘密として保持するために特許取得を見送りました。

PostScriptの衰退と遺産

1980年代から1990年代にかけて、PostScriptはレーザープリンターで広く使用されましたが、その高い処理能力とメモリ要求により、コストが高くなりました。その後、印刷機が安価になりコンピュータが強力になったため、ソフトウェアベースのソリューションがハードウェア処理を置き換えました。2001年までに、ほとんどの低価格プリンターはインクジェット技術ソフトウェアレンダリングを採用し、PostScriptのサポートをやめました。

それでもなお、PostScriptは高性能なプロフェッショナルプリンターにおいて支配的な地位を占めており、コンピュータからプリンターへレンダリングをオフロードして性能を向上させています。さらに、PDF(ポータブルドキュメントフォーマット)—PostScriptの直接の子孫—は電子文書配信の標準となっています。

PostScriptのレベル

PostScriptは、機能性、性能、効率を向上させるさまざまなレベルを通じて進化してきました。大きく三つの主要なレベルがあります。

Evolution of PostScript Levels

1. PostScript Level 1(1984年)

オリジナルのPostScript(1984年にリリースされたLevel 1)は、ユーザーがテキストグラフィックス画像を用いてページレイアウトを正確に制御することを可能にし、初期のレーザープリンターで使用されました。しかし、これはグレースケールに限定され、複雑なグラフィックスをゆっくり処理し、画像圧縮の欠如により大きなファイルが生成されました。

  • 1984年Adobeからリリースされたオリジナルバージョン。
  • テキスト、グラフィック、画像のためのデバイスに左右されないページ記述を提供。
  • タイポグラフィーとレイアウトの正確な制御を可能に。
  • 最初のPostScriptプリンターで使用され、Apple LaserWriterが含まれる。
  • 制限点:
    • カラーサポートの欠如(グレースケールのみ)。
    • 複雑なグラフィックの遅い処理
    • 画像圧縮がないため、大きなファイルサイズが問題。

2. PostScript Level 2(1991年)

PostScript Level 2(1991)は性能を向上し、カラー印刷を追加し、ファイルを圧縮し、フォントを改良し、複雑なグラフィックスの処理速度を上げました。

  • 性能メモリ効率が向上。
  • カラー印刷(CMYKおよびスポットカラー)のサポートが追加。
  • データ圧縮を導入し、ファイルサイズを削減。
  • フォントハンドリングの改善(Type 1とType 3フォント)。
  • テキストレンダリングの向上のためにパターン、形状、および合成フォントを導入。
  • レベル1と比較して、複雑なグラフィックスの処理が速くなった。

3. PostScript 3 (1997)

PostScript 3(1997)は、急速なレンダリング、優れた色管理、非常に高解像度印刷のサポート、フォントの改良、グラフィックス効果の向上を提供する大規模なアップデートでした。現在はあまり一般的ではありませんが、一部の高性能印刷でまだ使用されています。

  • 主要なアップグレードであり、より効率的なレンダリング
  • ICCプロファイルを使用した向上したカラーマネジメント
  • 高解像度印刷のサポート向上(2400 dpiを超える)。
  • フォントハンドリングの改善Multiple Masterフォントのサポートを含む。
  • より多くの透明性とシェーディング効果(より良いグラフィックスレンダリング)。
  • 現代の出版ではPDFベースのワークフローに置き換えられたが、依然として高性能プリンターで使用されている。

印刷におけるPostScript

PostScriptが登場する前:

  • 既存のプリンターは通常ASCIIテキスト文字のみを印刷し、固定されたグリフ(例:タイプライターキー、金属バンド、または光学プレート)を使用。
  • ドットマトリクスプリンターは選択可能なフォントとカスタムグリフのアップロードを導入し、エスケープシーケンスによる基本的なラスターグラフィックスをサポートしましたが、 特定のプリンターモデルごとに特定のドライバーが必要でした
  • ベクトルグラフィックスプロッター(例:HPGLベース)によって処理されましたが、遅く、高価で、グラフィックスのみに制限されていました

PostScript印刷:

  • レーザープリンターはドットマトリクスプリンターとプロッターの利点を組み合わせ、1ページ上に高品質なテキストとグラフィックスを可能に。
  • PostScriptは、異なるプリンターやソフトウェアにわたる印刷制御を統一し、デバイス非依存の言語
  • 従来のプリンター制御言語とは異なり、PostScriptは本格的なプログラミング言語であり、正確なドキュメントレンダリングを可能に。
  • オンザフライでのラスター化: PostScriptは、直線とベジエ曲線を使用してテキストを含むすべてを定義し、滑らかなスケーリング、回転、変形を可能に。
  • PostScriptのインタープリター、つまり**ラスターイメージプロセッサー(RIP)**は、指示をドットに変換し、最終的な出力に必要なものにする。

PostScriptフォントの処理

PostScriptのフォントシステムは、基本的なグラフィックシェイプを使用してスケーラブルなグリフを作成し、フォントがサイズにかかわらず品質を失わずにリサイズできるようにします。フォントヒンティングが採用されており、小さなサイズや低解像度でもフォントが鮮明で読みやすく保たれるようになっています。PostScriptフォントは、さまざまな専門の「タイプ」形式で保存されており、それぞれ異なる機能を提供します。

PostScript Font Evolution

PostScriptフォントシステム

  • スケーラブルなグリフの定義グラフィックプリミティブを使用します。
  • フォントヒンティングが、高品質のレンダリングを低解像度でも保証。
  • フォントは、さまざまな機能を持つ専門の種類の形式で保存されました。

PostScript フォントの種類

PostScriptは、さまざまなフォント形式を提供しました。Adobeの高品質なType 1フォントは当初ライセンスされ、一方でType 3フォントは標準的なヒンティングがなく、他者が使用していました。Type 2およびCFF形式はファイルサイズを削減し、OpenTypeの基礎を築きました。CID-Keyedフォントは大規模なアジア系文字セットに対応し、Type 1またはType 2の構造を使用することが可能です。

  • Type 1 フォント (T1):

    • Adobeによる圧縮および暗号化されたプロプライエタリフォーマット
    • 高品質でヒンティングされたフォントに使用。
    • Adobeは当初Type 1技術のライセンスを有料で提供。
  • Type 3 フォント (T3):

    • 完全なPostScript機能を可能にするが、標準化されたヒンティングが欠如
    • Type 1技術をライセンスできなかった者によって使用されました。
  • Type 2 Font (T2) & Compact Font Format (CFF):

    • フォントファイルサイズが小型化され、効率が向上。
    • OpenTypeフォントの基礎となる。
  • CIDキーテーブルフォント:

    • アジア系(CJK)文字セット対応の広大なエンコーディングスペース用に設計。
    • さまざまなフォント構造にType 1またはType 2を使用可能。

フォント形式の進化

Appleは、Adobeのフォントに対抗するためにTrueTypeフォントを作成しました。これにより、Adobeは自社のフォントの仕組みを公開せざるを得なくなり、AdobeとMicrosoftは協力してOpenTypeフォントを開発しました。これにより、両者の利点を兼ね備え、現代の標準的なフォント形式となりました。

  • TrueType (1991年):

    • Appleにより開発。Adobeのシステムに対抗するため。
    • これによりAdobeはType 1規格を公に公表することを強いられた。
  • OpenType (Late 1990s):

    • AdobeとMicrosoftが共同開発。
    • Type 1 と TrueTypeの機能を統合。
    • 現代のフォントの業界標準に。

Type 1 サポートの終了

  • Adobeは公式に2023年1月にType 1フォントのサポートを終了し、OpenTypeを支持。

ポータブルドキュメントフォーマット(PDF)とPostScript

PDF vs. PostScript

PDFとPostScriptは、同じ基盤的なグラフィックシステムを使用しているため、印刷された出力は同一です。その主な違いはその構造にあります:PostScriptは完全なプログラミング言語であり、動的な操作を可能にする一方で、PDFはより効率的な表示とナビゲーションのために最適化されたより簡潔な静的フォーマットです。これらの違いにも関わらず、両方の形式は相互に変換可能です。

Understanding PostScript and PDF
  • 類似したイメージングモデルPDFとPostScriptは同じグラフィックシステムを使用しており、印刷された出力は同一です。
  • 違いは何ですか?
    • PostScriptチューリング完全なプログラミング言語で、動的な操作が可能。
    • PDFは、効率的な表示とナビゲーションに最適化された静的データ構造
  • 相互変換可能性 — PDFをPostScriptに変換することができ、その逆も可能。

PostScript言語

PostScriptは、動的型付きでスタックベースのプログラミング言語であり、Forthに似ていますが、Lispのようなデータ構造を持っています。これは**逆ポーランド記法(RPN)**を使用し、注意深いメモリ管理が必要です。PostScriptは配列と辞書を使用し、ランタイムで型を処理し、ガーベジコレクションが含まれています。コメントは「%」で始まり、プログラムは通常「%!PS」で始まります。

  • チューリング完全 & スタックベースForthに類似するが、動的に型付けされ、Lispのようなデータ構造を持つ。
  • 逆ポーランド記法(RPN) — オペレーターがスタックを操作し、注意深い管理が必要。
  • メモリ管理
    • 局所的なメモリを使用。
    • PostScript Level 2ガーベジコレクションを導入。
  • データ構造
    • 配列と辞書を使用。
    • 型の明示的な定義は必要なく、型は実行時に管理されます。
  • コメントとプログラム構造
    • % がコメントの導入を示す。
    • プログラムは通常**"%!PS"**で始まり、PostScript形式を示す。

PostScriptの使い方

  • 主にソフトウェアによって生成され、人間が自らコードを書くことはあまりない。
  • オートメーションのために使われる本格的なプログラミング言語としても使用可能。
  • プリンター(RIP)オンスクリーンビューワーによって解釈される。

シンプルなPostScriptファイルの例

以下は「Hello, World!」をページに印刷するPostScript (.ps) ファイルの簡単な例です:

%!PS
/Times-Roman findfont 24 scalefont setfont
100 700 moveto
(Hello, World!) show
showpage

説明:

  1. %!PS → ファイルをPostScript ドキュメントとして識別。
  2. /Times-Roman findfont 24 scalefont setfont → サイズが 24Times-Roman フォントを選択。
  3. 100 700 moveto → カーソルをページ上の座標 (100, 700) へ移動。
  4. (Hello, World!) show → 特定の位置に “Hello, World!” を印刷。
  5. showpage → プリンターにページを印刷するように指示。

これをhello.psとして保存し、GSviewGhostscript などのPostScriptビューアで開くか、PostScriptプリンターに送信して印刷します。

Hello.psのレンダリング後

Title - Hello.ps After Rendering

PostScriptファイルをレンダリングするソフトウェアのリスト

PostScriptビューア & インタープリター

  1. Ghostscript (オープンソース) – PostScriptとPDFの人気のあるインタープリター。
  2. GSview – GhostscriptのGUIフロントエンド。
  3. MuPDF – PostScriptとPDFをサポートする軽量ビューア。
  4. Xpdf – 一部のPostScriptをサポートするオープンソースのPDFビューア。
  5. Evince – PostScriptファイルを処理できるGNOMEドキュメントビューア。
  6. Okular – PostScriptをサポートするKDEドキュメントビューア。
  7. Apple Preview – macOSに組み込まれた、PostScriptとPDFをサポートするビューア。

PostScriptプリンターとラスタライザー

  1. Adobe Acrobat Distiller – PostScriptを高品質なPDFに変換。
  2. CUPS(共通UNIXプリンティングシステム) – Unix/Linux上でのPostScript印刷を管理。
  3. PPR(プリンタプロダクションリリース) – PostScriptのスポーラ&レンダラー。

ベクターグラフィック&DTPソフトウェア

  1. Adobe Illustrator – PostScriptファイルの開ける&編集可能。
  2. CorelDRAW – ベクターグラフィックでのPostScriptサポート。
  3. Scribus – PostScriptをサポートするオープンソースのデスクトップパブリッシングソフトウェア。
  4. Inkscape – PostScriptをインポート/エクスポート可能(Ghostscript経由)。

コマンドラインおよび変換ツール

  1. ps2pdf (Ghostscriptの一部) – PostScriptをPDFに変換。
  2. pstopdf (macOSコマンドラインツール) – PostScriptをPDFに変換。
  3. ImageMagick – PostScriptファイルを画像にレンダリング可能。