2 '(' CATEGORY-TABLE GENERATOR ( CATEGORY-TABLE ? GENERATOR ) * ')'
5 '(' 'category' CATEGORY-SPEC + ')'
8 '(' ( CODE | CODE-FROM CODE-TO ) CATEGORY-CODE ')'
11 [ '?A' | ... | '?Z' | '?a' | ... | '?z' ]
14 '(' 'generator' RULE RULE-DEF * ')'
17 '(' RULE-NAME RULE ')'
20 REGEXP-RULE | MATCH-RULE | MAP-RULE | PREDEFINED-RULE | OTF-RULE
23 '(' REGEXP RULE * ')' | RULE-NAME
26 '(' MATCH-IDX RULE * ')' | RULE-NAME
29 '=' | '*' | '<' | '>' | '|'
32 'otf:SCRIPT-TAG[:LANGSYS-TAG]'
34 SCRIPT-TAG is OTF's ScriptTag name (four letters) listed at:
35 <http://www.microsoft.om/typograph/otspec/scripttags.htm>
36 LANGSYS-TAG is OTF's Language System name (four letters) listed at:
37 <http://www.microsoft.om/typograph/otspec/languagetags.htm>
41 '(' ( SEQ-TO-SEQ | RANGE-TO-CODE ) + ')' | RULE-NAME
44 '(' CODE + '-1' ( COMBINING-SPEC ? CODE ) * ')'
47 '(' '(' CODE-FROM CODE-TO ')' COMBINING-SPEC ? CODE ')'
51 where V ::= ( 't' | 'c' | 'b' | 'B' )
52 H ::= ( 'l' | 'c' | 'r' )
53 O ::= ( '.' | XOFF | YOFF XOFF ? )
54 XOFF ::= ('<' | '>') DIGITS
55 YOFF ::= ('+' | '-') DIGITS
56 Example: 'tc+bc', 'Bl-10<20Br'
58 Semantics of PREDEFINED-RULE:
60 '*': repeat the previous command if the command was successful.
61 '<': start grapheme cluster
62 '>': end grapheme cluster
63 '|': produce a special glyph whose code has category-code ' '.
64 '=': use the first glyph of the current run as is.