| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- digraph {
- graph [outputorder=edgefirst];
- node [shape="record", fontname="Noto Sans Mono SemiBold", fontsize=15];
- edge [fontname="Verdana", fontsize=12,labeldistance=7.5 ];
- fontname="Verdana";
- ranksep=0.02; nodesep=0.5;
- subgraph {
- ranksep="0.02 equally";
- preprocessing[style=filled,fillcolor="lightgreen",fontname="Verdana",label="Glyph pre-processing"];
- orthographic[style=filled,fillcolor="lightblue",fontname="Verdana",label="Orthographic Unit Shaping"];
- reordering[style=filled, fillcolor="lightcoral",fontname="Verdana",label="Reordering group (USE)"];
- topographic[style=filled,fillcolor="lightgoldenrod",fontname="Verdana",label="Topographical Features‡"];
- typographic[style=filled,fillcolor="lightpink",fontname="Verdana",label="Typographic Presentation"];
- positioning[style=filled,fillcolor="lightsalmon",fontname="Verdana",label="Positioning"];
- preprocessing->reordering->orthographic->topographic->typographic->positioning;
- }
- decision1 [shape="diamond", label="Script\ndirection?",fontname="Verdana"];
- rvrn->decision1;
- ltrfeatures [label="{ltra|ltrm}", fillcolor="lightgreen",style="filled"];
- {
- rtlfeatures [label="{rtla|rtlm¹}", fillcolor="lightgreen",style="filled"];
- }
- {
- rank=same;
- fracfeatures [label="frac²|numr³|dnom⁴", fillcolor="lightpink",style="filled"];
- fracnotes [fontname="Verdana",shape=plaintext,label=<<table border="0" cellborder="0" cellspacing="0">
- <tr><td align="left">¹ rtlm is scoped to characters with a Unicode mirroring property</td></tr>
- <tr><td align="left">² frac is scoped to numr + the slash + dnom</td></tr>
- <tr><td align="left">³ numr is scoped to all decimal numbers before a U+2044 FRACTION SLASH.</td></tr>
- <tr><td align="left">⁴ dnom is scoped to all decimal numbers after a U+2044 FRACTION SLASH.</td></tr>
- </table>
- >];
- }
- rand [fillcolor="lightpink",style="filled"];
- decision1 -> ltrfeatures [label="Left-to-right"];
- decision1 -> rtlfeatures [label="Right-to-left"];
- decision1 -> fracfeatures [label="Other"];
- ltrfeatures -> fracfeatures;
- rtlfeatures -> fracfeatures;
- fracfeatures->rand;
- decision2 [shape="diamond", label="Script?",fontname="Verdana"];
- {rank=same; HARF [label="{Harf|HARF}"]; notes;}
- rand -> trak -> HARF -> decision2;
- commonfeatures [shape=none,label=<<table border="0" cellspacing="0">
- <tr>
- <td border="1" bgcolor="lightsalmon">abvm</td>
- <td border="1" bgcolor="lightsalmon">blwm</td>
- <td border="1" bgcolor="lightgreen">ccmp</td>
- <td border="1" bgcolor="lightgreen">locl</td>
- <td border="1" bgcolor="lightsalmon">mark</td>
- <td border="1" bgcolor="lightsalmon">mkmk</td>
- <td border="1" bgcolor="lightpink">rlig</td>
- </tr>
- </table>>
- ];
- decision3 [shape="diamond", label="Script\ndirection?",fontname="Verdana"];
- BUZZ [label="{Buzz|BUZZ}"];
- BUZZ -> commonfeatures -> decision3;
- horizontalfeatures [
- shape=none,label=<<table border="0" cellspacing="0">
- <tr><td border="1" bgcolor="lightpink">calt <font face="Verdana">(not Hangul)</font></td></tr>
- <tr><td border="1" bgcolor="lightpink">clig <font face="Verdana">(not Khmer)</font></td></tr>
- <tr><td border="1" bgcolor="lightsalmon">curs</td></tr>
- <tr><td border="1" bgcolor="lightsalmon">dist</td></tr>
- <tr><td border="1" bgcolor="lightsalmon">kern</td></tr>
- <tr><td border="1" bgcolor="lightpink">liga <font face="Verdana">(not Khmer)</font></td></tr>
- <tr><td border="1" bgcolor="lightpink">rclt</td></tr>
- </table>>
- ];
- vert [label="vert",style=filled,fillcolor="lightpink"];
- decision3 -> horizontalfeatures [label="Horizontal"];
- decision3 -> vert [label="Vertical"];
- discretionary [label="User-selected\ndiscretionary\nfeatures",fontname="Verdana"];
- horizontalfeatures -> discretionary;
- vert -> discretionary;
- decision2->stch;
- BUZZ;
- subgraph shapers {
- subgraph cluster_arabic {
- bgcolor="lightyellow"
- label="Arabic, Syriac";
- stch [ style="filled", fillcolor="lightgreen",label="stch"];
- ccmplocl [ style="filled", label="ccmp|locl", fillcolor="lightgreen"];
- arabicfeatures [label="isol|fina|fin2|fin3|medi|med2|init", style="filled", fillcolor="lightgoldenrod"];
- arabicfeatures2 [label="rclt|calt", style="filled",fillcolor="lightpink"];
- rlig[style="filled",fillcolor="lightpink"];
- mset [fillcolor="lightpink",style="filled"]
- stch->ccmplocl->arabicfeatures->rlig->arabicfeatures2->mset;
- }
- mset->BUZZ:n;
- subgraph cluster_hangul {
- bgcolor="lightyellow"
- label="Hangul";
- hangulfeatures [label="ljmo|vjmo|tjmo", style="filled",fillcolor="lightgoldenrod"]
- }
- hangulfeatures->BUZZ:n;
- subgraph cluster_indic {
- label="Indic";
- bgcolor="lightyellow"
- // Preprocessing
- loclccmpindic [label="locl†|ccmp†",style=filled,fillcolor="lightgreen"];
- node[style=filled,fillcolor="lightgreen"];
- nukt [label="nukt†"];
- akhn [label="akhn†"];
- loclccmpindic->indic_reorder_1->nukt->akhn;
- indic_reorder_1[label="Initial reordering", fontname="Verdana",fillcolor="lightgrey",shape=ellipse,style=filled]
- // Orthographic
- node[style=filled,fillcolor="lightblue"]
- rphf [label="rphf⁵"];
- rkpf [label="rkpf†"];
- pref [label="pref⁶"];
- blwf [label="blwf⁷"];
- abvf [label="abvf⁸"];
- half [label="half⁹"];
- pstf [label="pstf⁸"];
- vatu [label="vatu†"];
- cjct [label="cjct†"];
- akhn ->rphf -> rkpf -> pref -> blwf -> abvf -> half -> pstf -> vatu -> cjct;
- // Typographic presentation
- indic_typographic[style=filled,fillcolor="lightpink",label="init|pres|abvs|blws|psts|haln"]
- indic_reorder_2[label="Final reordering",fillcolor="lightgrey",fontname="Verdana", shape=ellipse,style=filled]
- cjct->indic_reorder_2->indic_typographic;
- notes2 [fontname="Verdana",shape=plaintext,style="",label=<<table border="0" cellborder="0" cellspacing="0">
- <tr><td align="right">⁵ rphf is scoped to pre-base ra+halant sequences</td></tr>
- <tr><td align="right">⁶ pref is scoped to the two glyphs after the base; outputs are reordered</td></tr>
- <tr><td align="right">⁷ blwf is usually scoped to the whole syllable, except in Telugu and Kannada where it is post-base</td></tr>
- <tr><td align="right">⁸ abvf and pstf are scoped to post-base</td></tr>
- <tr><td align="right">⁹ half is scoped to pre-base</td></tr>
- </table>
- >];
- indic_typographic -> notes2 [style=invis];
- }
- subgraph cluster_khmer {
- label="Khmer";
- bgcolor="lightyellow"
- khmerbasic [style=filled,fillcolor="lightgreen",label="locl†|ccmp†|pref†|bwlf†|abvf†|pstf†|cfar†"]
- khmerother [style=filled,fillcolor="lightpink",label="pres|abvs|blws|psts"]
- khmerbasic -> khmerother -> khmerclig;
- khmerclig [label="clig",style=filled,fillcolor="lightpink"];
- }
- subgraph cluster_myanmar {
- label="Myanmar";
- bgcolor="lightyellow"
- loclccmpmyanmar [label="locl†|ccmp†",style=filled,fillcolor="lightgreen"];
- rphfmymr [label="rphf†",style=filled,fillcolor="lightblue"]
- prefmymr [label="pref†",style=filled,fillcolor="lightblue"]
- blwfmymr [label="blwf†",style=filled,fillcolor="lightblue"]
- pstfmymr [label="pstf†",style=filled,fillcolor="lightblue"]
- myanmarother [label="pres|abvs|blws|psts",style=filled,fillcolor="lightpink"];
- reorder_myanmar[label="Reordering", shape=ellipse,style=filled,fontname="Verdana"]
- loclccmpmyanmar -> reorder_myanmar-> rphfmymr -> prefmymr -> blwfmymr -> pstfmymr -> myanmarother;
- }
- subgraph cluster_use {
- label="Universal Shaping Engine"
- bgcolor="lightyellow"
- use_preprocessing [style=filled, label="locl†|ccmp†|nukt†|akhn†", fillcolor="lightgreen"];
- // Reoredering
- rphfuse [label="rphf¹⁰", style=filled, fillcolor="lightcoral"];
- prefuse [label="pref¹¹", style=filled, fillcolor="lightcoral"];
- // Orthographic
- orthographicuse [label="rkrf†|abvf†|blwf†|half†|pstf†|vatu†|cjct†", style="filled", fillcolor="lightblue"];
- topographicaluse [label="isol|init|medi|fina", style="filled", fillcolor="lightgoldenrod"];
- typographicaluse [label="abvs|blws|haln|pres|psts", style="filled", fillcolor="lightpink"];
- reorder_use[label="Reordering", shape=ellipse,style=filled,fontname="Verdana"]
- use_preprocessing -> rphfuse -> prefuse->orthographicuse ->reorder_use -> topographicaluse -> typographicaluse;
- notes3 [fontname="Verdana",shape=plaintext,label=<<table border="0" cellborder="0" cellspacing="0">
- <tr><td align="left">¹⁰ Outputs are reordered as category R</td></tr>
- <tr><td align="left">¹¹ Outputs are reordered to before base</td></tr>
- </table>
- >];
- typographicaluse -> notes3 [style=invis];
- }
- }
- indic_typographic->BUZZ:n;
- typographicaluse->BUZZ:n;
- khmerclig -> BUZZ:n;
- myanmarother -> BUZZ:n;
- decision2->hangulfeatures;
- decision2->loclccmpindic;
- decision2->khmerbasic;
- decision2->loclccmpmyanmar;
- decision2->use_preprocessing;
- decision2->BUZZ [label=" Hebrew, Thai,\n Lao, other"];
- notes [fontname="Verdana",shape=box,label=<<table border="0" cellborder="0" cellspacing="0">
- <tr><td align="left">
- <b>Indic</b> scripts are: Bengali, Devanagari,
- Gujarati, Gurmukhi, Kannada,
- Malayalam, Oriya, Tamil,
- Telugu
- </td></tr>
- <tr><td align="left">
- <b>USE</b> scripts are:
- Adlam, Ahom, Balinese, Batak, Bhaiksuki, Brahmi, Buginese,
- Buhid, Chakma, Cham, Chorasmian, Dives Akuru, Dogra, Duployan,
- </td></tr>
- <tr><td align="left">
- Egyptian hieroglyphs, Elymaic, Grantha, Gunjala Ggondi, Hanifi Rohingya,
- Hanunoo, Javanese, Kaithi, Kayah li, Kharoshthi, Khojki,
- </td></tr>
- <tr><td align="left">
- Khudawadi, Lepcha, Limbu, Mahajani, Makasar, Mandaic, Manichaean,
- Marchen, Masaram Gondi, Medefaidrin, Meetei Mayek, Miao, Modi,
- </td></tr>
- <tr><td align="left">
- Mongolian, Multani, Nandinagari, Newa, Nko, Nyiakeng Puachue Hmong,
- Old Sogdian, Pahawh Hmong, Phags Pa, Psalter Pahlavi, Rejang,
- </td></tr>
- <tr><td align="left">
- Saurashtra, Sharada, Siddham, Sinhala, Sogdian, Soyombo, Sundanese,
- Syloti Nagri, Tagalog, Tagbanwa, Tai Le, Tai Tham, Tai Viet,
- </td></tr>
- <tr><td align="left">
- Takri, Tibetan, Tifinagh, Tirhuta, Wancho, Zanabazar square,
- </td></tr>
- </table>>]
- footnote[fontname="Verdana",label=<<table border="0" cellborder="0" cellspacing="0">
- <tr><td align="left">† Feature is scoped to each syllable</td></tr>
- <tr><td align="left">‡ All topographic features are scoped based on topographic position</td></tr>
- </table>>];
- notes3->footnote[style=invis];
- }
|