[2] 
[[フォント機能]] 
[DFN[[CODE[hngl]]]]
は、
Hangul
です。
[SRC[>>1]]

* 代替

[17] 
[CODE[hngl]]
は[RUBYB[[[非推奨]]][DEPRECATED]]とされています。
[SRC[>>1]]

[18] 
ここでいう[[非推奨]]がどういう意味なのかは特に定められていません。
一般語として推奨されないということと理解するしかありません。

[19] 
[[漢字]]と[[ハングル]]の変換は、専用の[[辞書]]などによって行われるのが現在では一般的であり、
[[フォント]]に含まれる情報に依存するべきではないと考えられます。


* 仕様書

[REFS[

- [1] 
[CITE@en-us[Registered features, f-j (OpenType 1.9.1) - Typography | Microsoft Learn]], [[PeterCon]], [TIME[2024-05-31T17:42:16.000Z]], [TIME[2025-05-14T07:15:40.952Z]] <https://learn.microsoft.com/en-us/typography/opentype/spec/features_fj?source=recommendations#hngl>


]REFS]

* 意味

[3] 
[[フォント機能]]
[CODE[hngl]]
は、
[[漢字]] (hanja (Chinese-style) Korean characters) を対応する[[ハングル]]
(hangul (syllabic) characters) に置換します。
[SRC[>>1]]

[4] 
これは実効的には、[[ハングル]]を入力して[[漢字]]に置換する標準の[[入力方式]]を逆転させるものです。
[SRC[>>1]]

[EG[
[7] 
例えば
[CH[伽]]
の[[グリフ]]から
[CH[가]]
の[[グリフ]]に置換できます。
[SRC[>>1]]

]EG]

* フォントの実装

[5] 
多くの置換は1対1であり [CODE[GSUB]] の [F[[CODE[lookupType]]]] [N[1]]
が[RUBYB[推奨][recommended]]されています。 [SRC[>>1]]

[6] 
しばしば複数の[[ハングル]]の候補から[[利用者]]が選択する必要があり、
[CODE[GSUB]] の [F[[CODE[lookupType]]]] [N[3]]
が[RUBYB[推奨][recommended]]されています。 [SRC[>>1]]

[8] 
複数の選択肢を提示する場合には、
[[フォント]]の[RUBYB[[[族]]][family]]の中で代替候補の順序を一貫したものとする[RUBYB[べきであり][should]]、
さすれば[[族]]内で[[フォント]]を切り替えたときにも正しく動作します。
[SRC[>>1]]

[10] しかし [[OpenType]] としてはどのような[[置換]]や候補が提示されるべきかを一切規定していないのであり、
無関係の[[フォント]]同士で同じ様に動作する保証は一切ありません。

[16] 
[[フォント開発者]]は、 >>15 を前提に適切に順序を決める[RUBYB[べきです][should]]。
[SRC[>>1]]

[20] 
[[Adobe]]
は、
[[Adobe-Korea1]] 
における
[CODE[hngl]]
の実装例を提供していました。
その後身に当たる
[[Adobe-KR]]
には
[CODE[hngl]]
は含まれていません。


* 表示の実装

[9] 
[CODE[hngl]]
は既定の状態で無効とする[RUBYB[べきです][should]]。
[CODE[hngl]]
は[[文書]]の[[マーク付け]]、[[利用者]]の制御、その他[[応用]]依存の方法によって適用できます。
[SRC[>>1]]

[11] 
[[フォント]]が代替候補を提供している場合には、
[[応用]]はそのうち適切な1つを[[利用者]]が選択する手段を提供する[RUBYB[べきです][should]]。
[SRC[>>1]]

[14] 
[[応用]]は、複数の[[ハングル]]からの[[利用者]]の選択を覚えておき、
次に同じ[[漢字]]が出現したときの既定値として使うことができます。
[SRC[>>1]]

[15] 
[[応用]]は、 >>14 のような事前情報がないときは、
候補一覧の最初の[[ハングル]]を[RUBYB[好ましい形][preferred form]]と仮定して構いません。
[SRC[>>1]]

[12] 
[CODE[hngl]] は実効的には[[文字コード]]の変更と等価でありますから、
[[応用]]は新しい[[グリフ]]の[[文字コード]]を[RUBYB[蓄積][store]]する[RUBYB[べきです][should]]。
[SRC[>>1]]

;; [13] 
[[フォント機能]]はあくまで[[グリフ]]を[[グリフ]]に変換する方法を記述するものですが、
なぜか[[文字コード]]まで変更するように要求しています (元の[[文字コード]]を破棄するべきなのか、
両方を保持するべきなのかまでは明言していません)。
[[OpenType]] [[フォント]]には [CODE[cmap]] によって[[文字コード]]から[[グリフ]]へと変換する情報が提供されていますが、
逆変換の情報は入っていません。[[文字コード]]から[[グリフ]]へと[[1対1対応]]が保証されるなら
[CODE[cmap]] を逆変換すれば[[グリフ]]から[[文字コード]]に戻せるのですが、
一般にはそれが保証されないので、
複数の[[文字コード]]の候補が出現することになりますが、
これをどう解決するべきかは不明です。






* メモ