ccmp — Glyph Composition/Decomposition
ccmp(Glyph Composition/Decomposition)は、グリフの異体字を減らすために、文字の並びをグリフレベルで合成・分解するフィーチャーです。
1 つの文字の既定のグリフを複数のグリフに分解する場合と、複数の文字の既定のグリフを 1 つのグリフに合成する場合の、両方をこのフィーチャーが担います。
分解の代表例は、合字として符号化された文字を部品に戻すことです。詳しくは Multiple Substitution(Lookup Type 2)の「なぜ分けるのか」で扱っています。合成の例として、仕様はアラビア文字の shadda(U+0651)と fatha(U+064E)を 1 つのグリフにまとめる処理を挙げています。こちらは Ligature Substitution(Lookup Type 4) で書きます。
仕様は、ccmp を常に適用すべきだとし、他のどのフィーチャーよりも先に処理する必要があると定めています。
Without ccmp
fish
With ccmp
fish
.fea source
Compiling…
Feature File による実装
Section titled “Feature File による実装”規則は、分解なら Lookup Type 2、合成なら Lookup Type 4 で書きます。このデモは分解の例です。
Without rules
fish fish flow flow
With rulesfish fish flow flow
Compiling…