X-Git-Url: http://git.chise.org/gitweb/?p=m17n%2Fm17n-docs.git;a=blobdiff_plain;f=data-usr%2Fflt.txt;h=7d45f0d7b501f6718cb67622a7d618c2d3f62db8;hp=a75a8ad0c9630c0e72b0dc9b5272fe931f9ce6e6;hb=d5b639418e6f1532218a9ec58738290bd8f87322;hpb=2dbf661e686b887d3519a9dc348fd57fb73cd30b diff --git a/data-usr/flt.txt b/data-usr/flt.txt index a75a8ad..7d45f0d 100644 --- a/data-usr/flt.txt +++ b/data-usr/flt.txt @@ -1,67 +1,65 @@ -;; FILE-FORMAT: -;; '(' -;; CATEGORY-TABLE GENERATOR -;; ( CATEGORY-TABLE ? GENERATOR ) * -;; ')' -;; -;; CATEGORY-TABLE ::= -;; '(' 'category' CATEGORY-SPEC + ')' -;; -;; CATEGORY-SPEC ::= -;; '(' CODE CATEGORY-CODE ')' -;; | -;; '(' CODE CHAR-CODE CATEGORY-CODE ')' -;; -;; CATEGORY-CODE ::= -;; [ '?A' .. '?Z' '?a' .. '?z' ] -;; -;; GENERATOR ::= -;; '(' 'generator' REGEX-RULE RULE-DEF * ')' -;; -;; RULE-DEF ::= -;; '(' RULE-NAME ( REGEXP-RULE | MATCH-RULE | MAP-RULE ) ')' -;; -;; REGEXP-RULE ::= -;; '(' REGEXP RULE-SEQ ')' | RULE-NAME -;; MATCH-RULE ::= -;; '(' MATCH-IDX RULE-SEQ ')' | RULE-NAME -;; -;; RULE-SEQ ::= -;; '(' ( REGEXP-RULE | MATCH-RULE | MAP-RULE | PREDEFINED ) ')' - -;; PREDEFIND ::= PREDEFIND-SIMLE | PREDEFIND-OTF -;; -;; PREDEFIND-SIMLE ::= '=' | '*' | '<' | '>' | '|' -;; -;; PREDEFIND-OTF ::= 'otf:SCRIPT-TAG[:LANGSYS-TAG]' -;; where -;; SCRIPT-TAG is OTF's ScriptTag name (four letters) listed at: -;; -;; LANGSYS-TAG is OTF's Language System name (four letters) listed at: -;; -;; ex: 'otf:deva' -;; -;; MAP-RULE ::= -;; '(' ( SEQ-TO-SEQ | RANGE-TO-CODE ) + ')' | RULE-NAME -;; -;; SEQ-TO-SEQ ::= -;; '(' CODE + '-1' ( COMPOSITION-RULE ? CODE ) * ')' -;; RANGE-TO-CODE ::= -;; '(' '(' CODE CODE ')' COMPOSITION-RULE ? CODE ')' -;; -;; COMPOSITION-RULE ::= 'VHOVH' -;; where V ::= ( 't' | 'c' | 'b' | 'B' ) -;; H ::= ( 'l' | 'c' | 'r' ) -;; O ::= ( '.' | XOFF | XOFF ? YOFF ) -;; XOFF ::= ('+' | '-') DIGITS -;; YOFF ::= ('<' | '>') DIGITS -;; Ex: 'tc+bc', 'Bl-10<20Br' -;; -;; Semantics of predefiend commands: -;; -;; '*': repeat the previous command if the command was successful. -;; '<': start grapheme cluster -;; '>': end grapheme cluster -;; '|': produce a special glyph whose code has category-code ' '. -;; '=': use the first glyph of the current run as is. -;; +FONT-LAYOUT-TABLE ::= + '(' CATEGORY-TABLE GENERATOR ( CATEGORY-TABLE ? GENERATOR ) * ')' + +CATEGORY-TABLE ::= + '(' 'category' CATEGORY-SPEC + ')' + +CATEGORY-SPEC ::= + '(' ( CODE | CODE-FROM CODE-TO ) CATEGORY-CODE ')' + +CATEGORY-CODE ::= + [ '?A' | ... | '?Z' | '?a' | ... | '?z' ] + +GENERATOR ::= + '(' 'generator' RULE RULE-DEF * ')' + +RULE-DEF ::= + '(' RULE-NAME RULE ')' + +RULE ::= + REGEXP-RULE | MATCH-RULE | MAP-RULE | PREDEFINED-RULE | OTF-RULE + +REGEXP-RULE ::= + '(' REGEXP RULE * ')' | RULE-NAME + +MATCH-RULE ::= + '(' MATCH-IDX RULE * ')' | RULE-NAME + +PREDEFINED-RULE ::= + '=' | '*' | '<' | '>' | '|' + +OTF-URLE ::= + 'otf:SCRIPT-TAG[:LANGSYS-TAG]' + where + SCRIPT-TAG is OTF's ScriptTag name (four letters) listed at: + + LANGSYS-TAG is OTF's Language System name (four letters) listed at: + + Example: 'otf:deva' + +MAP-RULE ::= + '(' ( SEQ-TO-SEQ | RANGE-TO-CODE ) + ')' | RULE-NAME + +SEQ-TO-SEQ ::= + '(' CODE + '-1' ( COMBINING-SPEC ? CODE ) * ')' + +RANGE-TO-CODE ::= + '(' '(' CODE-FROM CODE-TO ')' COMBINING-SPEC ? CODE ')' + +COMBINING-SPEC ::= + 'VHOVH' + where V ::= ( 't' | 'c' | 'b' | 'B' ) + H ::= ( 'l' | 'c' | 'r' ) + O ::= ( '.' | XOFF | YOFF XOFF ? ) + XOFF ::= ('<' | '>') DIGITS + YOFF ::= ('+' | '-') DIGITS + Example: 'tc+bc', 'Bl-10<20Br' + +Semantics of PREDEFINED-RULE: + + '*': repeat the previous command if the command was successful. + '<': start grapheme cluster + '>': end grapheme cluster + '|': produce a special glyph whose code has category-code ' '. + '=': use the first glyph of the current run as is. +