glaemscribe 1.0.19 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/glaemresources/charsets/tengwar_ds_annatar.cst +509 -0
 - data/glaemresources/charsets/tengwar_ds_eldamar.cst +22 -16
 - data/glaemresources/charsets/tengwar_ds_elfica.cst +461 -0
 - data/glaemresources/charsets/tengwar_ds_parmaite.cst +500 -0
 - data/glaemresources/charsets/{tengwar_ds.cst → tengwar_ds_sindarin.cst} +59 -62
 - data/glaemresources/charsets/tengwar_freemono.cst +176 -0
 - data/glaemresources/charsets/unicode_runes.cst +1 -0
 - data/glaemresources/modes/adunaic.glaem +50 -28
 - data/glaemresources/modes/blackspeech.glaem +156 -82
 - data/glaemresources/modes/english-ipa.glaem +49 -0
 - data/glaemresources/modes/french-ipa.glaem +49 -0
 - data/glaemresources/modes/{oldnorse-medieval.glaem → futhark-runicus.glaem} +4 -4
 - data/glaemresources/modes/futhark-younger.glaem +129 -0
 - data/glaemresources/modes/{futhorc.glaem.disabled → futhorc.glaem} +76 -38
 - data/glaemresources/modes/gothic.glaem +1 -1
 - data/glaemresources/modes/khuzdul.glaem +1 -1
 - data/glaemresources/modes/mercian.glaem +31 -16
 - data/glaemresources/modes/quenya-sarati.glaem +5 -3
 - data/glaemresources/modes/quenya.glaem +168 -77
 - data/glaemresources/modes/rlyehian.glaem +41 -43
 - data/glaemresources/modes/sindarin-beleriand.glaem +39 -17
 - data/glaemresources/modes/sindarin-daeron.glaem +1 -1
 - data/glaemresources/modes/{sindarin-classical.glaem → sindarin.glaem} +73 -37
 - data/glaemresources/modes/telerin.glaem +161 -64
 - data/glaemresources/modes/valarin-sarati.glaem +1 -1
 - data/glaemresources/modes/westron.glaem +83 -44
 - data/glaemresources/modes/westsaxon.glaem +30 -13
 - data/lib/api/charset.rb +29 -11
 - data/lib/api/charset_parser.rb +15 -3
 - data/lib/api/mode.rb +15 -3
 - data/lib/api/mode_parser.rb +7 -2
 - data/lib/api/option.rb +15 -1
 - data/lib/api/post_processor/resolve_virtuals.rb +35 -24
 - data/lib/api/transcription_pre_post_processor.rb +2 -1
 - metadata +15 -11
 - data/glaemresources/modes/blackspeech-annatar.glaem +0 -320
 - data/glaemresources/modes/futhark-long-branch.glaem.disabled +0 -101
 - data/glaemresources/modes/futhark-short-twig.glaem.disabled +0 -101
 
| 
         @@ -26,10 +26,16 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       26 
26 
     | 
    
         
             
            \writing  "Runes"
         
     | 
| 
       27 
27 
     | 
    
         
             
            \mode     "Futhorc"
         
     | 
| 
       28 
28 
     | 
    
         
             
            \version  "0.0.1"
         
     | 
| 
       29 
     | 
    
         
            -
            \authors  "Bertrand Bellet"
         
     | 
| 
      
 29 
     | 
    
         
            +
            \authors  "Historical impl. Bertrand Bellet"
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
            \charset  unicode_runes true
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
      
 33 
     | 
    
         
            +
            \beg options
         
     | 
| 
      
 34 
     | 
    
         
            +
              \option use_cweorth                     true
         
     | 
| 
      
 35 
     | 
    
         
            +
              \option use_stan                        true
         
     | 
| 
      
 36 
     | 
    
         
            +
              \option use_calc_and_gar                true
         
     | 
| 
      
 37 
     | 
    
         
            +
            \end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
       33 
39 
     | 
    
         
             
            \beg      preprocessor
         
     | 
| 
       34 
40 
     | 
    
         
             
              \downcase
         
     | 
| 
       35 
41 
     | 
    
         
             
            \end
         
     | 
| 
         @@ -45,9 +51,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       45 
51 
     | 
    
         
             
                {Y}       === (y,ý)
         
     | 
| 
       46 
52 
     | 
    
         
             
                {AE}      === (æ,ǽ)
         
     | 
| 
       47 
53 
     | 
    
         
             
                {OE}      === (œ,œ́)
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
      
 54 
     | 
    
         
            +
                {EA}      === (ea,éa)
         
     | 
| 
      
 55 
     | 
    
         
            +
                {EO}      === (eo,éo)
         
     | 
| 
      
 56 
     | 
    
         
            +
                {IO}      === (io,ío)
         
     | 
| 
       51 
57 
     | 
    
         | 
| 
       52 
58 
     | 
    
         
             
                \**  VOWELS **\
         
     | 
| 
       53 
59 
     | 
    
         | 
| 
         @@ -59,54 +65,86 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       59 
65 
     | 
    
         
             
                {Y}       --> YR
         
     | 
| 
       60 
66 
     | 
    
         
             
                {AE}      --> AESC
         
     | 
| 
       61 
67 
     | 
    
         
             
                {OE}      --> ETHEL
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
      
 68 
     | 
    
         
            +
                {EA}      --> EAR
         
     | 
| 
      
 69 
     | 
    
         
            +
                {EO}      --> EOH
         
     | 
| 
      
 70 
     | 
    
         
            +
                {IO}      --> IOR                    
         
     | 
| 
       65 
71 
     | 
    
         | 
| 
       66 
72 
     | 
    
         
             
                \**  IOTATED VOWELS **\
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
                 
     | 
| 
       69 
     | 
    
         
            -
                 
     | 
| 
       70 
     | 
    
         
            -
                i{ 
     | 
| 
       71 
     | 
    
         
            -
                i{U}      --> GER UR
         
     | 
| 
       72 
     | 
    
         
            -
                i{Y}      --> GER YR
         
     | 
| 
       73 
     | 
    
         
            -
                i{AE}     --> GER AESC
         
     | 
| 
       74 
     | 
    
         
            -
                i{OE}     --> GER ETHEL
         
     | 
| 
       75 
     | 
    
         
            -
            		i{EA}     --> GER EAR
         
     | 
| 
       76 
     | 
    
         
            -
            		i{EO}     --> GER EOH   
         
     | 
| 
      
 73 
     | 
    
         
            +
                {IOTABLES}    ===  {A}  * {E} * {O} * {U} * {Y} * {AE} * {OE}   * {EA}  * {EO}
         
     | 
| 
      
 74 
     | 
    
         
            +
                {_IOTABLES_}  ===  AC   * EH  * OS  * UR  * YR  * AESC * ETHEL  * EAR   * EOH 
         
     | 
| 
      
 75 
     | 
    
         
            +
                
         
     | 
| 
      
 76 
     | 
    
         
            +
                i [{IOTABLES}] --> GER [{_IOTABLES_} ]  
         
     | 
| 
       77 
77 
     | 
    
         | 
| 
       78 
78 
     | 
    
         
             
                \**  CONSONANTS **\
         
     | 
| 
       79 
     | 
    
         
            -
              
         
     | 
| 
       80 
79 
     | 
    
         
             
                (b,bb)         --> BEORC
         
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
      
 80 
     | 
    
         
            +
                
         
     | 
| 
      
 81 
     | 
    
         
            +
            	  \** (c,cc,k,kk)    --> CALC **\
         
     | 
| 
      
 82 
     | 
    
         
            +
                \** (ċ,ċċ)         --> CEN **\
         
     | 
| 
      
 83 
     | 
    
         
            +
                (c,cc,k,kk)    --> CEN
         
     | 
| 
       82 
84 
     | 
    
         
             
                (ċ,ċċ)         --> CEN
         
     | 
| 
      
 85 
     | 
    
         
            +
                \if use_calc_and_gar
         
     | 
| 
      
 86 
     | 
    
         
            +
                  \** overload when option is on **\ 
         
     | 
| 
      
 87 
     | 
    
         
            +
                  (c,cc,k,kk)    --> CALC
         
     | 
| 
      
 88 
     | 
    
         
            +
                \endif
         
     | 
| 
      
 89 
     | 
    
         
            +
                  
         
     | 
| 
       83 
90 
     | 
    
         
             
                (d,dd)         --> DAEG
         
     | 
| 
       84 
     | 
    
         
            -
                ( 
     | 
| 
       85 
     | 
    
         
            -
                 
     | 
| 
      
 91 
     | 
    
         
            +
                (f,ff,v)       --> FEOH
         
     | 
| 
      
 92 
     | 
    
         
            +
                
         
     | 
| 
      
 93 
     | 
    
         
            +
            	  \**  (g,gg,cg)      --> GAR  **\  
         
     | 
| 
      
 94 
     | 
    
         
            +
                \**  (ȝ,ġ,ġġ,ċġ)    --> GYFU **\
         
     | 
| 
      
 95 
     | 
    
         
            +
                (g,gg,cg)      --> GYFU    
         
     | 
| 
       86 
96 
     | 
    
         
             
                (ȝ,ġ,ġġ,ċġ)    --> GYFU
         
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
      
 97 
     | 
    
         
            +
                \if use_calc_and_gar
         
     | 
| 
      
 98 
     | 
    
         
            +
                  \** overload when option is on **\ 
         
     | 
| 
      
 99 
     | 
    
         
            +
                  (g,gg,cg)      --> GAR
         
     | 
| 
      
 100 
     | 
    
         
            +
                \endif
         
     | 
| 
      
 101 
     | 
    
         
            +
                
         
     | 
| 
      
 102 
     | 
    
         
            +
                (h,hh,ç,χ)     --> HAEGL
         
     | 
| 
      
 103 
     | 
    
         
            +
                (j,jj,ĭ)       --> GER
         
     | 
| 
       89 
104 
     | 
    
         
             
                (l,ll)         --> LAGU
         
     | 
| 
       90 
105 
     | 
    
         
             
                (m,mm)         --> MAN
         
     | 
| 
       91 
106 
     | 
    
         
             
                (n,nn)         --> NYD
         
     | 
| 
       92 
107 
     | 
    
         
             
                (p,pp)         --> PEORTH
         
     | 
| 
       93 
108 
     | 
    
         
             
                (r,rr)         --> RAD
         
     | 
| 
       94 
     | 
    
         
            -
                (s,ss) 
     | 
| 
      
 109 
     | 
    
         
            +
                (s,ss,z)       --> SIGEL
         
     | 
| 
       95 
110 
     | 
    
         
             
                (t,tt)         --> TIR
         
     | 
| 
       96 
     | 
    
         
            -
                ( 
     | 
| 
      
 111 
     | 
    
         
            +
                (þ,þþ,ð,ðð)    --> THORN
         
     | 
| 
       97 
112 
     | 
    
         
             
                (w,ww)         --> WYNN
         
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
       99 
     | 
    
         
            -
                \** 
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
     | 
    
         
            -
                 
     | 
| 
       102 
     | 
    
         
            -
             
     | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
       104 
     | 
    
         
            -
             
     | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
      
 113 
     | 
    
         
            +
              
         
     | 
| 
      
 114 
     | 
    
         
            +
                \** OLD ENGLISH AND **\
         
     | 
| 
      
 115 
     | 
    
         
            +
                
         
     | 
| 
      
 116 
     | 
    
         
            +
                ⁊             --> OS NYD DAEG
         
     | 
| 
      
 117 
     | 
    
         
            +
                  
         
     | 
| 
      
 118 
     | 
    
         
            +
                \**  CLUSTERS WITH ING **\    
         
     | 
| 
      
 119 
     | 
    
         
            +
                
         
     | 
| 
      
 120 
     | 
    
         
            +
                \** ng            --> ING GAR **\
         
     | 
| 
      
 121 
     | 
    
         
            +
                \** nġ            --> ING GYFU **\
         
     | 
| 
      
 122 
     | 
    
         
            +
                ng            --> ING GYFU
         
     | 
| 
      
 123 
     | 
    
         
            +
                nġ            --> ING GYFU
         
     | 
| 
      
 124 
     | 
    
         
            +
                \if use_calc_and_gar
         
     | 
| 
      
 125 
     | 
    
         
            +
                  ng            --> ING GAR
         
     | 
| 
      
 126 
     | 
    
         
            +
                \endif
         
     | 
| 
      
 127 
     | 
    
         
            +
                  
         
     | 
| 
      
 128 
     | 
    
         
            +
                \** nc            --> ING CALC **\
         
     | 
| 
      
 129 
     | 
    
         
            +
                \** (nċ,nk,nq)    --> ING CEN  **\
         
     | 
| 
      
 130 
     | 
    
         
            +
                nc            --> ING CEN
         
     | 
| 
      
 131 
     | 
    
         
            +
                (nċ,nk,nq)    --> ING CEN
         
     | 
| 
      
 132 
     | 
    
         
            +
                \if use_calc_and_gar
         
     | 
| 
      
 133 
     | 
    
         
            +
                  ng            --> ING CALC
         
     | 
| 
      
 134 
     | 
    
         
            +
                \endif     
         
     | 
| 
      
 135 
     | 
    
         
            +
                  
         
     | 
| 
      
 136 
     | 
    
         
            +
                \**  CLUSTERS WITH S **\   
         
     | 
| 
      
 137 
     | 
    
         
            +
                x             --> EOLHX
         
     | 
| 
      
 138 
     | 
    
         
            +
                (z,ts)        --> TIR SIGEL
         
     | 
| 
      
 139 
     | 
    
         
            +
                
         
     | 
| 
      
 140 
     | 
    
         
            +
                \**  ADDITIONAL RUNES **\    
         
     | 
| 
      
 141 
     | 
    
         
            +
                \if use_cweorth 
         
     | 
| 
      
 142 
     | 
    
         
            +
                  (cw,qu,ccw,cqu)   --> CWEORTH
         
     | 
| 
      
 143 
     | 
    
         
            +
                \endif
         
     | 
| 
      
 144 
     | 
    
         
            +
                \if use_stan
         
     | 
| 
      
 145 
     | 
    
         
            +
                  st                --> STAN
         
     | 
| 
      
 146 
     | 
    
         
            +
                \endif
         
     | 
| 
      
 147 
     | 
    
         
            +
                  
         
     | 
| 
       110 
148 
     | 
    
         
             
              \end
         
     | 
| 
       111 
149 
     | 
    
         | 
| 
       112 
150 
     | 
    
         
             
              \beg    rules  punctuation
         
     | 
| 
         @@ -115,7 +153,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       115 
153 
     | 
    
         
             
                : --> RUNIC_MULTIPLE_PUNCTUATION
         
     | 
| 
       116 
154 
     | 
    
         
             
                . --> RUNIC_MULTIPLE_PUNCTUATION
         
     | 
| 
       117 
155 
     | 
    
         
             
                ! --> RUNIC_MULTIPLE_PUNCTUATION
         
     | 
| 
       118 
     | 
    
         
            -
                ? --> RUNIC_CROSS_PUNCTUATION 
     | 
| 
      
 156 
     | 
    
         
            +
                ? --> RUNIC_CROSS_PUNCTUATION 
         
     | 
| 
       119 
157 
     | 
    
         
             
              \end
         
     | 
| 
       120 
158 
     | 
    
         
             
            \end
         
     | 
| 
       121 
159 
     | 
    
         | 
| 
         @@ -26,7 +26,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       26 
26 
     | 
    
         
             
            \writing  "Gothic Alphabet"
         
     | 
| 
       27 
27 
     | 
    
         
             
            \mode     "Standard"
         
     | 
| 
       28 
28 
     | 
    
         
             
            \version  "0.0.1"
         
     | 
| 
       29 
     | 
    
         
            -
            \authors  "Talagan (Benjamin Babut)"
         
     | 
| 
      
 29 
     | 
    
         
            +
            \authors  "Historical, impl. Talagan (Benjamin Babut)"
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
            \charset  unicode_gothic true
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
         @@ -28,7 +28,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       28 
28 
     | 
    
         
             
            \writing  "Cirth"
         
     | 
| 
       29 
29 
     | 
    
         
             
            \mode     "Angerthas Moria"
         
     | 
| 
       30 
30 
     | 
    
         
             
            \version  "0.0.2"
         
     | 
| 
       31 
     | 
    
         
            -
            \authors  "Talagan (Benjamin Babut)"
         
     | 
| 
      
 31 
     | 
    
         
            +
            \authors  "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
       33 
33 
     | 
    
         
             
            \charset  cirth_ds true
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
         @@ -29,10 +29,18 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       29 
29 
     | 
    
         
             
            \language "Old English"
         
     | 
| 
       30 
30 
     | 
    
         
             
            \writing  "Tengwar"
         
     | 
| 
       31 
31 
     | 
    
         
             
            \mode     "Mercian"
         
     | 
| 
       32 
     | 
    
         
            -
            \version  "0.0 
     | 
| 
       33 
     | 
    
         
            -
            \authors  "Talagan (Benjamin Babut)"
         
     | 
| 
      
 32 
     | 
    
         
            +
            \version  "0.1.0"
         
     | 
| 
      
 33 
     | 
    
         
            +
            \authors  "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
35 
     | 
    
         
             
            \charset  tengwar_ds_eldamar true
         
     | 
| 
      
 36 
     | 
    
         
            +
            \** Other charsets cannot handle all diacritics we are using here ... **\
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            \beg options
         
     | 
| 
      
 39 
     | 
    
         
            +
              \beg option consonant_modification_style CONSONANT_MODIFICATION_STYLE_WAVE
         
     | 
| 
      
 40 
     | 
    
         
            +
                \value CONSONANT_MODIFICATION_STYLE_WAVE 0
         
     | 
| 
      
 41 
     | 
    
         
            +
                \value CONSONANT_MODIFICATION_STYLE_BAR 1
         
     | 
| 
      
 42 
     | 
    
         
            +
              \end
         
     | 
| 
      
 43 
     | 
    
         
            +
            \end
         
     | 
| 
       36 
44 
     | 
    
         | 
| 
       37 
45 
     | 
    
         
             
            \beg      preprocessor
         
     | 
| 
       38 
46 
     | 
    
         
             
              \** Work exclusively downcase **\
         
     | 
| 
         @@ -63,6 +71,13 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       63 
71 
     | 
    
         
             
            \beg      processor
         
     | 
| 
       64 
72 
     | 
    
         | 
| 
       65 
73 
     | 
    
         
             
              \beg    rules litteral
         
     | 
| 
      
 74 
     | 
    
         
            +
              
         
     | 
| 
      
 75 
     | 
    
         
            +
                \if "consonant_modification_style == CONSONANT_MODIFICATION_STYLE_WAVE"
         
     | 
| 
      
 76 
     | 
    
         
            +
                  {NASAL}    === NASALIZE_SIGN_TILD
         
     | 
| 
      
 77 
     | 
    
         
            +
                \else
         
     | 
| 
      
 78 
     | 
    
         
            +
                  {NASAL}    === NASALIZE_SIGN
         
     | 
| 
      
 79 
     | 
    
         
            +
                \endif
         
     | 
| 
      
 80 
     | 
    
         
            +
              
         
     | 
| 
       66 
81 
     | 
    
         
             
                {A}   === a
         
     | 
| 
       67 
82 
     | 
    
         
             
                {AA}  === á
         
     | 
| 
       68 
83 
     | 
    
         
             
                {E}   === e
         
     | 
| 
         @@ -86,7 +101,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       86 
101 
     | 
    
         
             
                \** @ is the phantom vowel added by the preprocessor **\
         
     | 
| 
       87 
102 
     | 
    
         | 
| 
       88 
103 
     | 
    
         
             
                {S_VOWELS_NP_KERNEL}   === {A} * {AE} * {OE} * {E} * {I}   * {O} * {U} * {Y}
         
     | 
| 
       89 
     | 
    
         
            -
                {S_VOWELS_WP_KERNEL} 
     | 
| 
      
 104 
     | 
    
         
            +
                {S_VOWELS_WP_KERNEL}   === {S_VOWELS_NP_KERNEL} * @                           
         
     | 
| 
       90 
105 
     | 
    
         | 
| 
       91 
106 
     | 
    
         
             
                \** UP TEHTAS **\    
         
     | 
| 
       92 
107 
     | 
    
         
             
                {TEHTAR_UP_NP}  === A_TEHTA    * Y_TEHTA     * E_TEHTA_DOUBLE   * E_TEHTA   *   I_TEHTA    * O_TEHTA    * U_TEHTA   * SEV_TEHTA 
         
     | 
| 
         @@ -167,12 +182,12 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       167 
182 
     | 
    
         
             
                \** Nasals (tild above) **\
         
     | 
| 
       168 
183 
     | 
    
         
             
                \** nC, nCV, nCVV **\
         
     | 
| 
       169 
184 
     | 
    
         
             
                \** We also have rules for long vowels **\
         
     | 
| 
       170 
     | 
    
         
            -
                [ nt * mp ]                                       -->  [ TINCO  
     | 
| 
       171 
     | 
    
         
            -
                [ nċ * nc ]                                       -->  [ CALMA  
     | 
| 
       172 
     | 
    
         
            -
                [ nt * mp ]{S_VOWELS}{S_VOWELS_WN}                -->  [ TINCO  
     | 
| 
       173 
     | 
    
         
            -
                [ nċ * nc ]{S_VOWELS}{S_VOWELS_WN}                -->  [ CALMA  
     | 
| 
       174 
     | 
    
         
            -
                [ nt * mp ][{LVOWELS}]                            -->  [ TINCO  
     | 
| 
       175 
     | 
    
         
            -
                [ nċ * nc ][{LVOWELS}]                            -->  [ CALMA  
     | 
| 
      
 185 
     | 
    
         
            +
                [ nt * mp ]                                       -->  [ TINCO {NASAL} * PARMA {NASAL} ]
         
     | 
| 
      
 186 
     | 
    
         
            +
                [ nċ * nc ]                                       -->  [ CALMA {NASAL} * QUESSE {NASAL} ]
         
     | 
| 
      
 187 
     | 
    
         
            +
                [ nt * mp ]{S_VOWELS}{S_VOWELS_WN}                -->  [ TINCO {NASAL} * PARMA {NASAL} ]{_S_VOWELS_UP_}{_S_VOWELS_DN_WN_}
         
     | 
| 
      
 188 
     | 
    
         
            +
                [ nċ * nc ]{S_VOWELS}{S_VOWELS_WN}                -->  [ CALMA {NASAL} * QUESSE {NASAL} ]{_S_VOWELS_UP_}{_S_VOWELS_DN_WN_}
         
     | 
| 
      
 189 
     | 
    
         
            +
                [ nt * mp ][{LVOWELS}]                            -->  [ TINCO {NASAL} * PARMA {NASAL} ][{TEHTAR_UP_NP}]{LVOWEL_MARKER}
         
     | 
| 
      
 190 
     | 
    
         
            +
                [ nċ * nc ][{LVOWELS}]                            -->  [ CALMA {NASAL} * QUESSE {NASAL} ][{TEHTAR_UP_NP}]{LVOWEL_MARKER}
         
     | 
| 
       176 
191 
     | 
    
         | 
| 
       177 
192 
     | 
    
         
             
                \** ========== **\
         
     | 
| 
       178 
193 
     | 
    
         
             
                \** 2nd Line (Voiced occlusives) **\
         
     | 
| 
         @@ -193,9 +208,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       193 
208 
     | 
    
         
             
                [{L2_KER_GEMS}]{S_VOWELS_WN}                      --> [{L2_IMG_GEMS}]{_S_VOWELS_UP_WN_}
         
     | 
| 
       194 
209 
     | 
    
         | 
| 
       195 
210 
     | 
    
         
             
                \** Nasals, with diphthongs! **\
         
     | 
| 
       196 
     | 
    
         
            -
                [ nd * mb * nġ * ng ]                             -->  [ ANDO  
     | 
| 
       197 
     | 
    
         
            -
                [ nd * mb * nġ * ng ]{S_VOWELS}{S_VOWELS_WN}      -->  [ ANDO  
     | 
| 
       198 
     | 
    
         
            -
                [ nd * mb * nġ * ng ][{LVOWELS}]                  -->  [ ANDO  
     | 
| 
      
 211 
     | 
    
         
            +
                [ nd * mb * nġ * ng ]                             -->  [ ANDO {NASAL} * UMBAR {NASAL} * ANGA {NASAL} * UNGWE {NASAL} ]
         
     | 
| 
      
 212 
     | 
    
         
            +
                [ nd * mb * nġ * ng ]{S_VOWELS}{S_VOWELS_WN}      -->  [ ANDO {NASAL} * UMBAR {NASAL} * ANGA {NASAL} * UNGWE {NASAL} ]{_S_VOWELS_UP_}{_S_VOWELS_DN_WN_}
         
     | 
| 
      
 213 
     | 
    
         
            +
                [ nd * mb * nġ * ng ][{LVOWELS}]                  -->  [ ANDO {NASAL} * UMBAR {NASAL} * ANGA {NASAL} * UNGWE {NASAL} ][{TEHTAR_UP_NP}]{LVOWEL_MARKER}
         
     | 
| 
       199 
214 
     | 
    
         | 
| 
       200 
215 
     | 
    
         
             
                \** ========== **\
         
     | 
| 
       201 
216 
     | 
    
         
             
                \** 3rd Line (Voiceless fricatives) **\
         
     | 
| 
         @@ -256,9 +271,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       256 
271 
     | 
    
         
             
                \** Gemination === nasalisation **\
         
     | 
| 
       257 
272 
     | 
    
         
             
                \** So prefer using tild to put tehtas up and down for diphthongs and long vowels **\
         
     | 
| 
       258 
273 
     | 
    
         | 
| 
       259 
     | 
    
         
            -
                [ nn * mm ]                               --> [ NUMEN  
     | 
| 
       260 
     | 
    
         
            -
                [ nn * mm ]{S_VOWELS}{S_VOWELS_WN}        --> [ NUMEN  
     | 
| 
       261 
     | 
    
         
            -
                [ nn * mm ][{LVOWELS}]                    --> [ NUMEN  
     | 
| 
      
 274 
     | 
    
         
            +
                [ nn * mm ]                               --> [ NUMEN {NASAL} * MALTA {NASAL} ]
         
     | 
| 
      
 275 
     | 
    
         
            +
                [ nn * mm ]{S_VOWELS}{S_VOWELS_WN}        --> [ NUMEN {NASAL} * MALTA {NASAL} ]{_S_VOWELS_UP_}{_S_VOWELS_DN_WN_}
         
     | 
| 
      
 276 
     | 
    
         
            +
                [ nn * mm ][{LVOWELS}]                    --> [ NUMEN {NASAL} * MALTA {NASAL} ][{TEHTAR_UP_NP}]{LVOWEL_MARKER}
         
     | 
| 
       262 
277 
     | 
    
         | 
| 
       263 
278 
     | 
    
         
             
                \** ========== **\
         
     | 
| 
       264 
279 
     | 
    
         
             
                \** 6th Line (Approximants == fr : Spirantes) **\
         
     | 
| 
         @@ -345,7 +360,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       345 
360 
     | 
    
         | 
| 
       346 
361 
     | 
    
         
             
                x{S_VOWELS_WN}                               --> QUESSE ALVEOLAR_SIGN {_S_VOWELS_UP_WN_}
         
     | 
| 
       347 
362 
     | 
    
         
             
                xx{S_VOWELS_WN}                              --> QUESSE ALVEOLAR_SIGN GEMINATE_DOUBLE {_S_VOWELS_UP_WN_}
         
     | 
| 
       348 
     | 
    
         
            -
                nx{S_VOWELS_WN}                              --> QUESSE ALVEOLAR_SIGN  
     | 
| 
      
 363 
     | 
    
         
            +
                nx{S_VOWELS_WN}                              --> QUESSE ALVEOLAR_SIGN {NASAL} {_S_VOWELS_UP_WN_}     
         
     | 
| 
       349 
364 
     | 
    
         
             
              \end
         
     | 
| 
       350 
365 
     | 
    
         | 
| 
       351 
366 
     | 
    
         
             
              \beg    rules punctuation 
         
     | 
| 
         @@ -33,7 +33,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       33 
33 
     | 
    
         
             
            \writing  "Sarati"
         
     | 
| 
       34 
34 
     | 
    
         
             
            \mode     "Quenya Usage"
         
     | 
| 
       35 
35 
     | 
    
         
             
            \version  "0.0.1"
         
     | 
| 
       36 
     | 
    
         
            -
            \authors  "Talagan (Benjamin Babut)"
         
     | 
| 
      
 36 
     | 
    
         
            +
            \authors  "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
       38 
38 
     | 
    
         
             
            \charset  sarati_eldamar true
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
         @@ -65,9 +65,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       65 
65 
     | 
    
         
             
              \substitute   "oi" "oy"
         
     | 
| 
       66 
66 
     | 
    
         
             
              \substitute   "ui" "uy"
         
     | 
| 
       67 
67 
     | 
    
         | 
| 
       68 
     | 
    
         
            -
               
     | 
| 
      
 68 
     | 
    
         
            +
              \** Split long a  **\
         
     | 
| 
      
 69 
     | 
    
         
            +
              \substitute   "á" "aa" 
         
     | 
| 
       69 
70 
     | 
    
         | 
| 
       70 
     | 
    
         
            -
               
     | 
| 
      
 71 
     | 
    
         
            +
              \** Dis-ambiguate qu **\
         
     | 
| 
      
 72 
     | 
    
         
            +
              \substitute   "qu" "q" 
         
     | 
| 
       71 
73 
     | 
    
         
             
            \end
         
     | 
| 
       72 
74 
     | 
    
         | 
| 
       73 
75 
     | 
    
         
             
            \beg      processor
         
     | 
| 
         @@ -23,21 +23,24 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       23 
23 
     | 
    
         
             
            **\
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
            \beg changelog
         
     | 
| 
       26 
     | 
    
         
            -
              \entry "0.0.2" 
     | 
| 
       27 
     | 
    
         
            -
              \entry "0.0.3" 
     | 
| 
       28 
     | 
    
         
            -
              \entry "0.0.4" 
     | 
| 
       29 
     | 
    
         
            -
              \entry "0.0.5" 
     | 
| 
       30 
     | 
    
         
            -
              \entry "0.0.6" 
     | 
| 
       31 
     | 
    
         
            -
              \entry "0.0.7" 
     | 
| 
       32 
     | 
    
         
            -
              \entry "0.0.8" 
     | 
| 
       33 
     | 
    
         
            -
              \entry "0.0.9" 
     | 
| 
       34 
     | 
    
         
            -
              \entry "0.1.0" 
     | 
| 
       35 
     | 
    
         
            -
              \entry "0.1.1" 
     | 
| 
       36 
     | 
    
         
            -
              \entry "0.1.2" 
     | 
| 
       37 
     | 
    
         
            -
              \entry "0.1.3" 
     | 
| 
       38 
     | 
    
         
            -
              \entry "0.1.4" 
     | 
| 
       39 
     | 
    
         
            -
              \entry "0.1.5" 
     | 
| 
       40 
     | 
    
         
            -
              \entry "0.1.6" 
     | 
| 
      
 26 
     | 
    
         
            +
              \entry "0.0.2" "added χ for the word χarina, correcting ts/ps sequences to work better with eldamar"
         
     | 
| 
      
 27 
     | 
    
         
            +
              \entry "0.0.3" "added o/u curl option"
         
     | 
| 
      
 28 
     | 
    
         
            +
              \entry "0.0.4" "added voiced plosives corner cases treatment and option to chose method"
         
     | 
| 
      
 29 
     | 
    
         
            +
              \entry "0.0.5" "fixing h+long vowel medially"
         
     | 
| 
      
 30 
     | 
    
         
            +
              \entry "0.0.6" "adding option for alveolarized consonants  st (t+t), pt (p+t), ht (c+t)"
         
     | 
| 
      
 31 
     | 
    
         
            +
              \entry "0.0.7" "Fixing rb/lb, to be treated as r+mb and l+mb"
         
     | 
| 
      
 32 
     | 
    
         
            +
              \entry "0.0.8" "Correcting double dot version for ry (aesthetics)"
         
     | 
| 
      
 33 
     | 
    
         
            +
              \entry "0.0.9" "Adding 'implicit a' option."
         
     | 
| 
      
 34 
     | 
    
         
            +
              \entry "0.1.0" "Simplified diacritic use by using new post-processor directive"
         
     | 
| 
      
 35 
     | 
    
         
            +
              \entry "0.1.1" "Added default option for voiced plosives : use mb, nd, ng, ngw"
         
     | 
| 
      
 36 
     | 
    
         
            +
              \entry "0.1.2" "Added a tehta shape selection"
         
     | 
| 
      
 37 
     | 
    
         
            +
              \entry "0.1.3" "Fixing ks, ps, ts. Fixing dot under ore, romen in implicit a mode."
         
     | 
| 
      
 38 
     | 
    
         
            +
              \entry "0.1.4" "Conforming to the new csub format. Cleaning with new csub classes."
         
     | 
| 
      
 39 
     | 
    
         
            +
              \entry "0.1.5" "csub removed. Now using virtual chars defined in charsets."
         
     | 
| 
      
 40 
     | 
    
         
            +
              \entry "0.1.6" "Removing unutixe under óre for coherency in implicit a submode."
         
     | 
| 
      
 41 
     | 
    
         
            +
              \entry "0.9.0" "Adding double tehtar support"
         
     | 
| 
      
 42 
     | 
    
         
            +
              \entry "0.9.1" "Added support for the FreeMonoTengwar font"
         
     | 
| 
      
 43 
     | 
    
         
            +
              \entry "0.9.2" "Added support for the Tengwar Elfica font"
         
     | 
| 
       41 
44 
     | 
    
         
             
            \end
         
     | 
| 
       42 
45 
     | 
    
         | 
| 
       43 
46 
     | 
    
         
             
            \**
         
     | 
| 
         @@ -48,14 +51,20 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       48 
51 
     | 
    
         
             
            \language "Quenya"
         
     | 
| 
       49 
52 
     | 
    
         
             
            \writing  "Tengwar"
         
     | 
| 
       50 
53 
     | 
    
         
             
            \mode     "Classical"
         
     | 
| 
       51 
     | 
    
         
            -
            \version  "0. 
     | 
| 
       52 
     | 
    
         
            -
            \authors  "Talagan (Benjamin Babut)"
         
     | 
| 
      
 54 
     | 
    
         
            +
            \version  "0.9.2"
         
     | 
| 
      
 55 
     | 
    
         
            +
            \authors  "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            \charset  tengwar_ds_sindarin true
         
     | 
| 
      
 58 
     | 
    
         
            +
            \charset  tengwar_ds_parmaite false
         
     | 
| 
      
 59 
     | 
    
         
            +
            \charset  tengwar_ds_eldamar  false
         
     | 
| 
      
 60 
     | 
    
         
            +
            \charset  tengwar_ds_annatar  false
         
     | 
| 
      
 61 
     | 
    
         
            +
            \charset  tengwar_ds_elfica   false
         
     | 
| 
      
 62 
     | 
    
         
            +
            \charset  tengwar_freemono    false
         
     | 
| 
       53 
63 
     | 
    
         | 
| 
       54 
     | 
    
         
            -
            \charset  tengwar_ds         true
         
     | 
| 
       55 
     | 
    
         
            -
            \charset  tengwar_ds_eldamar false
         
     | 
| 
       56 
64 
     | 
    
         | 
| 
       57 
65 
     | 
    
         
             
            \beg      options
         
     | 
| 
       58 
66 
     | 
    
         
             
              \option implicit_a false
         
     | 
| 
      
 67 
     | 
    
         
            +
              
         
     | 
| 
       59 
68 
     | 
    
         
             
              \beg option a_tetha_shape A_SHAPE_THREE_DOTS
         
     | 
| 
       60 
69 
     | 
    
         
             
                \value A_SHAPE_THREE_DOTS 1
         
     | 
| 
       61 
70 
     | 
    
         
             
                \value A_SHAPE_CIRCUMFLEX 2
         
     | 
| 
         @@ -64,6 +73,29 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       64 
73 
     | 
    
         
             
                \value O_UP_U_DOWN 1
         
     | 
| 
       65 
74 
     | 
    
         
             
                \value U_UP_O_DOWN 2
         
     | 
| 
       66 
75 
     | 
    
         
             
              \end
         
     | 
| 
      
 76 
     | 
    
         
            +
              \beg option long_vowels_format LONG_VOWELS_USE_LONG_CARRIER
         
     | 
| 
      
 77 
     | 
    
         
            +
                \value LONG_VOWELS_USE_LONG_CARRIER 1
         
     | 
| 
      
 78 
     | 
    
         
            +
                \value LONG_VOWELS_USE_DOUBLE_TEHTAR 2
         
     | 
| 
      
 79 
     | 
    
         
            +
              \end  
         
     | 
| 
      
 80 
     | 
    
         
            +
              
         
     | 
| 
      
 81 
     | 
    
         
            +
              \** REMOVED BECAUSE UNATTESTED
         
     | 
| 
      
 82 
     | 
    
         
            +
              \beg option double_tehta_a false
         
     | 
| 
      
 83 
     | 
    
         
            +
                \visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
         
     | 
| 
      
 84 
     | 
    
         
            +
              \end
         
     | 
| 
      
 85 
     | 
    
         
            +
              **\
         
     | 
| 
      
 86 
     | 
    
         
            +
              \beg option double_tehta_e false
         
     | 
| 
      
 87 
     | 
    
         
            +
                \visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
         
     | 
| 
      
 88 
     | 
    
         
            +
              \end
         
     | 
| 
      
 89 
     | 
    
         
            +
              \beg option double_tehta_i false
         
     | 
| 
      
 90 
     | 
    
         
            +
                \visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
         
     | 
| 
      
 91 
     | 
    
         
            +
              \end
         
     | 
| 
      
 92 
     | 
    
         
            +
              \beg option double_tehta_o true
         
     | 
| 
      
 93 
     | 
    
         
            +
                \visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
         
     | 
| 
      
 94 
     | 
    
         
            +
              \end
         
     | 
| 
      
 95 
     | 
    
         
            +
              \beg option double_tehta_u true
         
     | 
| 
      
 96 
     | 
    
         
            +
                \visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
         
     | 
| 
      
 97 
     | 
    
         
            +
              \end
         
     | 
| 
      
 98 
     | 
    
         
            +
              
         
     | 
| 
       67 
99 
     | 
    
         
             
              \option split_diphthongs false
         
     | 
| 
       68 
100 
     | 
    
         
             
              \option always_use_romen_for_r false
         
     | 
| 
       69 
101 
     | 
    
         
             
              \beg option voiced_plosives_treatment VOICED_PLOSIVES_AS_NASALIZED
         
     | 
| 
         @@ -75,6 +107,12 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       75 
107 
     | 
    
         
             
                \value ST_PT_HT_SEPARATED 1
         
     | 
| 
       76 
108 
     | 
    
         
             
                \value ST_PT_HT_WITH_XTD 2
         
     | 
| 
       77 
109 
     | 
    
         
             
              \end
         
     | 
| 
      
 110 
     | 
    
         
            +
              
         
     | 
| 
      
 111 
     | 
    
         
            +
              \beg option consonant_modification_style CONSONANT_MODIFICATION_STYLE_BAR
         
     | 
| 
      
 112 
     | 
    
         
            +
                \value CONSONANT_MODIFICATION_STYLE_WAVE 0
         
     | 
| 
      
 113 
     | 
    
         
            +
                \value CONSONANT_MODIFICATION_STYLE_BAR 1
         
     | 
| 
      
 114 
     | 
    
         
            +
              \end
         
     | 
| 
      
 115 
     | 
    
         
            +
              
         
     | 
| 
       78 
116 
     | 
    
         
             
              \option reverse_numbers true
         
     | 
| 
       79 
117 
     | 
    
         
             
              \beg option numbers_base BASE_12
         
     | 
| 
       80 
118 
     | 
    
         
             
                \value    BASE_10 10
         
     | 
| 
         @@ -102,7 +140,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       102 
140 
     | 
    
         
             
              \rxsubstitute "(ū|û|uu)" "ú"
         
     | 
| 
       103 
141 
     | 
    
         
             
              \rxsubstitute "(ȳ|ŷ|yy)" "ý"
         
     | 
| 
       104 
142 
     | 
    
         | 
| 
       105 
     | 
    
         
            -
               
     | 
| 
      
 143 
     | 
    
         
            +
              \** Dis-ambiguate qu **\
         
     | 
| 
      
 144 
     | 
    
         
            +
              \substitute   "qu" "q" 
         
     | 
| 
       106 
145 
     | 
    
         | 
| 
       107 
146 
     | 
    
         
             
              \elvish_numbers "\\eval numbers_base" "\\eval reverse_numbers"
         
     | 
| 
       108 
147 
     | 
    
         
             
            \end
         
     | 
| 
         @@ -111,25 +150,35 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       111 
150 
     | 
    
         
             
            \beg processor
         
     | 
| 
       112 
151 
     | 
    
         | 
| 
       113 
152 
     | 
    
         
             
              \beg    rules litteral
         
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
      
 153 
     | 
    
         
            +
                
         
     | 
| 
       115 
154 
     | 
    
         
             
                {K}                 ===  (c,k)
         
     | 
| 
       116 
155 
     | 
    
         
             
                {SS}                ===  (z,ss)
         
     | 
| 
      
 156 
     | 
    
         
            +
                
         
     | 
| 
      
 157 
     | 
    
         
            +
                \if "consonant_modification_style == CONSONANT_MODIFICATION_STYLE_WAVE"
         
     | 
| 
      
 158 
     | 
    
         
            +
                  {GEMINATE} === GEMINATE_SIGN_TILD
         
     | 
| 
      
 159 
     | 
    
         
            +
                \else
         
     | 
| 
      
 160 
     | 
    
         
            +
                  {GEMINATE} === GEMINATE_SIGN
         
     | 
| 
      
 161 
     | 
    
         
            +
                \endif
         
     | 
| 
       117 
162 
     | 
    
         | 
| 
       118 
163 
     | 
    
         
             
                {VOWELS}            === a               *  e              * i              * o              *  u
         
     | 
| 
       119 
164 
     | 
    
         
             
                {LVOWELS}           === á               *  é              * í              * ó              *  ú
         
     | 
| 
       120 
165 
     | 
    
         | 
| 
       121 
166 
     | 
    
         
             
                \if "reverse_o_u_tehtar == U_UP_O_DOWN"
         
     | 
| 
       122 
     | 
    
         
            -
                  {O_LOOP} 
     | 
| 
       123 
     | 
    
         
            -
                  { 
     | 
| 
      
 167 
     | 
    
         
            +
                  {O_LOOP}        === O_TEHTA
         
     | 
| 
      
 168 
     | 
    
         
            +
                  {O_LOOP_DOUBLE} === O_TEHTA_DOUBLE
         
     | 
| 
      
 169 
     | 
    
         
            +
                  {U_LOOP}        === U_TEHTA
         
     | 
| 
      
 170 
     | 
    
         
            +
                  {U_LOOP_DOUBLE} === U_TEHTA_DOUBLE
         
     | 
| 
       124 
171 
     | 
    
         
             
                \else
         
     | 
| 
       125 
     | 
    
         
            -
                  {O_LOOP} 
     | 
| 
       126 
     | 
    
         
            -
                  { 
     | 
| 
      
 172 
     | 
    
         
            +
                  {O_LOOP}        === U_TEHTA
         
     | 
| 
      
 173 
     | 
    
         
            +
                  {O_LOOP_DOUBLE} === U_TEHTA_DOUBLE
         
     | 
| 
      
 174 
     | 
    
         
            +
                  {U_LOOP}        === O_TEHTA
         
     | 
| 
      
 175 
     | 
    
         
            +
                  {U_LOOP_DOUBLE} === O_TEHTA_DOUBLE
         
     | 
| 
       127 
176 
     | 
    
         
             
                \endif
         
     | 
| 
       128 
177 
     | 
    
         | 
| 
       129 
178 
     | 
    
         
             
                \if "a_tetha_shape == A_SHAPE_THREE_DOTS"
         
     | 
| 
       130 
     | 
    
         
            -
                  {A_SHAPE} 
     | 
| 
      
 179 
     | 
    
         
            +
                  {A_SHAPE}         === A_TEHTA
         
     | 
| 
       131 
180 
     | 
    
         
             
                \else
         
     | 
| 
       132 
     | 
    
         
            -
                  {A_SHAPE} 
     | 
| 
      
 181 
     | 
    
         
            +
                  {A_SHAPE}         === A_TEHTA_CIRCUM
         
     | 
| 
       133 
182 
     | 
    
         
             
                \endif
         
     | 
| 
       134 
183 
     | 
    
         | 
| 
       135 
184 
     | 
    
         
             
                \if implicit_a
         
     | 
| 
         @@ -151,35 +200,80 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       151 
200 
     | 
    
         
             
                  {WDIPHTHONGS}     === * {DIPHTHONGS}   \** groovy! **\
         
     | 
| 
       152 
201 
     | 
    
         
             
                  {_WDIPHTHONGS_}   === * {_DIPHTHONGS_} \** same thing **\
         
     | 
| 
       153 
202 
     | 
    
         
             
                \endif
         
     | 
| 
       154 
     | 
    
         
            -
             
     | 
| 
       155 
     | 
    
         
            -
             
     | 
| 
       156 
     | 
    
         
            -
                   
     | 
| 
       157 
     | 
    
         
            -
                  
         
     | 
| 
       158 
     | 
    
         
            -
                   
     | 
| 
       159 
     | 
    
         
            -
             
     | 
| 
       160 
     | 
    
         
            -
             
     | 
| 
       161 
     | 
    
         
            -
             
     | 
| 
       162 
     | 
    
         
            -
             
     | 
| 
       163 
     | 
    
         
            -
             
     | 
| 
       164 
     | 
    
         
            -
             
     | 
| 
       165 
     | 
    
         
            -
             
     | 
| 
       166 
     | 
    
         
            -
             
     | 
| 
       167 
     | 
    
         
            -
             
     | 
| 
      
 203 
     | 
    
         
            +
                
         
     | 
| 
      
 204 
     | 
    
         
            +
            		{_LONG_A_}      === ARA {A_SHAPE}
         
     | 
| 
      
 205 
     | 
    
         
            +
            		{_LONG_E_}      === ARA E_TEHTA	
         
     | 
| 
      
 206 
     | 
    
         
            +
            		{_LONG_I_}      === ARA I_TEHTA
         
     | 
| 
      
 207 
     | 
    
         
            +
            		{_LONG_O_}      === ARA {O_LOOP}	
         
     | 
| 
      
 208 
     | 
    
         
            +
            		{_LONG_U_}      === ARA {U_LOOP}
         
     | 
| 
      
 209 
     | 
    
         
            +
            		{_LONE_LONG_A_} === {_LONG_A_}
         
     | 
| 
      
 210 
     | 
    
         
            +
            		{_LONE_LONG_E_} === {_LONG_E_}
         
     | 
| 
      
 211 
     | 
    
         
            +
            		{_LONE_LONG_I_} === {_LONG_I_}
         
     | 
| 
      
 212 
     | 
    
         
            +
            		{_LONE_LONG_O_} === {_LONG_O_}
         
     | 
| 
      
 213 
     | 
    
         
            +
            		{_LONE_LONG_U_} === {_LONG_U_}
         
     | 
| 
      
 214 
     | 
    
         
            +
                
         
     | 
| 
      
 215 
     | 
    
         
            +
                {LTEHTAR}       === {NULL}
         
     | 
| 
      
 216 
     | 
    
         
            +
                {_LTEHTAR_}     === {NULL} 				
         
     | 
| 
      
 217 
     | 
    
         
            +
                	
         
     | 
| 
      
 218 
     | 
    
         
            +
            		\if implicit_a
         
     | 
| 
      
 219 
     | 
    
         
            +
                 	{_LONG_A_}         === {A_SHAPE}        \** Eat the long a **\
         
     | 
| 
      
 220 
     | 
    
         
            +
              		{_LONE_LONG_A_}    === TELCO {A_SHAPE}  \** Eat the long a **\
         
     | 
| 
      
 221 
     | 
    
         
            +
                  {LTEHTAR}          === {LTEHTAR}   * á
         
     | 
| 
      
 222 
     | 
    
         
            +
                  {_LTEHTAR_}        === {_LTEHTAR_} * {_LONG_A_}
         
     | 
| 
       168 
223 
     | 
    
         
             
                \endif
         
     | 
| 
      
 224 
     | 
    
         
            +
             		
         
     | 
| 
      
 225 
     | 
    
         
            +
            		\if "long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR"
         
     | 
| 
      
 226 
     | 
    
         
            +
                \** REMOVED BECAUSE UNATTESTED
         
     | 
| 
      
 227 
     | 
    
         
            +
            	    \if "double_tehta_a && !implicit_a"
         
     | 
| 
      
 228 
     | 
    
         
            +
            		    {_LONG_A_}       === A_TEHTA_DOUBLE
         
     | 
| 
      
 229 
     | 
    
         
            +
            			  {_LONE_LONG_A_}  === TELCO {_LONG_A_}
         
     | 
| 
      
 230 
     | 
    
         
            +
                    {LTEHTAR}        === {LTEHTAR}   * á
         
     | 
| 
      
 231 
     | 
    
         
            +
                    {_LTEHTAR_}      === {_LTEHTAR_} * {_LONG_A_}
         
     | 
| 
      
 232 
     | 
    
         
            +
              	  \endif		
         
     | 
| 
      
 233 
     | 
    
         
            +
                **\
         
     | 
| 
      
 234 
     | 
    
         
            +
            	    \if double_tehta_e
         
     | 
| 
      
 235 
     | 
    
         
            +
            		    {_LONG_E_}       === E_TEHTA_DOUBLE
         
     | 
| 
      
 236 
     | 
    
         
            +
            		    {_LONE_LONG_E_}  === TELCO {_LONG_E_}
         
     | 
| 
      
 237 
     | 
    
         
            +
                    {LTEHTAR}        === {LTEHTAR}   * é
         
     | 
| 
      
 238 
     | 
    
         
            +
                    {_LTEHTAR_}      === {_LTEHTAR_} * {_LONG_E_}
         
     | 
| 
      
 239 
     | 
    
         
            +
            			\endif
         
     | 
| 
      
 240 
     | 
    
         
            +
            		  \if double_tehta_i
         
     | 
| 
      
 241 
     | 
    
         
            +
            		    {_LONG_I_}       === I_TEHTA_DOUBLE
         
     | 
| 
      
 242 
     | 
    
         
            +
            		    {_LONE_LONG_I_}  === TELCO {_LONG_I_}
         
     | 
| 
      
 243 
     | 
    
         
            +
                    {LTEHTAR}        === {LTEHTAR}   * í
         
     | 
| 
      
 244 
     | 
    
         
            +
                    {_LTEHTAR_}      === {_LTEHTAR_} * {_LONG_I_}
         
     | 
| 
      
 245 
     | 
    
         
            +
            		  \endif
         
     | 
| 
      
 246 
     | 
    
         
            +
            		  \if double_tehta_o
         
     | 
| 
      
 247 
     | 
    
         
            +
            		    {_LONG_O_}       === {O_LOOP_DOUBLE}
         
     | 
| 
      
 248 
     | 
    
         
            +
            		    {_LONE_LONG_O_}  === TELCO {_LONG_O_}
         
     | 
| 
      
 249 
     | 
    
         
            +
                    {LTEHTAR}        === {LTEHTAR}   * ó
         
     | 
| 
      
 250 
     | 
    
         
            +
                    {_LTEHTAR_}      === {_LTEHTAR_} * {_LONG_O_}
         
     | 
| 
      
 251 
     | 
    
         
            +
            		  \endif
         
     | 
| 
      
 252 
     | 
    
         
            +
            		  \if double_tehta_u
         
     | 
| 
      
 253 
     | 
    
         
            +
            		    {_LONG_U_}       === {U_LOOP_DOUBLE}
         
     | 
| 
      
 254 
     | 
    
         
            +
            		    {_LONE_LONG_U_}  === TELCO {_LONG_U_}
         
     | 
| 
      
 255 
     | 
    
         
            +
                    {LTEHTAR}        === {LTEHTAR}   * ú
         
     | 
| 
      
 256 
     | 
    
         
            +
                    {_LTEHTAR_}      === {_LTEHTAR_} * {_LONG_U_}
         
     | 
| 
      
 257 
     | 
    
         
            +
            		  \endif
         
     | 
| 
      
 258 
     | 
    
         
            +
                \endif  
         
     | 
| 
      
 259 
     | 
    
         
            +
                   		
         
     | 
| 
      
 260 
     | 
    
         
            +
                \** images of long vowels, either tehtar or ara versions **\
         
     | 
| 
      
 261 
     | 
    
         
            +
                {_LVOWELS_}     === {_LONG_A_} * {_LONG_E_} * {_LONG_I_} * {_LONG_O_} * {_LONG_U_}      
         
     | 
| 
      
 262 
     | 
    
         
            +
             
     | 
| 
      
 263 
     | 
    
         
            +
            		{WLONG}         === * {LVOWELS} 
         
     | 
| 
      
 264 
     | 
    
         
            +
            		{_WLONG_}       === * {_LVOWELS_}
         
     | 
| 
       169 
265 
     | 
    
         | 
| 
       170 
266 
     | 
    
         
             
                {V_D}           === [ {VOWELS} {WLONG} {WDIPHTHONGS} ]
         
     | 
| 
       171 
267 
     | 
    
         
             
                {V_D_WN}        === [ {VOWELS} {WLONG} {WDIPHTHONGS} * {NULL} ]
         
     | 
| 
       172 
268 
     | 
    
         | 
| 
       173 
269 
     | 
    
         
             
                {_V_D_}         === [ {_TEHTAR_} {_WLONG_} {_WDIPHTHONGS_} ]
         
     | 
| 
       174 
270 
     | 
    
         
             
                {_V_D_WN_}      === [ {_TEHTAR_} {_WLONG_} {_WDIPHTHONGS_} * {_NVOWEL_} ]
         
     | 
| 
       175 
     | 
    
         
            -
             
     | 
| 
       176 
     | 
    
         
            -
             
     | 
| 
      
 271 
     | 
    
         
            +
            		
         
     | 
| 
      
 272 
     | 
    
         
            +
            		\** LONE SHORT VOWELS **\
         
     | 
| 
       177 
273 
     | 
    
         
             
                [{VOWELS}]    --> TELCO [{_TEHTAR_}]  \** Replace isolated short vowels **\
         
     | 
| 
       178 
     | 
    
         
            -
                 
     | 
| 
       179 
     | 
    
         
            -
             
     | 
| 
       180 
     | 
    
         
            -
             
     | 
| 
       181 
     | 
    
         
            -
                  [{LVOWELS}] --> [{_LTEHTAR_}]       \** Replace long vowels **\
         
     | 
| 
       182 
     | 
    
         
            -
                \endif
         
     | 
| 
      
 274 
     | 
    
         
            +
                
         
     | 
| 
      
 275 
     | 
    
         
            +
            		\** LONE LONG VOWELS **\	
         
     | 
| 
      
 276 
     | 
    
         
            +
            		[{LVOWELS}]   --> [{_LONE_LONG_A_} * {_LONE_LONG_E_} * {_LONE_LONG_I_} * {_LONE_LONG_O_} * {_LONE_LONG_U_}]
         
     | 
| 
       183 
277 
     | 
    
         | 
| 
       184 
278 
     | 
    
         
             
                \if !split_diphthongs
         
     | 
| 
       185 
279 
     | 
    
         
             
                  [{DIPHTHONGS}]    -->   [{_DIPHTHONGS_}]     \**  Replace diphthongs **\
         
     | 
| 
         @@ -192,8 +286,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       192 
286 
     | 
    
         
             
                {_L1_}        === TINCO * PARMA   * CALMA * QUESSE
         
     | 
| 
       193 
287 
     | 
    
         | 
| 
       194 
288 
     | 
    
         
             
                \** GEMINATED **\
         
     | 
| 
       195 
     | 
    
         
            -
                {L1_1_GEMS}   === tt 
     | 
| 
       196 
     | 
    
         
            -
                {_L1_1_GEMS_} === TINCO  
     | 
| 
      
 289 
     | 
    
         
            +
                {L1_1_GEMS}   === tt               * pp                 * {K}{K}
         
     | 
| 
      
 290 
     | 
    
         
            +
                {_L1_1_GEMS_} === TINCO {GEMINATE} * PARMA {GEMINATE}   * CALMA {GEMINATE}
         
     | 
| 
       197 
291 
     | 
    
         | 
| 
       198 
292 
     | 
    
         
             
                \** NORMAL **\
         
     | 
| 
       199 
293 
     | 
    
         
             
                [ {L1} * {L1_1_GEMS} ] {V_D_WN} --> [ {_L1_} * {_L1_1_GEMS_} ] {_V_D_WN_}
         
     | 
| 
         @@ -202,8 +296,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       202 
296 
     | 
    
         
             
                ty{V_D_WN}          --> TINCO PALATAL_SIGN {_V_D_WN_}
         
     | 
| 
       203 
297 
     | 
    
         
             
                py{V_D_WN}          --> PARMA PALATAL_SIGN {_V_D_WN_}
         
     | 
| 
       204 
298 
     | 
    
         | 
| 
       205 
     | 
    
         
            -
                 
     | 
| 
       206 
     | 
    
         
            -
             
     | 
| 
      
 299 
     | 
    
         
            +
                \** For alveolarized consonants, we must put the alveolar_sign just after the tengwa
         
     | 
| 
      
 300 
     | 
    
         
            +
                    because else, FreeMonoTengwar will not handle well the ligature. Anyway, this is
         
     | 
| 
      
 301 
     | 
    
         
            +
                    more logical, but the tehta placement will not be perfect for older fonts **\
         
     | 
| 
      
 302 
     | 
    
         
            +
                ts{V_D_WN}          --> TINCO ALVEOLAR_SIGN {_V_D_WN_} 
         
     | 
| 
      
 303 
     | 
    
         
            +
                ps{V_D_WN}          --> PARMA ALVEOLAR_SIGN {_V_D_WN_} 
         
     | 
| 
       207 
304 
     | 
    
         
             
                {K}s{V_D_WN}        --> CALMA ALVEOLAR_SIGN {_V_D_WN_}   
         
     | 
| 
       208 
305 
     | 
    
         
             
                x{V_D_WN}           --> CALMA ALVEOLAR_SIGN {_V_D_WN_}   \** render ks for x **\
         
     | 
| 
       209 
306 
     | 
    
         | 
| 
         @@ -225,7 +322,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       225 
322 
     | 
    
         
             
                \if "voiced_plosives_treatment == VOICED_PLOSIVES_AS_NASALIZED"
         
     | 
| 
       226 
323 
     | 
    
         
             
                  [{L2_UN}]{V_D_WN}   --> [{_L2_}] {_V_D_WN_}
         
     | 
| 
       227 
324 
     | 
    
         
             
                \elsif "voiced_plosives_treatment == VOICED_PLOSIVES_WITH_STROKE"
         
     | 
| 
       228 
     | 
    
         
            -
                  [{L2_UN}]{V_D_WN}   --> [{_L2_}]  
     | 
| 
      
 325 
     | 
    
         
            +
                  [{L2_UN}]{V_D_WN}   --> [{_L2_}] THINF_STROKE {_V_D_WN_}
         
     | 
| 
       229 
326 
     | 
    
         
             
                \else
         
     | 
| 
       230 
327 
     | 
    
         
             
                  {_L2_UN_}            === TW_EXT_21 * TW_EXT_22 * TW_EXT_23 * TW_EXT_24
         
     | 
| 
       231 
328 
     | 
    
         
             
                  [{L2_UN}]{V_D_WN}    --> [{_L2_UN_}] {_V_D_WN_}
         
     | 
| 
         @@ -252,7 +349,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       252 
349 
     | 
    
         | 
| 
       253 
350 
     | 
    
         
             
                \** Override h with vowels (descendent of hy) **\
         
     | 
| 
       254 
351 
     | 
    
         
             
                _h{V_D}         --> HYARMEN {_V_D_}
         
     | 
| 
       255 
     | 
    
         
            -
                 
     | 
| 
      
 352 
     | 
    
         
            +
                \** Starting voiced h before long vowels **\
         
     | 
| 
      
 353 
     | 
    
         
            +
                _h[{LVOWELS}]   --> HYARMEN [{_LVOWELS_}]
         
     | 
| 
       256 
354 
     | 
    
         | 
| 
       257 
355 
     | 
    
         
             
                (h,χ)           --> AHA
         
     | 
| 
       258 
356 
     | 
    
         | 
| 
         @@ -276,9 +374,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       276 
374 
     | 
    
         
             
                [{L5}]{V_D_WN}  --> [{_L5_}]{_V_D_WN_}
         
     | 
| 
       277 
375 
     | 
    
         | 
| 
       278 
376 
     | 
    
         
             
                ny{V_D_WN}          --> NUMEN PALATAL_SIGN {_V_D_WN_}
         
     | 
| 
       279 
     | 
    
         
            -
                nn{V_D_WN}          --> NUMEN  
     | 
| 
      
 377 
     | 
    
         
            +
                nn{V_D_WN}          --> NUMEN {GEMINATE}   {_V_D_WN_}
         
     | 
| 
       280 
378 
     | 
    
         
             
                my{V_D_WN}          --> MALTA PALATAL_SIGN {_V_D_WN_}
         
     | 
| 
       281 
     | 
    
         
            -
                mm{V_D_WN}          --> MALTA  
     | 
| 
      
 379 
     | 
    
         
            +
                mm{V_D_WN}          --> MALTA {GEMINATE}   {_V_D_WN_}
         
     | 
| 
       282 
380 
     | 
    
         | 
| 
       283 
381 
     | 
    
         
             
                \** ===================== **\
         
     | 
| 
       284 
382 
     | 
    
         
             
                \**     6TH LINE RULES    **\
         
     | 
| 
         @@ -295,13 +393,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       295 
393 
     | 
    
         | 
| 
       296 
394 
     | 
    
         
             
                [{L6}]{V_D_WN} --> [{_L6_}]{_V_D_WN_}
         
     | 
| 
       297 
395 
     | 
    
         | 
| 
       298 
     | 
    
         
            -
                \** r before long vowels is voiced **\
         
     | 
| 
       299 
     | 
    
         
            -
                r[{LVOWELS}]      --> ROMEN [{_LTEHTAR_}]
         
     | 
| 
       300 
     | 
    
         
            -
             
     | 
| 
       301 
396 
     | 
    
         
             
                \** Override rule r + null **\
         
     | 
| 
       302 
397 
     | 
    
         
             
                r                 --> {_LONE_R_}
         
     | 
| 
       303 
398 
     | 
    
         | 
| 
       304 
     | 
    
         
            -
                rr{V_D_WN}        --> ROMEN  
     | 
| 
      
 399 
     | 
    
         
            +
                rr{V_D_WN}        --> ROMEN {GEMINATE} {_V_D_WN_}
         
     | 
| 
       305 
400 
     | 
    
         
             
                ry{V_D_WN}        --> ROMEN PALATAL_SIGN {_V_D_WN_}
         
     | 
| 
       306 
401 
     | 
    
         
             
                rd{V_D_WN}        --> ARDA {_V_D_WN_}
         
     | 
| 
       307 
402 
     | 
    
         | 
| 
         @@ -309,7 +404,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       309 
404 
     | 
    
         
             
                \**     L  LINE RULES     **\
         
     | 
| 
       310 
405 
     | 
    
         
             
                \** ===================== **\
         
     | 
| 
       311 
406 
     | 
    
         
             
                {LINE_L}          === l     * ld      * ll
         
     | 
| 
       312 
     | 
    
         
            -
                {_LINE_L_}        === LAMBE * ALDA    * LAMBE  
     | 
| 
      
 407 
     | 
    
         
            +
                {_LINE_L_}        === LAMBE * ALDA    * LAMBE {GEMINATE}
         
     | 
| 
       313 
408 
     | 
    
         | 
| 
       314 
409 
     | 
    
         
             
                [{LINE_L}]{V_D_WN}    --> [{_LINE_L_}]{_V_D_WN_}
         
     | 
| 
       315 
410 
     | 
    
         | 
| 
         @@ -320,22 +415,18 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. 
     | 
|
| 
       320 
415 
     | 
    
         
             
                \** ===================== **\
         
     | 
| 
       321 
416 
     | 
    
         
             
                \**   S/Z LINE RULES      **\
         
     | 
| 
       322 
417 
     | 
    
         
             
                \** ===================== **\
         
     | 
| 
       323 
     | 
    
         
            -
                 
     | 
| 
       324 
     | 
    
         
            -
                 
     | 
| 
       325 
     | 
    
         
            -
             
     | 
| 
       326 
     | 
    
         
            -
                 
     | 
| 
       327 
     | 
    
         
            -
             
     | 
| 
       328 
     | 
    
         
            -
             
     | 
| 
       329 
     | 
    
         
            -
                 
     | 
| 
       330 
     | 
    
         
            -
                 
     | 
| 
       331 
     | 
    
         
            -
                 
     | 
| 
       332 
     | 
    
         
            -
                { 
     | 
| 
       333 
     | 
    
         
            -
             
     | 
| 
       334 
     | 
    
         
            -
                 
     | 
| 
       335 
     | 
    
         
            -
                  sá            --> SILME_NUQUERNA {A_SHAPE}
         
     | 
| 
       336 
     | 
    
         
            -
                  {SS}á         --> ESSE_NUQUERNA {A_SHAPE}
         
     | 
| 
       337 
     | 
    
         
            -
                \endif
         
     | 
| 
       338 
     | 
    
         
            -
             
     | 
| 
      
 418 
     | 
    
         
            +
                
         
     | 
| 
      
 419 
     | 
    
         
            +
                \** SILME is a bit tricky : the shape is not linked to voicing but to a tehta presence or not **\
         
     | 
| 
      
 420 
     | 
    
         
            +
                {L8}              === s               * {SS}
         
     | 
| 
      
 421 
     | 
    
         
            +
                {_L8_TEHTAR_}     === SILME_NUQUERNA  * ESSE_NUQUERNA
         
     | 
| 
      
 422 
     | 
    
         
            +
                {_L8_NO_TEHTAR_}  === SILME           * ESSE
         
     | 
| 
      
 423 
     | 
    
         
            +
             
     | 
| 
      
 424 
     | 
    
         
            +
                [{L8}][{VOWELS}]   --> [{_L8_TEHTAR_}][{_TEHTAR_}]
         
     | 
| 
      
 425 
     | 
    
         
            +
                [{L8}][{LTEHTAR}]  --> [{_L8_TEHTAR_}][{_LTEHTAR_}]
         
     | 
| 
      
 426 
     | 
    
         
            +
                
         
     | 
| 
      
 427 
     | 
    
         
            +
                {L8}               --> {_L8_NO_TEHTAR_}
         
     | 
| 
      
 428 
     | 
    
         
            +
                {L8}[{DIPHTHONGS}] --> {_L8_NO_TEHTAR_}[{_DIPHTHONGS_}]
         
     | 
| 
      
 429 
     | 
    
         
            +
                
         
     | 
| 
       339 
430 
     | 
    
         
             
              \end
         
     | 
| 
       340 
431 
     | 
    
         | 
| 
       341 
432 
     | 
    
         
             
              \beg    rules punctuation
         
     |