下記の文章はGlyphs3ハンドブックを個人的に日本語に訳したもので、内容には誤訳を含む可能性もあります。誤訳により生じた一切の責任については負いかねますので予めご了承ください。 参考サイト:Glyphs3 Handbook(PDF)、Glyphs2.3ハンドブック日本語版(PDF)、Glyphs Handbook(WEB)、Microsoft Typography documentation、CSSでのOpenType 機能の構文
第1章 Glyphs 第2章 作成 第3章 環境設定 第4章 編集ビュー 第5章 パレット 第6章 フィルタ 第7章 フォントビュー 第8章 フォント情報 第9章 図形の再利用 第10章 スペーシングとカーニング 第11章 PostScriptヒンティング 第12章 TrueTypeヒンティング 第13章 マルチプルマスター 第14章 カラーフォント 第15章 読み込みと出力 第16章 拡張機能 第17章 補足資料(作成中)
12 TrueType ヒンティング
TrueType (TT) ヒンティングは、低解像度の画面でTrueTypeフォントの表示を最適化する技術です。PostScript/CFF方式のOpenTypeフォントには異なるヒンティング方法を使用します。詳細については、第11章「PostScriptヒンティング」を参照してください。
TrueTypeフォントは、二次ベジェ曲線(クアドラティックスプライン)を使用しています。これは、Glyphsが使用するPostScriptスタイルの三次ベジェ曲線とは異なります。TrueType形式にエクスポートする際、すべてのパスは、手動で設定されたヒンティング指示を含め、TrueTypeスタイルのアウトラインに自動的に変換されます。
グリフレベルのTTヒント(TrueTypeヒント)は、PostScriptヒントと同様に、メインのマスターに対してのみ定義する必要があります。デフォルトでは、マスターリストの最初のマスターがメインのマスターになります。別のマスターをメインマスターとして指定したい場合は、[ファイル] → [フォント情報] → [フォント](Cmd-I)で、「Get Hints From Master」というカスタムパラメータを設定してください。
12.1 オートヒント
TTヒンティングの技術的な詳細は非常に複雑であるため、手動と自動のヒントを混在させることはできません。そのため、TrueType方式のフォントを書き出す際に「すべてのグリフをオートヒント」オプションを選択すると、Glyphsファイル内の手動で設定されたTTヒントは無視されます。
Glyphsは、TrueTypeフォントの自動ヒンティングに「TTF Autohint」を使用します。
TTF Autohintについての詳細は公式ウェブサイトをご覧ください。
TTF Autohintは、ファイル → フォント情報… → エクスポート(Cmd-I)で、「TTFAutohintオプション」と「TTFAutohint制御命令」のカスタムパラメータで設定できます。TTF Autohintは、File → Font Info… → Export (Cmd-I)で、「TTFAutohint options」と「TTFAutohint control instructions」のカスタムパラメータで設定できます。制御命令に必要なポイントインデックスを取得する方法については、12.3.5項「ポイントインデックスの表示」(p.172)を参照してください。
「TTF Autohint」の設定は、「ファイル」→「フォント情報…」→「出力スタイル」(Cmd–I) 内で、「TTFAutohint options(日本語名:TTFAutohint オプション)」と「TTFAutohint control instructions(日本語名:TrueType 制御コード)」のカスタムパラメータを使って行うことができます。制御コードに必要なポイントインデックスの取得方法については、12.3.5「ポイントインデックスの表示」を参照してください。
Autohint エクスポートオプションがチェックされていない場合、「Glyphs」はエクスポートされたフォントに手動によるTTヒンティングの指示を含みます。自動ヒンティングは、手動ヒンティングの出発点として使うこともできます。詳細は12.4項「指示」(p.173)を参照してください。
「すべてのグリフをオートヒント」オプションがチェックされていない場合、Glyphsは出力するフォントに手動で作成したTrueTypeヒンティングの指示を含めます。オートヒントは、手動ヒンティングの出発点としても利用できます。詳細は12.4「インストラクション」を参照してください。
12.2 フォントレベルのヒンティング
TrueTypeヒンティングでは、標準ステム値とTTゾーンを各マスターに使用します。Glyphsは、これらのフォント全体にわたる(フォントレベルの)ヒントを使用して、メインマスターのグリフレベルのヒントを他のすべてのマスターに複製します。
12.2.1 TrueTypeゾーン
ゾーンは、フォント全体の垂直方向の整列を統一するのに役立ちます。アウトラインがスクリーンのピクセルにグリッドフィットされる際に、同じゾーン内にある垂直方向の形状の頂点は、通常はピクセルのエッジに揃えられ、同じ高さに丸められます。ゾーンは、ベースライン、ディセンダー、アセンダー、ショルダーの高さ、数字の高さ、ナビラの高さ、キャップの高さ、レカの高さ、スモールキャップの高さなど、デザインに合った垂直メトリクスに配置します。
デフォルトでは、TTヒンティングは「ファイル」→「フォント情報」→「マスター」→「メトリクス」で定義されたメインのアラインメントゾーンを使用します。TTヒンティング専用のゾーンを設定するには、「ファイル」→「フォント情報」→「マスター」で「TTFZones(日本語名:TTF ゾーン)」カスタムパラメーターを追加し、「クリックして値を編集」と書かれた部分をクリックすると、設定ウィンドウが表示されます。
フォントに既にPostScriptヒンティングゾーンが含まれている場合、ウィンドウの左下にあるアクションメニューから「Get PS zones(PSゾーンを取得)」を選択して、それらをTTゾーンとしてインポートできます。新しいゾーンを追加するにはプラスボタンを使用し、選択したゾーンを削除するにはマイナスボタンを使用します。TTゾーンの数には制限がありません。ゾーンには以下のプロパティがあります。
名前(Zone Name)
名前はリスト内でゾーンを識別するために使われます。任意の名前で構いませんが、それぞれの名前は一意でなければなりません。「xHeight」という名前は特別で、これはグリッドフィッティングの際に特別な処理が行われる「xハイトゾーン」に使用されます。この名前を持つゾーンは、小さいサイズでは他のゾーンよりも上に丸められる確率が高くなります。名前は、TTヒンティングツールでスナップヒントが選択されている場合、情報ボックスに表示されます。
位置(Position)
位置は、ゾーンのフラットエッジ(端)の配置を決定する要素です。フラットエッジは、ゾーンを広げる基準となるベースラインからの距離を指します。位置が負の値である場合、そのエッジはベースラインよりも下に配置されます。
サイズ(Size)
サイズは、オーバーシュート抑制時のフラット化ゾーンの値を定義します。トップゾーンには正のサイズが設定され、ボトムゾーンには負のサイズが設定されます。トップゾーンは、xハイト、ショルダーの高さ、キャップハイト、ナビラの高さなど、形状の上端に対応する部分を対象としています。ボトムゾーンは、ベースラインやディセンダー、小さな数字(分数の数字や上付き・下付き数字など)の底辺など、形状の下端に対応する部分を捉えるためのものです。
ポジションとサイズで定義された領域が、ラスタライザによってゾーンポジションにフラット化されることになっているすべてのオーバーシュートを包含していることを確認してください。たとえば、xの高さでは、Positionを小文字のxの高さにして、Sizeを小文字のoのようなすべてのオーバーシュートを捕らえるのに十分な大きさにしてください。
位置とサイズで定義された領域が、調整したいすべてのオーバーシュート(文字のアウトラインが基準の位置を飛び越えている部分)を含むことを確認してください。たとえば、xハイトであれば、位置は小文字のxの高さにあわせた数値に設定し、サイズは小文字のoなどのオーバーシュートを含められるような数値であることを確認してください。これは、PostScriptのアラインメントゾーンと似たような仕組みです。
位置とサイズで設定した領域が、ラスタライザーによって正しく調整されるように、文字のはみ出し部分(オーバーシュート)がすべて含まれていることを確認してください。例えば、xの高さに合わせて位置を設定し、サイズが小文字のoなどのはみ出し部分も含める大きさになっているかチェックします。これは、PostScriptのアラインメントゾーンと似たような仕組みです(11.1.2「アラインメントゾーン」参照)。
アラインメント(Alignment)
Alignオプションを使って、ゾーンを別のゾーンにリンクさせることができます。一つのゾーンが別のゾーンに合わせて配置されると、ゾーン間の距離の数値が丸められ、その距離がゾーンに適用されます。
これにより、異なるPPMサイズ間の遷移がより一貫したものになります。特に、非常に近い位置にあるゾーンや、重なり合う可能性があるゾーンに対してこの設定を使用すると、低解像度のピクセルレンダリングでゾーンが大きくずれるのを防ぐことができます。ゾーンが互いに半ピクセル未満の距離であれば同じ高さで表示され、距離が半ピクセルであれば1ピクセル離れた位置で表示される、というように表示が調整されます。
PPM(pixels per em)は、フォントサイズの測定値です。詳しくは12.3.2「ピクセルサイズ」をご覧ください。
デルタ(Deltas)
(このプロパティはメインマスターにのみ適用されます。)デルタボタンをクリックすると、特定のPPMサイズにおけるゾーンを微調整できます。ボタンを押すと表が表示されます。表の列はフォントのマスター、行はPPMサイズを示しています。ボタンをクリックすると、数値の丸めを「切り上げる」、「切り下げる」、または「丸めない」のいずれかに切り替えることができます。ゾーンリストのデルタアイコンは、いずれかのボタンが「上に丸める」または「下に丸める」に設定されている場合はアクセントカラーで表示されます。
丸めは、あるPPMサイズでゾーンが1ピクセル低すぎたり高すぎたりする場合に有効です。低すぎる場合は切り上げ、高すぎる場合は切り下げます。ヒントのプレビュー(P.172参照)を使って、丸めたり下げたりする必要のあるゾーンをチェックしてください。
数値の丸め処理は、特定のPPMサイズでゾーンが1ピクセル低すぎたり高すぎたりする場合に役立ちます。ゾーンが低すぎる場合は切り上げ、高すぎる場合は切り下げます。ヒンティングプレビューを使って、丸めが必要なゾーンがないか確認しましょう。
フィルタ(Filter)
(このプロパティはメインマスターにのみ適用されます。)地球儀アイコンをクリックすると、ゾーンを特定のグリフのサブセットに限定できます。このサブセットはスマートフィルターと同様の方法で定義できます。詳細については7.5.4「スマートフィルタ」を参照してください。ゾーンリストに表示される地球儀アイコンは、フィルターが設定されている場合、アクセントカラーで表示されます。
12.2.2 TrueTypeステム
ステムは、低解像度で表示される際にストロークの太さを統一するのに役立ちます。
デフォルトでは、TrueTypeヒンティングはマスターの標準ステムを使用します。TrueTypeヒンティング用に特定のステムを設定したい場合は、「ファイル」→「フォント情報」→「マスター」に移動し、「TTFStems」カスタムパラメータを追加します。パラメータの値フィールドをクリックすると、ステムの編集が可能になります。
フォントにすでにPostScriptのステムが含まれている場合は、アクションメニューから「Get PS stems(PSステムを取得)」を選択して、それらをTrueType(TT)ステムとしてインポートできます。プラスボタンをクリックして追加のステムを加えることができ、マイナスボタンで選択したステムを削除できます。以下の、ステムのプロパティを編集することが可能です。
方向
ヒントの方向には、X方向とY方向の2種類があります。両矢印アイコンをクリックして方向を切り替えることができます。
ヒントの方向は、ステムの太さを計測する方向を示していることに注意してください。X方向のヒントは垂直方向のステム(文字の縦線)の太さを、Y方向のヒントは水平方向のステム(文字の横線)の太さを表します。
ステム名(Stem Name)
ステムに名前を付けます。任意の名前をつけることができますが、できるだけ内容がわかるような名前を付けることをお勧めします。
サイズ(Size)
ステムの平均的な太さを入力します。画面表示では、同じような太さのステムが統一され、同じピクセル数で表示されるようになります。
デルタ(Deltas)
(このプロパティはメインマスターにのみ適用されます。)デルタボタンをクリックすると、特定のPPMサイズにおけるステムを微調整することができます。このプロパティは、TTゾーンのデルタと同様に機能します。ステムのデルタは、ClearTypeスタイルのレンダリングモード(Windows GDIとも呼ばれる)にのみ適用されます。
フィルタ(Filter)
グローブボタンをクリックして、ゾーンを特定のグリフのサブセットに制限します。このプロパティは、TTゾーンのフィルターと同様に機能します。」
(このプロパティはメインマスターにのみ適用されます。)地球儀ボタンをクリックすると、ステムをグリフのサブセットに制限することができます。このプロパティは、TTゾーンのフィルタと同様に機能します。
12.2.3 TrueType BlueFuzz
カスタムパラメーター「TTFBlueFuzz」を使用すると、すべてのTTゾーンを指定した量だけ拡張できます。指定した量は、各ゾーンの上下両方に追加されます。デフォルトの値は1ユニットです。
このパラメータは、ステムの値をテストしたり、補間の不正確さを修正するのに役立ちます。すべてのマスターで図面がゾーン内にうまく収まったとしても、補間されたインスタンスではゾーンから外れてしまうことがあります。このような不正確さは、丸め誤差が原因で発生します。ヒンティングプレビューを使ってフォントをテストし、すべてのインスタンスでゾーンが機能しているかどうかを確認し、うまく機能していない場合は「TTFBlueFuzz」を増やしてください。
「TTFBlueFuzz」パラメーターは「ファイル」→「フォント情報…」から、「フォント」「マスター」「出力スタイル」の各タブのカスタムパラメーターに追加することができます。「フォント」タブに追加した場合はすべてのインスタンスに等しく設定が適用されます。マスターに対して追加すると、フォントを出力する際に設定が補間されます。出力スタイルの個別のインスタンスに設定を追加すると、マスターやフォント全体の設定を上書きすることができます。
12.3 グリフレベルでのヒンティング
TrueTypeヒンティングツール(ショートカットキー:I)を使って、グリフ単位でヒントを追加します。なおTrueTypeヒンティングツールでは、通常ツールの切り替えに使用している修飾キーのないショートカットを使用して操作を行います。そのため、一度このツールに切り替えたあとにAを押しても、注釈ツールには切り替わらず、代わりにスナップ指示が追加されます。ツールを切り替えるには、ウィンドウ上部のツールバーを使用します。
12.3.1 アウトラインヒンティング
TrueTypeヒンティングツールでは、3つのアウトラインが表示されます。現在のマスターのアウトラインは黒色で表示され、このアウトラインのノードやハンドルは選択可能です。ノードは通常の緑の円や青の四角ではなく、灰色の円で表示されます。また、「表示」→「ポイントを表示」→「最終ポイント」の設定にかかわらず、最終ポイントも表示されます。
青いアウトラインは、TTヒンティングが適用される前の現在のインスタンスのアウトラインを示しています。現在のインスタンスを変更したい場合は、編集ビューの左下にある目のアイコンの隣にあるメニューからインスタンスを選択してください。インスタンスメニューが右側に表示されていない場合は、目のアイコンをクリックしてください。
選択したインスタンスが現在のマスターと一致している場合、青いアウトラインは表示されません。たとえば、RegularマスターとRegularインスタンスが両方とも選択されているときは、黒いアウトラインと青いアウトラインが重なり、黒いアウトラインのみが表示されます。
赤いアウトラインは、現在のインスタンスにTTヒンティングとグリッドフィッティングが適用された後の状態を示しています。これは、現在のレンダリングインテント(グレイスケール、ClearType、DirectWrite)や選択されたピクセルサイズに基づいています。このアウトラインはMicrosoft社のコードを使用して描かれており、Windowsで使用される歪みをそのまま再現しています。グリフにTTヒントがない場合、この赤いアウトラインは表示されません。
背景に表示されるピクセルプレビューは、あくまでおおよその例です。赤いアウトラインと画面上に表示されるピクセルの間には追加のフィルタリングが行われます。このフィルタリングは、非常に多くのカスタマイズ(ガンマ値、カラーモード、透過性など)に左右されるため、正確なピクセルイメージを予測することはできません。
ピクセルプレビューの表示は、編集ビューのコンテキストメニューから「Show Pixel Preview」を選択して切り替えることができます。
12.3.2 ピクセルサイズ
TrueTypeヒンティングツールがアクティブ状態のとき、情報ボックスにはピクセルサイズフィールドが表示されます。このフィールドには、ピクセル画像プレビューのPPM(pixels per em)の値が表示されます。PPMはフォントの実際のピクセルサイズを示しています。たとえばUPM(units per em)が1000のフォントで、ピクセルサイズが12PPMの場合、1ピクセルは約83フォントユニット(1000 ÷ 12 ≒ 83)に相当します。
ピクセルサイズを変更するには、新しい値を入力するか、上下ボタンを使ってサイズを増減させます。ピクセルサイズのフィールドがアクティブな状態のときは、上下の矢印キーでも値を変更できます。フィールドがアクティブでない場合は、.(ピリオド)キーまたは+(プラス)キーでサイズを大きくし、,(コンマ)キーまたは–(マイナス)キーでサイズを小さくできます。
12.3.3 ヒントの方向
現在のヒンティングの方向は、情報ボックスの波型矢印ボタンで決定します。このボタンをクリックすると、垂直方向と水平方向のヒンティングが切り替わります。また、Xキーを押すことでも、この2つのモードを切り替えることが可能です。垂直方向のヒントは水平のステム(縦画)に、水平方向のヒントは垂直のステム(横画)に使用されます(12.2.2「TrueTypeステム – 方向」参照)。
選択中でない方向に対するヒントは背景に薄くグレーアウトされた状態で表示されます。これらは編集できません。
12.3.4 ヒントの順序
ヒントは時間順に適用されます。この順序は重要で、ヒントはこの順序にそって重ねられていきます。ヒントがアウトライン上のポイントに適用されると、そのポイントはヒントによる動きを実行し、「タッチされたポイント」になります。
すべてのヒントが適用された後、残った「タッチされていないポイント」の位置は、ポイント番号順に最も近い「タッチされたポイント」の間で補間されます。これをIUP(Interpolate Untouched Points: タッチされていないポイントを補間する)インストラクションと呼ぶこともあります。
12.3.5 ポイントインデックスの表示
編集ビューのコンテキストメニューから「ポイント番号を表示」を選択すると、すべてのオンカーブノードにポイント番号(またはポイントID)がラベル付けされます。これらの番号は、TTFAutohint制御命令のカスタムパラメーターに必要です(詳しくは12.1「オートヒント」を参照)。
12.3.6 ヒンティングプレビュー
TrueTypeヒンティングツールツールがアクティブな状態では、プレビューエリアが編集ビューの右側に移動し、現在選択されているインスタンスで設定された編集ビュー内のグリフのリスト(または「ウォーターフォール」)が表示されます。
このリストには、8PPMから80PPMまでの各サイズでヒント付きグリフのプレビューが表示されます。マウスカーソルでリストを上下にドラッグすることで、異なるプレビューサイズを表示できます。このプレビューは、プレビューパネル(「ウィンドウ」→「プレビューパネル」)でも表示することができます。
プレビューは、「拡大なし(1×)」、「2×」、「4×」の3種類の倍率で表示できます。Controlキーを押しながら編集ビュー内をクリック、または右クリックし、コンテキストメニューからいずれかのプレビュー倍率を選択してください。
12.3.7 Webプレビュー
編集ビューのコンテキストメニューから「プレビューアドレスを表示…」を選択すると、Glyphs内蔵のヒンティングプレビューと同様のフォントプレビューを表示するWebサーバーが起動し、Webアドレスが表示されたダイアログウィンドウが表示されます。「コピー」をクリックすると、そのアドレスをコピーできます。
コピーしたアドレスをWebブラウザで開くと、プレビューページが表示されます。MacではTTヒンティングが使用されないため、このページの表示には、Mac上で動作する仮想Windowsや、同じローカルネットワークに接続された他のデバイスを使用してください。
12.4 インストラクション
ノードを選択し、コンテキストメニューから利用可能なインストラクションの種類を選択することで、TrueTypeインストラクションを追加できます。クリックしてドラッグすることで、インストラクションの位置を調整することも可能です。
コンテキストメニューから「オートヒント」を選択すると、一部のインストラクションが自動的に追加されます。この操作では、「スナップ」や「ステム」のヒントは追加されますが、「シフト」「インターポレート」「デルタ」のヒントは追加されません。自動生成されたヒントは、手動でのTTヒンティングを行うための出発点として役立ちます。ただし、グリフによってはオートヒントが適用されない場合もあります。その場合には「TrueTypeインストラクションをコンパイルする際に問題が発生しました」というエラーメッセージが表示されます。ショートカットを使用して現在のグリフにオートヒントを適用するには、Cmd–Opt–Ctrl–Shift–Iを押します(ショートカットは、「Glyphs」→「設定…」の「ショートカット」セクションで設定可能です)。このショートカットは、編集ビューで複数のグリフが選択されている場合にも機能します。
現在のグリフからすべてのグリフレベルのヒントを削除するには、コンテキストメニューから「ヒントを削除」を選択します。
12.4.1 スナップ
「スナップ」インストラクション(ショートカットA)は、これまでタッチされていない未タッチのポイントの位置を最も近いピクセルの端に丸めます。スナップインストラクションを適用するには、1つまたは複数の未タッチのポイントを選択してAキーを押すか、コンテキストメニューから「ポイントをスナップ」を選択します。
スナップインストラクションを選択するには、紫色のバッジをクリックします。選択されたインストラクションの設定オプションは、情報ボックス(「表示」→「情報を表示」、Cmd–Shift–I)に表示されます。情報ボックスの右上にあるポップアップメニューから、次のオプションのいずれかを選択します。
- 自動:
垂直モードでは、ポイントがゾーン内にある場合、そのゾーンが丸めるピクセルの端にスナップします。ゾーンの丸め設定は「TTFZones」カスタムパラメーターで構成します。「自動」は通常、最適なオプションです。 - ゾーンなし:
ゾーンを完全に無視するように指示します。この場合、最も近いピクセルの端だけを探します。 - (ゾーン名):
その他の選択肢には、名前付きのゾーンが表示されます(12.2.1「TrueTypeゾーン」参照)。ゾーンを選択すると、ノードは選択したゾーンに対して一定の距離を保ち、スナップされたノードがゾーンの反対側に移動しないようにします。なお、これらのゾーンオプションはノードをゾーンにスナップするためのものではなく、「TTFZones」カスタムパラメーターで、ある1つのゾーンを別のゾーンに合わせるのと同様に動作します。
情報ボックスの下部にあるアイコンボタンは、インストラクションが引き起こす丸めの種類を示しています。
- 直近にスナップ(デフォルト):
ポイントを最も近いピクセルの端に丸めます。 - 常に上方にスナップ:
ポイントを、垂直モードでは上の、水平モードでは右の、最も近いピクセルの端に丸めます。 - 常に下方にスナップ:
ポイントを、垂直モードでは下の、水平モードでは左の、最も近いピクセルの端に丸めます。 - スナップなし:
ポイントを元の位置に保ちます。これはIUPの効果を抑制するのに便利です。 - ClearType/GDIでのみスナップ:
「直近にスナップ」と同様に機能しますが、ClearTypeレンダリングモードでのみ有効です。この設定は、グレイスケールやDirectWriteのレンダリングモードではアンチエイリアス処理を維持したまま、ClearTypeでは完全なピクセルに丸めるのに役立ちます。ClearType/GDIには垂直方向のオーバーサンプリングがないため、このモードは水平ステムのヒンティング時にのみ効果があります。
12.4.2 ステム
「ステム」インストラクション(ショートカットS)は、未タッチの2つのポイント、またはタッチされた1つのポイントと未タッチの1つのポイントの位置を、TTステムによって決定された距離に丸めます。ステムヒントには起点と目標点があり(矢印の先端で示されます)、目標点は起点の変形に合わせて移動します。ステムヒントは、偶数個のポイントが選択されていれば、複数のポイントペアに同時に追加できます。ステムヒントのコンテキストメニューから「反転」を選択することで、起点と目標点を入れ替えることができます。
ステムヒントがゾーン内で始まる場合、起点は自動的にそのゾーンにスナップされます。そのため、起点に対してスナップインストラクションを追加する必要はありません。
ステムヒントを選択するには、水色のバッジをクリックします。選択されたステムヒントは情報ボックスで設定の変更ができます。情報ボックスの右上にあるポップアップメニューから、次のオプションのいずれかを選択します。
- 自動:
ヒントは、TTFStemsカスタムパラメータで定義された最も近いステムを使用します。ステムが明確に区別されている場合は、このモードが最適です。 - ステムなし:
目標点はグリッドにスナップされず、起点との距離だけが維持されます。つまり、起点が移動した場合にのみ、目標点も移動するということです。このモードは、中程度のピクセルサイズ(あまり小さくない)形状の忠実性を保ちたい場合や、レンダリング環境での歪みが重要な場合に最適です。 - (ステム名):
オートモードで正しい結果が得られない場合のみ、これらのオプションを選択してください。
情報ボックスの下部にあるアイコンボタンは、インストラクションが引き起こす丸めの種類を示しています。
- 直近にスナップ:
目標点を最も近いピクセルの端に丸めます。 - 常に上方にスナップ:
ステムサイズが大きくなるように丸めます。これにより、目標点は起点から遠いピクセルの端にスナップします。ステムヒントが下向きの場合、目標点は下側にスナップします。 - 常に下方にスナップ:
ステムサイズが小さくなるように丸めます。これにより、目標点は起点に近いピクセルの端にスナップします。ステムヒントが下向きの場合、目標点は上側にスナップします。 - スナップなし(デフォルト):
ステムをどのピクセルの端にも丸めませんが、現在のレンダリングモードで提供されるオーバーサンプリングの端には丸められます。 - ClearType/GDIでのみスナップ:
「直近にスナップ」モードと同様に機能しますが、ClearType/GDIレンダリングモードでのみ適用されます。ステムがゾーンに隣接していない場合、このモードはステムの少なくとも片方の端を最も近いピクセル境界に合わせるのに役立ちます。これは「E」や「e」の中央のバーに適しており、「補間」インストラクションと組み合わせると最適です。
TTFStemsカスタムパラメーターから取得されるステムの幅は、それぞれのレンダリングモードのオーバーサンプリングに従って丸められます。デフォルトの「スナップなし」を使用することで、ステムを丸めないようにし、この設定を上書きしないようにします。ステムが完全なピクセルの端に丸められない場合、ステムの少なくとも片側にグレーの境界ができます。これにより、レンダリング結果は少しぼやけますが、デザインの細部をより良く保持できます。また、輪郭が歪んでしまうという問題も少なくなり、例えば、カウンター(文字内の空間)が潰れることも少なくなります。
水平ステムが3つある場合は、Shiftキーを押しながら連続してクリックして3つのステムヒントをすべて選択し、コンテキストメニューから「トリプルヒント」を選択します。ステムヒントが紫色に変わり、これらが接続されたことを示します。この状態のときは、どんな状況でも少なくとも1ピクセルの距離を保とうとします。
12.4.3 整列
「整列」インストラクション(ショートカットF)は、タッチされたポイント(起点)の動きを未タッチのポイント(目標点)に伝達します。これによって、目標点は起点と同じように移動します。整列インストラクションを使用することで、グリフの2つの部分が同じ歪みを持つようにします。
整列インストラクションすを適用するには、タッチされたポイントと未タッチのポイントを選択し、Fキーを押すか、コンテキストメニューから「ポイントに整列」を選択します。同じ起点を持つ複数の整列インストラクションを同時に追加することもできますが、その場合、選択されたポイントのうちタッチされたポイントが1つだけ(起点)、他のポイントはすべて未タッチ(目標点)である必要があります。
整列ヒントを選択するには、紺色のバッジをクリックします。情報ボックスにあるアイコンボタンは、指示が引き起こす丸めの種類を示しています。
紺色のバッジをクリックして、シフトのヒントを選択します。情報ボックスのアイコンボタンは、インストラクションが引き起こす丸めの種類を示しています。
- 直近にスナップ:
目標点を最も近いピクセルの端に丸めます。 - 常に上方にスナップ:
目標点を上側の最も近いピクセルの端に丸めます。 - 常に下方にスナップ:
目標点を下側の最も近いピクセルの端に丸めます。 - スナップなし(デフォルト):
丸め処理を行わず、転送された動きをそのまま維持します。通常、整列インストラクションに最適なモードです。 - ClearType/GDIでのみスナップ:
「直近にスナップ」モードと同様に機能しますが、ClearType/GDIレンダリングモードでのみ適用されます。
例えば、サンセリフ体の小文字ラテン文字「n」の2本の脚を考えてみましょう。左側の脚はベースラインゾーンにスナップされるはずです。しかし、2本の脚の間の肩の部分にステムインストラクションを追加した後、右側の脚が左側の脚と同期しなくなります。
これは、パスのラインに沿って、左下のスナップインストラクションの効果が上部のステムインストラクションによって中断されるために起こります。その結果、右側の脚に対しては、続くIUP(未タッチポイントの補間)はスナップインストラクションではなく、ステムインストラクションによって引き起こされた歪みのみを反映させることになります。つまり、スナップインストラクションの効果は左側の脚に限定されてしまいます。この問題を解決するには、左側の脚のタッチされた(スナップされた)ポイントから右側の脚のいずれかのポイントに整列インストラクションを追加します。
整列インストラクションは、左側の脚の動きを右側の脚に複製し、目標点をタッチポイントに変えます。これにより、右側の脚は常に左側の脚と同じ動きをします。小文字のラテン文字「m」では、複数の整列インストラクションが使用されることがあります。
12.4.4 補間
「補間」インストラクション(ショートカットG)は、未タッチのポイントを、2つのタッチポイントに対して元のインストラクションのないアウトラインと同じ相対位置に保ちます。補間インストラクションを適用するには、2つのタッチポイントと3つ目の未タッチポイントを選択し、Gキーを押すか、コンテキストメニューから「補間」を選択します。
補間ヒントの主な目的は、IUPの望ましくない副作用を軽減することです。例えば、小文字の「e」のように、中央のステムをすでにタッチされた外側のステムから同じ相対距離に保つ場合に、補間インストラクションを使用します。
補間ヒントを選択するには、緑色のバッジをクリックします。情報ボックスのアイコンボタンは、指示が引き起こす丸め処理を示しています。
直近にスナップ:
目標点を最も近いピクセルの端にスナップします。このモードは、目標点の上にステムヒントを追加する際に選択してください。
常に上方にスナップ:
目標点を上側の最も近いピクセルの端に丸めます。
常に下方にスナップ:
目標点を下側の最も近いピクセルの端に丸めます。
スナップなし(デフォルト):
丸め処理を行わず、補間された位置を保持します。通常、補間インストラクションに最適なモードです。
ClearType/GDIでのみスナップ:
ClearType/GDIレンダリングモードでのみ、ClearType/GDIレンダリングの仕様に基づいて最も近いピクセルの端にスナップします。他のレンダリングには影響しません。
12.4.5 デルタ
「デルタ」インストラクション(ショートカットE)は、特定の静的インスタンスと特定のPPMサイズでのみ、ポイントを正確に1ピクセルだけ上下に移動させます。デルタヒントは、すべての他のヒントが適用された後の最終的なピクセル補正を目的としています。デルタヒントを追加するには、任意のポイントを選択してEキーを押すか、コンテキストメニューから「デルタ」を選択します。1つまたは複数のデルタヒントを選択し、情報ボックスのデルタアイコンをクリックして、TrueTypeゾーンのデルタと同様に設定を行います。詳細は12.2.1「TrueTypesゾーン」のデルタの項を参照してください。
デルタヒントは、使用するとしても最小限に留め、他のすべてのヒントを適用した後、最後に追加するべきです。デルタヒントは垂直方向のヒンティングでのみ有効で、バリアブルフォントでは無視されます。
12.4.6 オーバーラップしたパスの交点
インストラクションは、TrueTypeヒンティングツールに表示されるどのノードにも配置することができます。ただし、オーバーラップしたパスの交点は別途処理されます。「重なったパスを合体」オプションを選択してフォントを出力すると、オーバーラップしたパスの交点は1つのポイントに統合されます。Glyphs は、「重なったパスを合体」の処理で削除されたポイント上のヒントを、結果として生じる最も近い交点に移動させます。したがって、非バリアブルフォントでは、以下の図の2つのヒントは同じ意味になります。
バリアブルフォントでは、オーバーラップは削除されません。上の画像の右側のヒントのように、オーバーラップの削除後に生じる交点のノードに追加されたヒントは無視されます。バリアブルフォントを出力する際は、画像の左側のヒントのように、通常のノードにのみヒントを追加してください。
12.5 高度なTrueTypeヒンティング
出力されるフォントファイルのTTヒンティングにさらに設定を追加するには、以下のカスタムパラメータを使用します。
TTFOvershootSuppressionBelowPPM(TTFオーバーシュート押し込み上限PPM)
このパラメータは、「ファイル」→「フォント情報…」→「フォント」(Cmd–I)から追加します。これは、オーバーシュートがゾーンのフラットエッジに収束するピクセルサイズを設定します。フラットエッジとは、「TTFZones」パラメータで設定されたゾーンの位置です(12.2.1「TrueTypeゾーン」の位置の項参照)。
TTFZoneRoundingThreshold(TTFゾーンの四捨五入しきい値)
このパラメータは、フォント情報ウィンドウ(Cmd–I)の「フォント」または「出力スタイル」タブのいずれかに追加します。「フォント」タブで設定された値は、このパラメータが設定されていない全インスタンスに適用されます。この値は、正のゾーンが1ピクセル上に押し上げられる可能性を制御します。通常は0.1や0.2のような小数値を指定します。この値は、丸める前の正のゾーンの位置に加算され、xハイトゾーン(TrueTypeゾーンの中で「xHeight」と名付けられているゾーン)には2回加算されます。デフォルト値は0.09375です。
例として、あるフォントサイズでスモールキャップゾーンが6.45px、xハイトが5.25pxになる場合を考えてみましょう。何も変更しないと、スモールキャップゾーンは丸められて6pxにスナップされ、xハイトは5pxになります。しかし、丸めのしきい値を0.2に設定すると、スモールキャップの高さは6.45 + 0.2 = 6.65 ≒ 7px、xハイトは5.25 + 2 × 0.2 = 5.65 ≒ 6pxになります。
TTFMinimumDistance(TTF最小距離)
このパラメータは、「ファイル」→「フォント情報…」→「出力スタイル」(Cmd–I)で追加します。デフォルト値は0.25で、これはステムヒントが適用されている場合、どのPPMサイズであってもステムが最低でも4分の1ピクセルの長さで描画されることを意味します。デフォルト値がデザインに合わない場合は、このパラメータにカスタムの最小距離(ピクセル単位)を設定してください。
Control Value Program
ヒント付きのTrueTypeフォントを開くと、マスターに「CVT Table(cvt テーブル)」、「prep Table Assembly(prepテーブルのアセンブリコード)」、「fpgm Table Assembly(fpgmテーブルのアセンブリコード)」の3つのカスタムパラメータが追加されます。これらのパラメータには、既存のTTヒンティング用のアセンブリコードが含まれており、手動で編集することはほとんどありません。これらは、出力時に既存のヒンティングインストラクションを失わないために使用されます。これらのパラメータは、フォント内の「cvt」、「prep」、「fpgm」テーブルに対応しています。
詳細はTrueTypeリファレンスマニュアルを参照してください。
gasp Table(gaspテーブル)
このパラメータは、フォント情報ウィンドウ(Cmd–I)の「フォント」または「出力スタイル」タブに追加します。「フォント」タブで設定された値は、このパラメータが設定されていない全インスタンスに適用されます。このパラメータは、TrueTypeフォントのグリッドフィッティングとスキャン変換の手順を設定します。推奨される画面上のレンダリング動作を変更する2つのPPMしきい値を制御します。gaspテーブルには、従来のグレイスケールとClearTypeサブピクセルレンダラーの両方に対するレンダリングの推奨値が含まれています。ただし、レンダラーがそこに保存されているデータを無視する可能性があることに留意してください。デフォルトのしきい値のサイズは8PPMと20PPMです。2つのしきい値があるため、3つの範囲を区別することができます。
- ヒンティングなし & 対称型:
最初のしきい値サイズまでは、グリッドフィッティングは適用されず、テキストは可能な限りアンチエイリアスでレンダリングされます。「非常に小さなサイズでは、通常、ヒンティングを使用せずにグリフをグレイスケールでレンダリングすることで、グレイスケールデバイス上で最適な見栄えを実現することができます。」 - ヒンティング & 非対称型:
2つのしきい値サイズの間では、レンダラーはグリッドフィッティングを適用し、グレイスケールを抑制することが推奨されます。「中間のサイズでは、ヒンティングとモノクロのレンダリングが通常、最良の外観を生み出します。ClearTypeでは、この問題は非対称的に処理されます。垂直方向にはグリッドフィッティングが適用され、水平方向にはサブピクセルレンダリングが使用されます。」 - ヒンティング & 対称型:
しきい値を超えると、ラスタライザはグリッドフィッティングを適用し、グレイスケールで図形をレンダリングするように指示されます。「大きなサイズでは、ヒンティングとグレイスケールレンダリングの組み合わせが、一般的には最良の外観を生み出します」。ClearTypeラスタライザには、対称的なスムージングを適用するように指示されます。これは水平方向のサブピクセルレンダリングに加えて、Y方向にもアンチエイリアスを使用します。「画面上のディスプレイサイズでは、(中略)この新しいWindowsフォントレンダラの改善により、より滑らかできれいな外観の文字を生成します。」
引用部分の出典: 「Now read this: The Microsoft ClearType Font Collection, Microsoft 2004, p.14」