* 仕様書

[REFS[

- [1] [CITE@en-us[Registered features, a-e (OpenType 1.9.1) - Typography | [[Microsoft Learn]]]], [[PeterCon]], [TIME[2024-07-07T00:58:54.000Z]], [TIME[2024-12-04T11:42:54.131Z]] <https://learn.microsoft.com/en-us/typography/opentype/spec/features_ae>

]REFS]

* フォント機能 [CODE[case]]

[2] 
[DFN[[CODE[case]]]]
は
Case-sensitive Forms
とされます。
[SRC[>>1]]

[3] 
各種の[RUBYB[[[句読点]]][punctuation marks]]をすべて[RUBYB[[[大文字]]][capital]]の列や
[[lining figure]] の集合とよく[RUBYB[機能][work]]する位置まで[RUBYB[上げ][up]]ます。
[SRC[>>1]]

[5] 
既定の状態では text face 中の[[グリフ]]は[RUBYB[[[小文字]]][lowercase characters]]と[RUBYB[機能][work]]するよう設計されます。
いくつかの[RUBYB[[[文字]]][character]]は全[RUBYB[[[大文字]]][capital]]や lining の[RUBYB[文][text]]では[RUBYB[より高い視覚的中央][higher visual center]]に合うように垂直にずらす[RUBYB[べき][should]]です。
[SRC[>>1]]

[EG[

[7] [[ダッシュ]]や[RUBYB[[[括弧]]][bracketing characters]]や[RUBYB[[[ギュメ]]][guillemet quotes]]を上に移動して[[大文字]]に合うようにします。
[SRC[>>1]]

]EG]

[4] 
また、 [[oldstyle figure]] を [[lining figure]] に変更します。
[SRC[>>1]]

[6] 
[[lining figure]] は[RUBYB[[[大文字]]][capitals]]と同じか近い[RUBYB[高さ][height]]で、
全[RUBYB[[[大文字]]][capital]]の[RUBYB[文][text]]にずっとよりよく[RUBYB[合います][fit]]。
[SRC[>>1]]

[9] 
いつ適用するかは[[応用]]が ([[利用者]]の設定も考慮しつつ) 決められます。 [SRC[>>1]]

[EG[

[8] 
[[応用]]は、[[利用者]]が複数の[[文字]]を[[大文字]]に変更したときや、
[[大文字]]だけの[[語]]を検知した時などに、
[CODE[case]]
を有効にできます。
[SRC[>>1]]

]EG]


[10] 
[RUBYB[[[欧州]]][European]]の[[用字系]]のみに適用されるもので、
[RUBYB[とりわけ][particularly prominent]][RUBYB[[[スペイン語]]][Spanish-language]]に関係します。
[SRC[>>1]]


[11] 
[CODE[GSUB]] [F[[CODE[lookupType]]]] [N[1]]
や
[CODE[GPOS]] [F[[CODE[lookupType]]]] [N[1]]
を使うことが[RUBYB[できます][may]]。
[SRC[>>1]]
他も禁止されているわけではありません。

* フォント機能 [CODE[cpsp]]

[12] 
[[フォント機能]]
[DFN[[CODE[cpsp]]]]
は
Capital Spacing
とされています。
[SRC[>>1]]

[13] 
[CODE[cpsp]]
は[RUBYB[すべて[[大文字]]の文章][all-capital text]]の[[グリフ]]間[RUBYB[間隔][spacing]]を大域的に調整します。
[SRC[>>1]]

[14] 
ほとんどの[RUBYB[[[書体]]][typefaces]]は[RUBYB[[[大文字]]と[[小文字]]][capitals and lowercase caracters]]を含んでおり、
[RUBYB[[[大文字]]][capitals]]は[RUBYB[[[小文字]]][lowercase]]と共に[RUBYB[機能][work]]するよう[RUBYB[位置付け][positioned]]されます。
[RUBYB[[[大文字]]][capitals]]が[RUBYB[[[語]]][words]]に使われるときは、
[RUBYB[可読性][legibility]]と[RUBYB[美しさ][esthetics]]のためにはもっと[RUBYB[[[間隔]]][space]]が必要となります。
[SRC[>>1]]

[15] 
[RUBYB[等間隔の設計][monospaced designs]]には適用[RUBYB[しません][would not]]。
[SRC[>>1]]

[16] 
[CODE[GPOS]] [F[[CODE[lookupType]]]] [N[1]]
が[RUBYB[[[推奨]]][recommended]]されます。
[SRC[>>1]]
それ以外の [CODE[GSUB]] や [CODE[GPOS]] も禁止されているわけではありません。

[18] 
既定の状態で有効とする[RUBYB[べきです][should]]。
[SRC[>>1]]

[17] 
[[応用]]は[[利用者]]の判断で適用する (例えば[RUBYB[文章][text]]を[[選択]]して[RUBYB[全[[大文字]]][all-caps]]に変更したときに適用する) ことにしても[RUBYB[構いません][can]]し、
[RUBYB[[[大文字]]][capitals]]のみで構成される[[語]]を認識する[[発見的方法]]で適用しても[RUBYB[構いません][can]]。
[SRC[>>1]]

;; [21] 既定で有効にするべきとしながら状況次第で有効にする実装方法も示されているのはどういうことなのかいまいちよくわかりません。
既定で有効にすると[[小文字]]混じりのときにも適用されることになりますが、
それとも[[大文字]]だけの語にだけ選択的に適用するのを既定としろということでしょうか。
そんな難しいことを既定の実装として要求しているようにも読めませんが...

[19] 
[[応用]]は[[利用者]]が個別の[RUBYB[味][tastes]]や[RUBYB[機能性][functions]]に[RUBYB[合わせ][fit]]て調整率を上書きする手段を提供することもできます。
[SRC[>>1]]

;; [20] 
[CODE[kern]] 等と併用できると明記されており [SRC[>>1]]、
小文字混じりのときにも常時適用されるものとは異なる更なる間隔を空けるために使うことが想定されているようです。

[25] 
[CODE[cpsp]] はあまり使われていないといわれています。

[24] 
過去の [CITE[Glyphs]] は既定で [CODE[cpsp]] を設定していましたが、不評で取りやめました。
[[フォント開発者]]が意図しないうちに既定値によって不適切な[[アキ]]が生じるケースが多発していたようです。
[SRC[>>22, >>23]]

[REFS[

-
[22] 
[CITE@en[Automatic feature CPSP - Glyphs - Glyphs Forum]], [TIME[2024-12-05T12:50:53.000Z]] <https://forum.glyphsapp.com/t/automatic-feature-cpsp/1854/13>
-
[23] 
[CITE@en['all caps' messing with spacing — TypeDrawers]], [TIME[2024-12-05T12:53:50.000Z]], [TIME[2024-12-05T12:55:33.952Z]] <https://typedrawers.com/discussion/944/all-caps-messing-with-spacing>

]REFS]



* フォント機能 [CODE[c2pc]]

[26] 
[[フォント機能]]
[DFN[[CODE[c2pc]]]]
は
Petite Capitals From Capitals
とされます。
[SRC[>>1]]

[27] 
[RUBYB[[[大文字]]][capital characters]]を petite capitals
に[RUBYB[変更][turns]]します。
[SRC[>>1]]

[28] 
通常は[RUBYB[すべて[[大文字]]][all caps]]で[RUBYB[組む][set]]語、
例えば[RUBYB[[[頭字語]]][acronym]]のようなもので、
[RUBYB[文章][text]]の[RUBYB[流れ][flow]]を[RUBYB[混乱][disrupting]]させたくなくて
petit-cap [RUBYB[形][form]]が[RUBYB[望ましい][desired]]ときに使います。
[SRC[>>1]]

[EG[

[29] 
UNICEF や NASA のような語に適用できます。
[SRC[>>1]]

]EG]

[30] 
[CODE[GSUB]] [F[[CODE[lookupType]]]] [N[1]]
で[RUBYB[[[大文字]]][capital]]グリフから petite cap [RUBYB[形][form]]に写像するのが[RUBYB[[[推奨]]][recommended]]されています。
その他の [CODE[GSUB]] や [CODE[GPOS]] が禁止されているわけではありません。
[SRC[>>1]]


[31] 
既定の状態では無効とする[RUBYB[べきです][should]]。
[[応用]]は、[[利用者]]が[[頭字語]]を入力したときなど、
言語[RUBYB[依存][specific]]の case-mapping logic に基づき
petite-cap formatting
を実装するためこの機能を利用できます。
[SRC[>>1]]

* フォント機能 [CODE[c2sc]]

[32] 
[[フォント機能]]
[DFN[[CODE[c2sc]]]]
は
Small Capitals From Capitals
とされます。
[SRC[>>1]]

[33] 
[RUBYB[[[大文字]]][capital characters]]を [[small capitals]]
に[RUBYB[変更][turns]]します。
[SRC[>>1]]

[34] 
通常は[RUBYB[すべて[[大文字]]][all caps]]で[RUBYB[組む][set]]語、
例えば[RUBYB[[[頭字語]]][acronym]]のようなもので、
[RUBYB[文章][text]]の[RUBYB[流れ][flow]]を[RUBYB[混乱][disrupting]]させたくなくて
small-cap [RUBYB[形][form]]が[RUBYB[望ましい][desired]]ときに使います。
[SRC[>>1]]

[EG[

[35] 
UNICEF や SCUBA のような語に適用できます。
[SRC[>>1]]

]EG]

[36] 
[CODE[GSUB]] [F[[CODE[lookupType]]]] [N[1]]
で[RUBYB[[[大文字]]][capital]]グリフから small-cap [RUBYB[形][form]]に写像するのが[RUBYB[[[推奨]]][recommended]]されています。
その他の [CODE[GSUB]] や [CODE[GPOS]] が禁止されているわけではありません。
[SRC[>>1]]

[37] 
既定の状態では無効とする[RUBYB[べきです][should]]。
[[応用]]は、[[利用者]]が[[頭字語]]を入力したときなど、
言語[RUBYB[依存][specific]]の case-mapping logic に基づき
small-cap formatting
を実装するためこの機能を利用できます。
[SRC[>>1]]


* メモ