コンテンツにスキップ

Lookup Type 1 — Single Substitution

Single Substitution は、1 つのグリフを別の 1 つのグリフに置き換える GSUB の規則です。

sub a by a.sc;

規則はフィーチャーブロックの中に書きます。たとえば smcp フィーチャーで使うと次のようになります。

feature smcp {
sub a by a.sc;
} smcp;
sub <glyph> by <glyph>; # format A
sub <glyphclass> by <glyph>; # format B
sub <glyphclass> by <glyphclass>; # format C
  • <glyph> — 1 つのグリフ。
  • <glyphclass> — グリフクラス。

format B は、対象のグリフクラスのどのグリフも同じ 1 つのグリフに置き換えます。format C は、対象のグリフクラスの各グリフを、置き換え先のグリフクラスの同じ位置にあるグリフに置き換えます。format C では、対象と置き換え先のグリフクラスのグリフ数が一致している必要があります。置き換え先のグリフクラスのグリフが 1 つだけの場合は、format B の規則と同じに扱われます。

format C の 1 行は、グリフごとに format A で並べて書いたものとフォント内で同じ表現になります。次の 2 つは同じです。

sub [a b c] by [a.sc b.sc c.sc];
sub a by a.sc;
sub b by b.sc;
sub c by c.sc;

sub は substitute の省略形です。次の 2 つは同じ規則です。

substitute a by a.sc;
sub a by a.sc;

Lookup Type 3 と書式が似ていますが、Lookup Type を明示する必要はありません。コンパイラが規則の形から判別します。

# クラスの各グリフ → 同じ 1 つのグリフ = Single Substitution(Lookup Type 1)
sub [ampersand.1 ampersand.2 ampersand.3] by ampersand;
# 1 つのグリフ → クラスの候補から 1 つ = Alternate Substitution(Lookup Type 3)
sub ampersand from [ampersand.1 ampersand.2 ampersand.3];
Without rules
Small Caps
With rules
Small Caps
Compiling…
Without rules
2026
With rules
2026
Compiling…

この Lookup Type を使うフィーチャー

Section titled “この Lookup Type を使うフィーチャー”

OpenType 仕様にあるフィーチャーのうち、この Lookup Type での実装が推奨されているものは 50 を超えます。次のものはその代表です。

  • smcp — Small Capitals。小文字をスモールキャップに置き換える。
  • c2sc — Small Capitals From Capitals。大文字をスモールキャップに置き換える。
  • lnum — Lining Figures。数字をライニング数字に置き換える。
  • onum — Oldstyle Figures。数字をオールドスタイル数字に置き換える。
  • zero — Slashed Zero。ライニングのゼロをスラッシュ付きの形に置き換える。
  • ss01–ss20 — Stylistic Sets。デフォルトの形を、セットごとの異体字に置き換える。
  • vert — Vertical Alternates。縦組みで、デフォルトのグリフを縦組み用の形に置き換える。
  • jp90 — JIS90 Forms。JIS78・JIS83 の字形を JIS90 の字形に置き換える。

salt(Stylistic Alternates)のように置き換え先の候補が複数ありうるフィーチャーも、1 対 1 の置き換えにはこの Lookup Type を使い、候補から選ばせる置き換えには Lookup Type 3 を使います。