glaemscribe 1.0.19 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|