Apple Advanced Typography
Apple Advanced Typography ( AAT )は、先進的なフォントレンダリングのためのApple Inc.のコンピューターテクノロジーであり、1990年代半ばのAppleのほとんど使用されていないQuickDraw GXフォントテクノロジーの後継であるタイポグラファー向けの国際化と複雑な機能をサポートしています。これはTrueTypeアウトラインフォント標準の拡張セットであり、AdobeおよびMicrosoftが開発したOpenTypeフォント形式とGraphiteに類似したスマートフォント機能を備えています。また、Adobeの「マルチマスター」フォント形式の概念が組み込まれているため、特性の軸を定義し、各軸に沿ってグリフを個別にモーフィングできます。 AATフォント機能は、基礎となる入力テキストを変更しません。グリフ変換中の文字の表現にのみ影響します。
特徴
現在、AATの重要な機能は次のとおりです。
- 数度の合字制御
- K田正当化と参加者
- クロスストリームカーニング(たとえば、Nasta'liq Urduに必要)
- インド語の母音の再配置
- 独立して制御可能な代替:
- 古いスタイルの数字
- スモールキャップとドロップキャップ
- スワッシュバリアント
- 代替グリフ:
- グリフ単位の個別の代替
- 刻まれたテキストなどの代替品
- フォント設計者が追加したいその他のもの
- グリフバリエーション軸
AATフォント機能は、Mac OS 8.5以上およびmacOSのすべてのバージョンでサポートされています。クロスプラットフォームICUライブラリは、左から右へのスクリプトの基本的なAATサポートを提供しました。HarfBuzzバージョン2は、AATシェーピングサポート、Chrome / Chromiumバージョン72およびLibreOfficeバージョン6.3が代わりに使用する技術のオープンソース実装を追加しました。クロスプラットフォーム方式でmacOS AATフォントをレンダリングするためのCoreText。
OS X YosemiteおよびiOS 8の時点で、AATは言語固有のシェーピングをサポートします。つまり、表現に使用されている人間の言語に応じてグリフの処理方法を変更します。このサポートは、Core Textの言語タグを使用して利用できます。同時に、「kerx」テーブルと「ankr」テーブルを介したアンカーポイントを介した2つのグリフの相対的な配置に関する規定が追加されました。
macOSのAATおよびOpenType
Mac OS X 10.5 Leopardでは、OpenTypeの部分的なサポートが利用可能です。 2011年現在、サポートは欧文およびアラビア文字に限定されています。フォントにAATテーブルがある場合、それらはタイポグラフィに使用されます。フォントにAATテーブルがなく、OpenTypeテーブルがある場合は、システムがサポートする範囲で使用されます。
これは、Mac OS X 10.5では西欧または中東のスクリプト用の多くのOpenTypeフォントを変更せずに使用できるが、タイ語やデーバナーガリーなどの南アジアのスクリプトは変更できないことを意味します。これらには、適切なレイアウトのためにAATテーブルが必要です。
AATレイアウト
AATでは、テキストレイアウトが発生する前に、テキストを完全にグリフに変換する必要があります。テキストの操作は、すべてグリフレイヤー内で行われます。
AATレイアウトプロセスで使用されるコアテーブルは「morx」テーブルです。このテーブルは一連のチェーンに分割され、各チェーンはさらにサブテーブルに分割されます。チェーンとサブテーブルは順番に処理されます。各サブテーブルが検出されると、レイアウトエンジンはサブテーブル内のフラグを、一般的にユーザー設定から派生したコントロールフラグと比較します。これにより、サブテーブルが処理されるかどうかが決まります。
フォントの利用可能な機能のセットは、「feat」テーブルを介してユーザーがアクセス可能になります。このテーブルは、エンドユーザーに機能を説明するために使用できるローカライズ可能な文字列へのポインターと、機能が選択された場合にテキストエンジンに送信する適切なフラグを提供します。フィーチャは、それらの「feat」テーブルにエントリを含めないという単純な手段により、ユーザーには見えないようにすることができます。 Appleは、たとえば、必要な合字をサポートするためにこのアプローチを使用します。
サブテーブルは、非コンテキストグリフ置換、コンテキストグリフ置換、グリフ再配置、グリフ挿入、および合字形成を実行できます。コンテキストアクションは周囲のテキストに敏感です。たとえば、単語の末尾以外の任意の場所でsを自動的に中間sに変換するために使用できます。
非コンテキストグリフ置換の「morx」サブテーブルは、置換されたグリフとその代替との間の単純なマッピングテーブルです。他のすべては、有限状態マシンの使用を伴います。
有限状態マシンを処理するために、グリフはクラスに編成されます。クラスは、単一のグリフ(合字の形成など)のみを含む小さい場合もあれば、数十個以上のグリフを含む場合もあります。明示的なクラスに含まれていないグリフには、特別なクラスが自動的に定義されます。特殊なクラスは、グリフストリームの最後とグリフストリームから削除されたグリフにも使用できます。
テキストの開始状態から始めて、レイアウトエンジンはテキストをグリフごとに解析します。現在の状態と遭遇するグリフのクラスに応じて、新しい状態に切り替わり、適切なアクションを実行する可能性があります。このプロセスは、グリフストリームがなくなるまで続きます。
有限状態マシンを使用すると、「morx」テーブルを比較的小さく、比較的迅速に処理できます。また、かなりの柔軟性を提供します。ただし、Appleのフォントツールでは生の状態テーブル情報を介して「morx」テーブルを生成する必要があるため、作成やデバッグが困難になる場合があります。また、フォントデザイナーは、「morx」サブテーブルが目的の効果を得るために正しく順序付けられていることを確認する責任があります。
AATは完全にグリフで動作し、文字では動作しないため、適切な表示を生成するために必要なすべてのレイアウト情報はフォント自体に含まれています。これにより、OSからの特定のサポートを必要とせずに、新しいスクリプトにフォントを追加できます。サードパーティは、Appleによって公式にサポートされていないスクリプト用のフォントを作成でき、macOSで動作します。一方、これは、特定のスクリプトのすべてのフォントが、独自の「morx」テーブルにあるスクリプトのシェーピング情報の独自のコピーを必要とすることも意味します。
他のAATテーブル(または標準TrueTypeテーブルのAAT固有の拡張)では、状況依存のカーニング、正当化、および合字の分割が可能です。 AATはバリエーションフォントもサポートしています。バリエーションフォントでは、ユーザーが指定したスケーリング値に応じてフォントの形状が変化します。バリエーションフォントは、エンドポイントが定義され、中間値が有効なAdobeの機能のないマルチプルマスターフォントに似ています。これにより、ユーザーはユーザーインターフェイスのスライダーをドラッグして、グリフを高くしたり短くしたり、太くしたり薄くしたり、セリフのサイズを増減したりすることができます。グリフの根本的な形状も根本的に変更されている場合があります。 2016年9月にOpenTypeがFont Variationを導入する前は、OpenTypeにはこのようなものはありません。
他のAATテーブルも、ポイントサイズに依存する効果を持つ場合があります。たとえば、12ポイントでは、水平ストロークと垂直ストロークの幅を同じにすることができますが、300ポイントでは、ストローク幅の変動が非常に大きくなる可能性があります。
実際には、「morx」テーブルで利用できる機能以外の技術の機能を使用するAATフォントはほとんどありません。 Zapfino、Hoefler Text、およびSkiaは、macOSに付属するフォントで、さまざまなAATの機能を示しています。
インド系スクリプトのAAT
インド語スクリプトの場合、必要な機能はグリフの並べ替えと置換のみです。 AATはこれらの両方をサポートしています。上記のように、インド語スクリプト用のOpenTypeフォントは、macOSで適切に機能する前にAATテーブルを追加する必要があります。ただし、これはOpenTypeのシステムサポートに依存するソフトウェアにのみ適用されます。 OpenTypeの独自の実装を提供するプログラムは、OpenTypeフォントでインド語を適切にレンダリングします。 (ただし、AATテーブルでインド語フォントを正しくレンダリングできない場合があります。)
Mac OS X 10.5には、デーバナーガリー語、グルムキー語、グジャラート語、タイ語、チベット語、タミル語のフォントが付属しています。他のインド語スクリプトのフォントは、macOSおよびiOSの以降のバージョンに含まれており、サードパーティから入手可能です。