[3] 文字のレンダリングの問題だったり、 文字コード表現の問題だったり、 その他何だかよくわからない問題だったりします。
chws
(OpenType)#✎fwid
(OpenType)#✎[8]
OpenType のフォント機能 fwid
は、
Full Widths (全幅)
と説明されています。
>>7
[9]
fwid
は、グリフ集合中にあってその他の幅に設定されているグリフを置換して、
全 (通常は em) 幅に設定されたグリフとします。
>>7
[10] CJKVフォントでは、 「lower ASCII」 ラテン文字や各種記号を含むかもしれません。 >>7
[11] 欧州のフォントでは、 可変幅グリフを固定幅グリフ (通常は 0.6 em 幅に設定) に置換します。 >>7
[13] fullwidth というのは普通は東洋の全角文字 (1em 幅で表示) を指す用語ですが、 ここでは欧州の 0.6em 幅の固定幅の表示にも使えるとされています。 任意幅 → 固定幅、という点こそ共通しているものの、 両者はまったくの別物です。同時実装不能です。 東洋フォントと欧州フォントは別製品なので交わることはないという世界観なのでしょうか。 それとも言語系などで区別しろということなのでしょうか。
[14]
AJ1 はじめ東洋のフォントでは fwid
は実際に半角から全角への置換などで一般的に使われています。
欧州のフォントではどうなのでしょう。
halt
(OpenType)#✎[21]
フォント機能
halt
は、
Alternate Half Widths
と説明されています。
>>20
[22]
halt
は、
既定の状態で全角の大きさのグリフを、
固定幅で半角幅に合わせて再配置することで、
JLREQ
(特に 3.1.4 Positioning of Consecutive Opening Brackets, Closing Brackets, Commas, Full Stops and Middle Dots,
B. Spacing between Characters)
や同様の CJKV
文章配置仕様書 (具体例: CLREQ, KLREQ) で説明されているような、
既定のグリフが全角幅である文字の半角形を期待するような、
より洗練された文章配置法を近似するものです。
>>20
[27]
CLREQ, JLREQ, KLREQ
で説明される CJKV 文章の高度な配置に対応した配置エンジンは、
halt
を使うべきではありません。
そのような応用では、
halt
を用いるかどうかの選択肢を利用者に提示しないのが適切です。
>>20
[28]
そうでない実装では、 halt
を横書き配置におけるすべての
CJKV 文章に対して、
または特別な扱いを必要とする特定の文字、例えば括弧,
句読点, 引用符に選択的に、
有効にするべきです。
これは CJK 文章に対しては既定の状態で有効とするべきです。
>>20
[25]
GPOS
lookupType
1
の
xPlacement
,
yPlacement
,
xAdvance
,
yAdvance
で代替となる metrics を指定することが推奨されています。
>>20
[23]
halt
は
hwid
とは違って新しいグリフに置換するものではありません。
>>20
[24]
halt
は
chws
とは違って文脈的ではありません。
>>20
[26]
OpenType の仕様上は >>25 以外の方法が禁止されているわけではなく、
例えば他の lookupType
により条件を記述することも、
GSUB
で別のグリフに置換することも技術的には可能ですが、
>>23 や >>24 のような説明があり、そうした用法は期待されていないようです。
。
は通常次の文章と密着しないように右半分にアキがある状態の全角の字形とされます。
もし halt
でこのアキを削って半角に調整すると、読みづらい文章になってしまいますから、
それが既定の状態となるべきではなく、 halt
で指定するべきではなかったということになります。
また、置換ではなく GPOS
によって全角から半角に変換することが求められているので、
全角英数字から半角英数字への置換には適用できない場合が多いと考えられますし、
JLREQ の参照箇所から考えてもその用途は想定外と思われます。
こうした適用できない場面を除くと、
実際に使えそうなのは括弧の前後の空白の除去くらいでしょうか。hwid
(OpenType)#✎[34]
フォント機能
hwid
は、
Half Widths
です。
>>33
[35]
フォント機能
hwid
は、
可変幅や固定幅であっても半角幅以外のグリフを、
半角幅のグリフに置換します。
>>33
[36]
多くの CJKVフォントは複数の幅から選べるグリフの集合を有しており、
hwid
はそのうち半角版を選ぶものです。
>>33
[29]
水平グリフ幅機能 (chws
, fwid
,
halt
,
hwid
, palt
,
pkna
, pwid
, qwid
, twid
, pnum
, tnum
)
とは互いに排他的であり、 halt
が適用されるときはこれらは無効とするべきです。
>>7, >>20, >>33
[30]
halt
が適用されるときは apkn
や kern
は無効とするべきです。
>>7, >>20, >>33
[15]
fwid
,
hwid
は、
GSUB
lookup 1 でグリフを全前進幅
(fwid
)
ないし
半角幅
(hwid
)
のものに置換することもできますし、
GPOS
lookup 1 の xPlacement
と xAdvance
で
proportional グリフに全角 metrics (fwid
)
ないし元のグリフに半角の metrics (hwid
)
を指定することもできます。
>>7, >>33
[17] こうした実装方法が推奨されている >>7, >>33 ものの、その他の lookup 型が禁止されているわけではありません。
[16] 既定の状態では無効とするべきで、 文書のマーク付けや利用者の制御やその他の応用の基準に応じてグリフの連なりに適用できるという形に実装できます。 >>7, >>33