<li> ¥«¥Æ¥´¥ê
-¤½¤Î¥¹¥Æ¡¼¥¸¤Î @c CATEGORY-TABLE ¤ÇÄêµÁ¤µ¤ì¤¿¥«¥Æ¥´¥ê¡¼¥³¡¼¥É¡£
+¤½¤Î¥¹¥Æ¡¼¥¸¤Î @c CATEGORY-TABLE ¤ÇÄêµÁ¤µ¤ì¤¿¤«¡¢°ÊÁ°¤Î¥¹¥Æ¡¼¥¸¤ÇÄêµÁ¤µ
+¤ì¾å½ñ¤¤µ¤ì¤Æ¤¤¤Ê¤¤¥«¥Æ¥´¥ê¡¼¥³¡¼¥É¡£
<li> ·ë¹çµ¬Â§
</ul>
¥ì¥¤¥¢¥¦¥È¥¨¥ó¥¸¥ó¤¬¥Æ¥¥¹¥È¤òÉÁ¤¯ºÝ¤Ë¤Ï¡¢¤Þ¤º¥Æ¥¥¹¥È¤Î³Æʸ»ú¤ËÂФ·¤Æ
-¤½¤ì¤¾¤ì¥Õ¥©¥ó¥È¤ÈFLT ¤ò·èÄꤹ¤ë¡£Æ±¤¸¥Õ¥©¥ó¥È¤È FLT ¤òÍѤ¤¤ëÉôʬʸ»ú
-Îó¤Ë´Ø¤·¤Æ¡¢¥ì¥¤¥¢¥¦¥È¥¨¥ó¥¸¥ó¤ÏÂбþ¤¹¤ëÃæ´ÖŪ¤Ê¥°¥ê¥Õ¤ÎÎó¤òÀ¸À®¤¹¤ë¡£
-Ãæ´ÖŪ¤Ê¥°¥ê¥Õ¥³¡¼¥É¤Î³ÆÍ×ÁǤϡ¢¥³¡¼¥É¤Î°À¤È¤·¤ÆÂбþ¤¹¤ëʸ»ú¥³¡¼¥É¡¢
-¾¤Î°À¤È¤·¤Æ 0 ¤ò»ý¤Ä¡£¤³¤ÎÎó¤ÏFLT ¤ÎºÇ½é¤Î¥¹¥Æ¡¼¥¸¤Ç¸½¹Ô¤Î @e ¥é¥ó
-(ÉôʬÎó) ¤È¤·¤Æ½èÍý¤µ¤ì¤ë¡£
+¤½¤ì¤¾¤ì¥Õ¥©¥ó¥È¤ÈFLT ¤ò·èÄꤹ¤ë¡£Æ±¤¸¥Õ¥©¥ó¥È¤È FLT ¤òÍѤ¤¤ëÉôʬʸ»úÎó
+¤Ë´Ø¤·¤Æ¡¢¥ì¥¤¥¢¥¦¥È¥¨¥ó¥¸¥ó¤ÏÂбþ¤¹¤ëÃæ´ÖŪ¤Ê¥°¥ê¥Õ¤ÎÎó¤òÀ¸À®¤¹¤ë¡£Ãæ
+´ÖŪ¤Ê¥°¥ê¥Õ¥³¡¼¥É¤Î³ÆÍ×ÁǤϡ¢¥³¡¼¥É¤Î°À¤È¤·¤ÆÂбþ¤¹¤ëʸ»ú¥³¡¼¥É¡¢Â¾
+¤Î°À¤È¤·¤Æ 0 ¤ò»ý¤Ä¡£¤³¤ÎÎó¤ÏFLT ¤ÎºÇ½é¤Î¥¹¥Æ¡¼¥¸¤Ç¸½¹Ô¤Î @e ¥é¥ó (Éô
+ʬÎó) ¤È¤·¤Æ½èÍý¤µ¤ì¤ë¡£
³Æ¥¹¥Æ¡¼¥¸¤Ï°Ê²¼¤Î¤è¤¦¤ËƯ¤¯¡£
FLT-NAME\> ¤òÍѤ¤¤Æ FLT ¤ò¥í¡¼¥É¤¹¤ë¡£FLT ¤Î¥Ç¡¼¥¿¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï°Ê²¼¤ÎÄ̤ꡧ
@verbatim
-FONT-LAYOUT-TABLE ::= STAGE0 STAGE *
+FONT-LAYOUT-TABLE ::= FLT-DECLARATION ? STAGE0 STAGE *
+
+FLT-DECLARATION ::= '(' 'font' 'layouter' NAME nil PROP * ')'
+NAME ::= SYMBOL
+PROP :: = VERSION | FONT
+VERSION ::= '(' 'version' MTEXT ')'
+FONT ::= '(' 'font' FONT-SPEC ')'
+FONT-SPEC ::=
+ '(' [[ FOUNDRY FAMILY
+ [ WEIGHT [ STYLE [ STRETCH [ ADSTYLE ]]]]]
+ REGISTRY ]
+ [ OTF-SPEC ] [ LANG-SPEC ] ')'
STAGE0 ::= CATEGORY-TABLE GENERATOR
GENERATOR ::= '(' 'generator' RULE MACRO-DEF * ')'
RULE ::= REGEXP-BLOCK | MATCH-BLOCK | SUBST-BLOCK | COND-BLOCK
- | DIRECT-CODE | COMBINING-SPEC | OTF-SPEC
+ FONT-FACILITY-BLOCK | DIRECT-CODE | COMBINING-SPEC | OTF-SPEC
| PREDEFINED-RULE | MACRO-NAME
MACOR-DEF ::= '(' MACRO-NAME RULE + ')'
¤³¤Î¥ë¡¼¥ë¤Ï¥°¥ê¥Õ¤ò¾ÃÈñ¤»¤º¡¢°Ê²¼¤Î°À¤ò»ý¤Ä¥°¥ê¥Õ¤òÀ¸À®¤¹¤ë¡£
<ul>
-<li> ¥³¡¼¥É : @c INTEGER ¡Ü ¥Ç¥Õ¥©¥ë¥È¤Î¥³¡¼¥É¥ª¥Õ¥»¥Ã¥È
+<li> ¥³¡¼¥É : @c INTEGER ¤Ë¥Ç¥Õ¥©¥ë¥È¤Î¥³¡¼¥É¥ª¥Õ¥»¥Ã¥È¤ò¤·¤¿¤â¤Î
<li> ·ë¹çµ¬Â§ : ¥Ç¥Õ¥©¥ë¥ÈÃÍ
<li> º¸¥Ñ¥Ç¥¤¥ó¥°¥Õ¥é¥° : ¥Ç¥Õ¥©¥ë¥ÈÃÍ
<li> ±¦¥Ñ¥Ç¥¤¥ó¥°¥Õ¥é¥° : 0
¹çÃפ¹¤ëÉôʬ¤¬Ìµ¤±¤ì¤Ð¡¢¤³¤Îµ¬Â§¤Ï¼ºÇÔ¤¹¤ë¡£
-¤³¤Îµ¬Â§¤¬¥¹¥Æ¡¼¥¸¤ÎºÇ½é¤Ëµ¬Â§¤Ç¤¢¤ì¤Ð¡¢@c MATCH-INDEX ¤Ï 0 ¤Ç¤¢¤ê¡¢¸½
-¹Ô¤Î¥é¥óÁ´ÂΤ˹çÃפ¹¤ë¡£
+¤³¤Îµ¬Â§¤¬¥¹¥Æ¡¼¥¸¤ÎºÇ½é¤Îµ¬Â§¤Ç¤¢¤ë¾ì¹ç¤Ï¡¢@c MATCH-INDEX ¤Ï 0 ¤Ç¤Ê¤¯
+¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£¤³¤Î¾ì¹ç¥é¥óÁ´ÂΤ˹çÃפ¹¤ë¤³¤È¤Ë¤Ê¤ë¡£
@verbatim
SUBST-BLOCK ::= '(' SOURCE-PATTERN RULE * ')'
¹çÃפ¹¤ëÉôʬ¤¬Ìµ¤±¤ì¤Ð¡¢¤³¤Îµ¬Â§¤Ï¼ºÇÔ¤¹¤ë¡£
+
+@verbatim
+FONT-FACILITY-BLOCK ::= '(' FONT-FACILITY RULE * ')'
+FONT-FACILITY = '(' 'font-facility' CODE * ')'
+ | '(' 'font-facility' FONT-SPEC ')'
+@endverbatim
+
+¸½ºß¤Î¥Õ¥©¥ó¥È¤¬ @c CODE ¤Î¥°¥ê¥Õ¤ò»ý¤Ã¤Æ¤¤¤ë¤«¡¢@c FONT-SPEC ¤È¹çÃפ¹
+¤ì¤Ð¡¢¤³¤Îµ¬Â§¤ÏÀ®¸ù¤·¡¢@c RULE ¤ò¼Â¹Ô¤¹¤ë¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¢¤³¤Îµ¬Â§¤Ï
+¼ºÇÔ¤¹¤ë¡£
+
@verbatim
COND-BLOCK ::= '(' 'cond' RULE + ')'
@endverbatim
̾Á°¤Ï°Ê²¼¤Îʸˡ¤Ë½¾¤¦¡£
@verbatim
- OTF-SPEC-NAME ::= 'otf:' SCRIPT LANGSYS ? GSUB-FEATURES ? GPOS-FEATURES ?
+ OTF-SPEC-NAME ::= ':otf' SCRIPT LANGSYS ? GSUB-FEATURES ? GPOS-FEATURES ?
SCRIPT ::= SYMBOL
@c GPOS-FEATURES ¤Î»ØÄê¤Ï @c GSUB-FEATURES ¤Î¾ì¹ç¤ÈƱÍͤǤ¢¤ë¡£
-Á´¤Æ¤Î¥¿¥°Ì¾¤Ï ASCII ¤Î£´Ê¸»ú¤Ç¤¢¤ë¤³¤È¡£
+Á´¤Æ¤Î¥¿¥°Ì¾¤Ï ASCII ¤Îɽ¼¨²Äǽʸ»ú£´¤Ä¤«¤é¤Ê¤ë¤³¤È¡£
OpenType ¤Î»ØÄêÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¼¡¤Î¥Ú¡¼¥¸¤ò»²¾È¤Î¤³¤È¡£\n
<http://www.microsoft.com/typography/otspec/default.htm>
<li> category
-This is the category code defined in the @c CATEGORY-TABLE
-of the current stage.
+The category code defined in the @c CATEGORY-TABLE of the current
+stage, or defined in the one of the former stages and not overwritten
+by later stages.
<li> combining-spec
When the layout engine draws text, it at first determines a font and
an FLT for each character in the text. For each subsequence of
-characters that use use the same font and FLT, the layout engine
-generates an intermediate glyph sequence from the character
-subsequence. Each element in the intermediate glyph sequence
-has the corresponding character code as the code attribute and zeroes
-for other attributes. This sequence is processed in the
+characters that use the same font and FLT, the layout engine generates
+a corresponding intermediate glyph sequence. The code attribute of
+each element in the intermediate glyph sequence is its character code,
+and all other attributes are zeros. This sequence is processed in the
first stage of FLT as the current @e run (substring).
Each stage works as follows.
-At first, if the stage has a @c CATEGORY-TABLE, the category of each glyph
-in the current run is updated. If there is a glyph that has no category,
-the current run ends before that glyph.
+At first, if the stage has a @c CATEGORY-TABLE, the category of each
+glyph in the current run is updated. If there is a glyph that has no
+category, the current run ends before that glyph.
-Then, the default values of code-offset, combining-spec, and left-padding-flag
-of this stage are initialized to zero.
+Then, the default values of code-offset, combining-spec, and
+left-padding-flag of this stage are initialized to zero.
Next, the initial conversion rule of the stage is applied to the
current run.
MACOR-DEF ::= '(' MACRO-NAME RULE + ')'
@endverbatim
-Each @c RULE specifies glyphs to be consumed and glyphs to be produced. When
-some glyphs are consumed, they are taken away from the current run. A
-rule may fail in some condition. If not described explicitly to
-fail, it should be regarded that the rule succeeds.
+Each @c RULE specifies glyphs to be consumed and glyphs to be
+produced. When some glyphs are consumed, they are taken away from the
+current run. A rule may fail in some condition. If not described
+explicitly to fail, it should be regarded that the rule succeeds.
@verbatim
DIRECT-CODE ::= INTEGER
<li> @c @]
-This rule changes the right-padding-flag of the lastly generated
-glyph to 1.
-No glyph is consumed. No glyph is produced.
+This rule changes the right-padding-flag of the lastly generated glyph
+to 1. No glyph is consumed. No glyph is produced.
<li> @c |
This rule consumes no glyph and produces a special glyph whose
-category is ' ' and other attributes are zero.
-This is the only rule that produces that special glyph.
+category is ' ' and other attributes are zero. This is the only rule
+that produces that special glyph.
</ul>
| '(' 'font-facility' FONT-SPEC ')'
@endverbatim
-If the current font has glyphs for @c CODEs or matches with
+If the current font has glyphs for @c CODEs or matches with @c
FONT-SPEC, this rule succeeds and @c RULEs are executed. Otherwise,
this rule fails.
LANGSYS is omitted, the Default Language System
table is used.
-For @c GSUB-FEATURES, each @c SYMBOL in @c FEATURE LIST specifies a GSUB Feature tag name
-to apply. '*' is allowed as the last item to specify all remaining
-features. If @c SYMBOL is preceded by '~' and the last item is '*',
-@c SYMBOL is excluded from the features to apply. If no @c SYMBOL is
-specified, no GSUB feature is applied. If @c GSUB-FEATURES itself is
-omitted, all GSUB features are applied.
+For @c GSUB-FEATURES, each @c SYMBOL in @c FEATURE LIST specifies a
+GSUB Feature tag name to apply. '*' is allowed as the last item to
+specify all remaining features. If @c SYMBOL is preceded by '~' and
+the last item is '*', @c SYMBOL is excluded from the features to
+apply. If no @c SYMBOL is specified, no GSUB feature is applied. If
+@c GSUB-FEATURES itself is omitted, all GSUB features are applied.
The specification of @c GPOS-FEATURES is analogous to that of @c
GSUB-FEATURES.
COMBINING ::= SYMBOL
@endverbatim
-@c COMBINING is a symbol whose name specifies how
-to combine the next glyph with the previous one. This rule sets the
-default combining-spec to an integer code that is unique to the symbol
-name. The name has the following syntax.
+@c COMBINING is a symbol whose name specifies how to combine the next
+glyph with the previous one. This rule sets the default
+combining-spec to an integer code that is unique to the symbol name.
+The name has the following syntax.
@verbatim
COMBINING-NAME ::= VPOS HPOS OFFSET VPOS HPOS