* 仕様書

[REFS[
- [7] [CITE[The Unicode Standard, Version 13.0 - ch02.pdf]], [TIME[2020-03-09T17:53:32.000Z]], [TIME[2020-12-22T05:59:12.190Z]] <https://www.unicode.org/versions/latest/ch02.pdf#M9.38680.Title.2.General.Structure>
- [20] 
[CITE@ja-jp[OpenType specification overview (OpenType 1.9) - Typography | [[Microsoft]] Docs]], [[PeterCon]], [TIME[2022-08-26T12:07:26.000Z]] <https://docs.microsoft.com/ja-jp/typography/opentype/spec/overview>
-[22] [CITE@ja-jp[Advanced typographic tables - OpenType Layout (OpenType 1.9) - Typography | [[Microsoft]] Docs]], [[PeterCon]], [TIME[2022-08-28T01:17:05.000Z]] <https://docs.microsoft.com/ja-jp/typography/opentype/spec/ttochap1#characters-versus-glyphs>

]REFS]

* 意味

[9] 
[CITE[The Unicode Standard]]
における[RUBYB[グリフ][glyph]]は、
[[文字][Unicode文字]]が[[レンダリング]]、[RUBYB[[[表示]]][display]]されるときに持つことができる[[文字][Unicode文字]]の[RUBYB[図形][shape]]です。
[[文字][Unicode文字]]とは違って[[グリフ]]は[RUBYB[[[画面]]][screen]]や[[紙]]に1つ[[以上]]の[[文字]]の特定の[RUBYB[表現][representation]]として出現するものです。
[SRC[>>7]]

[10] 
[[グリフ]]の[[レパートリ]]は、[[フォント]]となります。
[SRC[>>7]]

[11] 
[[グリフ]]の[RUBYB[図形][shape]]と[[グリフ]]の識別・選択の手法は、
個々の[[フォント]][[事業者]]や関係する[[規格]]の責となるところであって、
[CITE[The Unicode Standard]]
では定めていません。
[SRC[>>7]]

[16] 
[[グリフ]]の選択は、前後の[[文字]]の文脈によって左右されることがあります。
[SRC[>>7]]

[17] 
[[グリフ]]の選択は、[[フォントサイズ]]、[[添字]]その他書式付けによって左右されることもあります。
[SRC[>>7]]

-*-*-

[23] 
[[OpenType]] においては、
[[利用者]]が[RUBYB[見た][view]]り[RUBYB[印刷][print]]したりするのは[RUBYB[[[文字]]][character]]ではなく、
[DFN[[RUBYB[グリフ][glyph]]]]です。
[[文字]]とは[[データ]]中で[[数値表現][文字符号]]を持った抽象[RUBYB[[[実体]]][entity]]であり、
[[グリフ]]は[[文字]]を[RUBYB[視覚化][visualization]]したものです。
[SRC[>>22]]

[25] 
[[OpenType]] [[フォント]]は[[グリフ]]の[RUBYB[[[集成]]][collection]]を含んでいます。
[SRC[>>22]]

** グリフの抽象性

[14] 
[[文字]]と[[グリフ]]の関係では[[文字]]は抽象的な存在で1つの[[文字]]でもいろいろな[[グリフ]]があり得ると説明されますが、
[[グリフ]]もまた抽象的な存在だと説明されることがあります。

[27] 
実際[[フォント]]に含まれる特定の[[グリフ]]データは[[フォントサイズ]]、
[[文字色]]、
その他の装飾、
[[ラスター化]]手法といった要素で違った[[グリフ]]画像に変換されて出力されます。
この意味で[[グリフ]]データは[[グリフ]]画像を抽象化したものと言い得ます。

;; [28] [[グリフ]]データ = [[クラス]]、
[[グリフ]]画像 = [[実現値]]と言ってもいいでしょうか。

[29] 
が普段はあまりこのレベルの厳密な用語遣いはされていないようです。

[FIG(quote)[
[FIGCAPTION[
[1] 
[CITE@en[[[RFC 3536]] - Terminology Used in Internationalization in the IETF]] ([TIME[2011-01-29 02:14:52 +09:00]] 版) <http://tools.ietf.org/html/rfc3536#page-5>
]FIGCAPTION]

> A glyph is an abstract form that represents one or more glyph
images.  The term "glyph" is often a synonym for glyph image,
which is the actual, concrete image of a glyph representation
having been rasterized or otherwise imaged onto some display
surface.  In displaying character data, one or more glyphs may be
selected to depict a particular character.  These glyphs are
selected by a rendering engine during composition and layout
processing. <UNICODE>
]FIG]

[30] ここでは[[グリフ]] = [[グリフ]]画像だとされていますが、
どちらかといえば[[グリフ]] = [[グリフ]]データで使われていることが多いような感覚が。


* グリフとUnicode文字

[12] 
1つの[[文字]]に、
複数の[[グリフ]]が対応することがあります。
[[イタリック]]、
[[孤立形]]、
[[語末形]]、
[[言語]]差、
その他いろいろな[[グリフ]]の違いがありえます。
[SRC[>>7]]

[13] 
[[合字]]のように、
1つの[[グリフ]]が、
複数の[[文字]]の列に対応することがあります。
[SRC[>>7]]

[15] 
[[アラビア文字]]や[[インド系文字]]の[[フォント]]のように、
[[Unicode文字]]の数より遥かに多くの[[グリフ]]が必要となる場合があります。
[SRC[>>7]]

[18] 
[CITE[The Unicode Standard]]
は、
同じテキスト内容が同じように蓄積され、
交換可能な[[文字符号]]の列となるようにするべく、
[[文字]]と[[グリフ]]の既定の関係を記述するものの、
[RUBYB[洗練された組版][fine typography]]のためにはより詳しい規則が必要となるだろうとしています。
[SRC[>>7]]

[19] 実際かなり多くの事項、表示に関わるほとんどの事項は実装依存とされ、
詳細が省かれております。 [[相互運用性]]に乏しいことも少なくありません。


[26] 
[[OpenType]] においては [[shaping]] における前処理を経た[[文字コード]](列)を、
[[フォント]]の [CODE[cmap]] によって[[文字コード]]から[[グリフID]]に変換します。
更に[[フォント]]の [CODE[GDEF]] [[表]]データに基づき[[グリフID]]に一定の演算を施すことで、
最終的な[[グリフ]](列)を得ます。
一連の操作によって入力の[[文字コード]]列と出力の[[グリフ]]列の表示は順序関係が逆転することもありますし、
[[文字]]よりも[[グリフ]]が増えたり減ったりもします。

* レンダリング

[SEE[ [[文字のレンダリング]], [[グリフの選択]], [[グリフの座標]] ]]

[21] 
[[グリフ]]の[[アウトライン]]データの[[ラスター化]]の手法は仕様書で定められていますが、
環境に合わせて適宜[[仕立て]]て良いとされています。
[SRC[>>20]]

* グリフの識別

[FIG(short list)[ [5] [[グリフ]]識別
- [[グリフID]]
- [[グリフ名]]
- [[ISO/IEC 10036]]
- [[[CODE[GSUB]]代替グリフの選択]]
- [[グリフ集合]]
]FIG]


* グリフの情報交換

[31] 
[[グリフ]]の[[情報交換]]には[[グリフ]]を集めた[[フォント]]の形が普通です。
[SEE[ [[フォント]], [[外字]] ]]

[32] 
[[外字]]のような [[ad hoc]] な[[情報交換]]には一般の[[画像形式]]が使われることもあります。

* グリフの付加情報

[33] 
狭義の[[グリフ]]は[[図形]]データそのものですが、実用上は様々な付加情報が必要になります。
その種別と記述や[[グリフ]]本体との関連付けの方法は、
[[フォント形式]]や[[プラットフォーム]]等で違っています。

[34] 
ほとんどの[[フォント形式]]は、[[文字コード]] ([[フォント符号化]])
と[[グリフ]]の対応関係を記述できます。
[[OpenType]]
の場合
[CODE[cmap]]
[[表][OpenType表]]で記述します。

[38] 
[[OpenType]] では [CODE[post][post (OpenType)]] [[表][OpenType表]]によって[[グリフ名]]を記述できます。

[35] 
[[OpenType]] では [CODE[GPOS]] [[表][OpenType表]]によって[[グリフ]]に[[レンダリング]]のための位置調整情報を与えられます。

[37] 
[[OpenType]] では [CODE[BASE][BASE (OpenType)]] [[表][OpenType表]]等で単一の[[グリフ]]ではなくすべての[[グリフ]]に共通する[[基線]]情報を与えられます。

[36] 
[[OpenType]] では [CODE[GDEF]] [[表]]で[[グリフ]]を分類し、
直接または間接に、付随する情報を与えられます。

* 関連


[24] 
[[字形]]と[[グリフ]]は同じような意味で曖昧に使われることがあります。
[[グリフ]]は[[フォント]]や[[印刷]]・表示技術的な視座、
[[字形]]は[[文字]]体系的な視座、
という[[ニュアンス]]の違いがあります。

[39] 
[[グリフ的部分集合]]

[40] 
[[グリフ合成]]

* 歴史



[2] [CITE[Introduction – SVG 1.1 (Second Edition)]]
( ([TIME[2011-08-10 12:35:27 +09:00]] 版))
<http://www.w3.org/TR/2011/REC-SVG11-20110816/intro.html#TermGlyph>

[3] [CITE@en[RFC 6365 - Terminology Used in Internationalization in the IETF]]
([TIME[2011-09-10 19:11:51 +09:00]] 版)
<http://tools.ietf.org/html/rfc6365#page-7>

[4] [CITE@en[Character Model for the World Wide Web 1.0: Fundamentals]]
( ([TIME[2005-02-15 14:24:00 +09:00]] 版))
<http://www.w3.org/TR/charmod/#sec-VisualRenderingUnits>



[6] [CITE@en[SSML 1.0 say-as attribute values]]
([TIME[2018-10-09 22:31:33 +09:00]])
<https://www.w3.org/TR/2005/NOTE-ssml-sayas-20050526/#S3.4glyphs>

[8] [[外字]]