AFDKO “features” File Tips & Tricks, Part 2: GSUB Features for Public ROSesのGSUBの構成では、
feature vert { substitute \634 by \7887; substitute \635 by \7888; ... substitute \8351 by \8352; substitute \8354 by \8355; } vert; feature vrt2 { # All 'vert' substitutions substitute \634 by \7887; substitute \635 by \7888; ... substitute \8351 by \8352; substitute \8354 by \8355; # Added Adobe-Japan1-3 pre-rotated forms substitute \1 by \8720; substitute \2 by \8721; ... substitute \629 by \9353; substitute \9354 by \12870; } vrt2;
のようになっている。vert
の範囲については、縦組みになる場合に拗促音の小文字の位置移動や句読点の位置移動、㌍などの合字の組み替えなどが定義されている。これに加え、vrt2
では、欧文などの回転字形への明示的な写像が記載されている。後者については本来はUAX #50*1に従った動作をアプリケーションがサポートするならフォント側で定義する必要のない情報であるので、vrt2
は冗長である、ということか。
Registered features, u-z - Typography | Microsoft Docsを見ると、
Tag: 'vert'
Friendly name: Vertical Alternates
であるが、Registered features, u-z - Typography | Microsoft Docsを見ると
Tag: 'vrt2'
Friendly name: Vertical Alternates and Rotation
となっており、なるほど「# Added Adobe-Japan1-3 pre-rotated forms」の実装が“Rotation”部分なんだなと。でも、“Rotation”はUAX #50の担当ですねと。
しかし、Adobe-Japan1に従って文字セットを作ると、UAX #50対応アプリがグリフを回転するとしないとに関わらず“pre-rotated forms”が入ってきてしまうし、vrt2を使って動いているアプリがあるのなら、afdko/GSUB.c at e5a21653490860a1e6e7cd456917705f9d6a8e9f · adobe-type-tools/afdko · GitHubの動作を踏まえて、vrt2をそれなりに与えてあげないと“pre-rotated forms”の縦の送り幅が不正なものになってしまう。
Source Han Sans が UAX #50 compliant であるのは、それが Adobe-Identity-0 であるが故に既成の文字セットに縛られることもなく、“pre-rotated forms”を入れずに済むので、UAX #50に対応したアプリ向けの最低限の実装で済ませられたということなんだな。
Automatic Feature Code must include vert in vrt2 - Glyphs - Glyphs Forumにも関連するコメントがある。