glaemscribe 1.0.19 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/glaemresources/charsets/tengwar_ds_annatar.cst +509 -0
  3. data/glaemresources/charsets/tengwar_ds_eldamar.cst +22 -16
  4. data/glaemresources/charsets/tengwar_ds_elfica.cst +461 -0
  5. data/glaemresources/charsets/tengwar_ds_parmaite.cst +500 -0
  6. data/glaemresources/charsets/{tengwar_ds.cst → tengwar_ds_sindarin.cst} +59 -62
  7. data/glaemresources/charsets/tengwar_freemono.cst +176 -0
  8. data/glaemresources/charsets/unicode_runes.cst +1 -0
  9. data/glaemresources/modes/adunaic.glaem +50 -28
  10. data/glaemresources/modes/blackspeech.glaem +156 -82
  11. data/glaemresources/modes/english-ipa.glaem +49 -0
  12. data/glaemresources/modes/french-ipa.glaem +49 -0
  13. data/glaemresources/modes/{oldnorse-medieval.glaem → futhark-runicus.glaem} +4 -4
  14. data/glaemresources/modes/futhark-younger.glaem +129 -0
  15. data/glaemresources/modes/{futhorc.glaem.disabled → futhorc.glaem} +76 -38
  16. data/glaemresources/modes/gothic.glaem +1 -1
  17. data/glaemresources/modes/khuzdul.glaem +1 -1
  18. data/glaemresources/modes/mercian.glaem +31 -16
  19. data/glaemresources/modes/quenya-sarati.glaem +5 -3
  20. data/glaemresources/modes/quenya.glaem +168 -77
  21. data/glaemresources/modes/rlyehian.glaem +41 -43
  22. data/glaemresources/modes/sindarin-beleriand.glaem +39 -17
  23. data/glaemresources/modes/sindarin-daeron.glaem +1 -1
  24. data/glaemresources/modes/{sindarin-classical.glaem → sindarin.glaem} +73 -37
  25. data/glaemresources/modes/telerin.glaem +161 -64
  26. data/glaemresources/modes/valarin-sarati.glaem +1 -1
  27. data/glaemresources/modes/westron.glaem +83 -44
  28. data/glaemresources/modes/westsaxon.glaem +30 -13
  29. data/lib/api/charset.rb +29 -11
  30. data/lib/api/charset_parser.rb +15 -3
  31. data/lib/api/mode.rb +15 -3
  32. data/lib/api/mode_parser.rb +7 -2
  33. data/lib/api/option.rb +15 -1
  34. data/lib/api/post_processor/resolve_virtuals.rb +35 -24
  35. data/lib/api/transcription_pre_post_processor.rb +2 -1
  36. metadata +15 -11
  37. data/glaemresources/modes/blackspeech-annatar.glaem +0 -320
  38. data/glaemresources/modes/futhark-long-branch.glaem.disabled +0 -101
  39. data/glaemresources/modes/futhark-short-twig.glaem.disabled +0 -101
@@ -27,18 +27,56 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
27
27
  \beg changelog
28
28
  \entry 0.0.1 "First version"
29
29
  \entry 0.0.2 "Ported to virtual chars."
30
+ \entry 0.0.3 "Merging with blackspeech Annatar".
31
+ \entry 0.0.4 "Adding double tehtar handling."
32
+ \entry 0.0.5 "Fixing ORE/ROMEN, refactoring."
33
+ \entry 0.0.6 "Added support for the FreeMonoTengwar font"
34
+ \entry "0.1.0" "Added support for the Tengwar Elfica font"
30
35
  \end
31
36
 
32
37
  \language "Black Speech"
33
38
  \writing "Tengwar"
34
39
  \mode "General Use"
35
- \version "0.0.2"
36
- \authors "Talagan (Benjamin Babut)"
40
+ \version "0.1.0"
41
+ \authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
37
42
 
38
- \charset tengwar_ds true
39
- \charset tengwar_ds_eldamar false
43
+ \charset tengwar_ds_sindarin false
44
+ \charset tengwar_ds_parmaite false
45
+ \charset tengwar_ds_eldamar false
46
+ \charset tengwar_ds_annatar true
47
+ \charset tengwar_ds_elfica false
48
+ \charset tengwar_freemono false
40
49
 
41
50
  \beg options
51
+
52
+ \beg option reverse_o_u_tehtar O_UP_U_DOWN
53
+ \value O_UP_U_DOWN 1
54
+ \value U_UP_O_DOWN 2
55
+ \end
56
+
57
+ \beg option long_vowels_format LONG_VOWELS_USE_DOUBLE_TEHTAR
58
+ \value LONG_VOWELS_USE_LONG_CARRIER 1
59
+ \value LONG_VOWELS_USE_DOUBLE_TEHTAR 2
60
+ \end
61
+
62
+ \beg option double_tehta_e true
63
+ \visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
64
+ \end
65
+ \beg option double_tehta_i true
66
+ \visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
67
+ \end
68
+ \beg option double_tehta_o true
69
+ \visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
70
+ \end
71
+ \beg option double_tehta_u true
72
+ \visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
73
+ \end
74
+
75
+ \beg option consonant_modification_style CONSONANT_MODIFICATION_STYLE_WAVE
76
+ \value CONSONANT_MODIFICATION_STYLE_WAVE 0
77
+ \value CONSONANT_MODIFICATION_STYLE_BAR 1
78
+ \end
79
+
42
80
  \option reverse_numbers true
43
81
  \beg option numbers_base BASE_12
44
82
  \value BASE_10 10
@@ -65,6 +103,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
65
103
  \rxsubstitute "(ō|ô|oo)" "ó"
66
104
  \rxsubstitute "(ū|û|uu)" "ú"
67
105
 
106
+ \** For ORE/ROMEN **\
107
+ \rxsubstitute "r(a|e|i|o|u|á|é|í|ó|ú)" "R\\1"
108
+
68
109
  \** Preprocess numbers **\
69
110
  \elvish_numbers "\\eval numbers_base" "\\eval reverse_numbers"
70
111
  \end
@@ -72,118 +113,151 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
72
113
  \beg processor
73
114
 
74
115
  \beg rules litteral
75
- {A} === a
76
- {AA} === á
77
- {E} === e
78
- {EE} === é
79
- {I} === i
80
- {II} === í
81
- {O} === o
82
- {OO} === ó
83
- {U} === u
84
- {UU} === ú
85
-
86
- {AI} === {A}{I} \** attested **\
87
- {AU} === {A}{U} \** attested **\
88
- {OI} === {O}{I} \** Not quite sure (dushgoi) **\
89
-
116
+
90
117
  {K} === (c,k)
91
118
 
92
- {VOWELS} === {A} * {E} * {I} * {O} * {U}
93
- {LVOWELS} === {AA} * {EE} * {II} * {OO} * {UU}
119
+ \if "consonant_modification_style == CONSONANT_MODIFICATION_STYLE_WAVE"
120
+ {GEMINATE} === GEMINATE_SIGN_TILD
121
+ {NASAL} === NASALIZE_SIGN_TILD
122
+ \else
123
+ {GEMINATE} === GEMINATE_SIGN
124
+ {NASAL} === NASALIZE_SIGN
125
+ \endif
126
+
127
+ {VOWELS} === a * e * i * o * u
128
+ {LVOWELS} === á * é * í * ó * ú
94
129
 
95
- \** Revers o and u **\
96
- {TEHTAR} === A_TEHTA * E_TEHTA * I_TEHTA * U_TEHTA * O_TEHTA
130
+ \if "reverse_o_u_tehtar == U_UP_O_DOWN"
131
+ {O_LOOP} === O_TEHTA
132
+ {O_LOOP_DOUBLE} === O_TEHTA_DOUBLE
133
+ {U_LOOP} === U_TEHTA
134
+ {U_LOOP_DOUBLE} === U_TEHTA_DOUBLE
135
+ \else
136
+ {O_LOOP} === U_TEHTA
137
+ {O_LOOP_DOUBLE} === U_TEHTA_DOUBLE
138
+ {U_LOOP} === O_TEHTA
139
+ {U_LOOP_DOUBLE} === O_TEHTA_DOUBLE
140
+ \endif
141
+
142
+ {_TEHTAR_} === A_TEHTA * E_TEHTA * I_TEHTA * {O_LOOP} * {U_LOOP}
97
143
 
98
- {DIPHTHONGS} === {AI} * {AU} * {OI}
99
- {_DIPHTHONGS_} === YANTA A_TEHTA * URE A_TEHTA * YANTA U_TEHTA
144
+ {DIPHTHONGS} === ai * au * oi
145
+ {_DIPHTHONGS_} === YANTA A_TEHTA * URE A_TEHTA * YANTA {O_LOOP}
146
+ {WDIPHTHONGS} === * {DIPHTHONGS}
147
+ {_WDIPHTHONGS_} === * {_DIPHTHONGS_}
148
+
149
+ {WLONG} === {NULL} \** long vowels that can be used as tehtar **\
150
+ {_WLONG_} === {NULL} \** tehtar of long vowels that can be used as tehtar **\
151
+
152
+ {_LONG_A_} === ARA A_TEHTA
153
+ {_LONG_E_} === ARA E_TEHTA
154
+ {_LONG_I_} === ARA I_TEHTA
155
+ {_LONG_O_} === ARA {O_LOOP}
156
+ {_LONG_U_} === ARA {U_LOOP}
157
+ {_LONE_LONG_A_} === {_LONG_A_}
158
+ {_LONE_LONG_E_} === {_LONG_E_}
159
+ {_LONE_LONG_I_} === {_LONG_I_}
160
+ {_LONE_LONG_O_} === {_LONG_O_}
161
+ {_LONE_LONG_U_} === {_LONG_U_}
162
+
163
+ \if "long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR"
164
+ \if double_tehta_e
165
+ {_LONG_E_} === E_TEHTA_DOUBLE
166
+ {_LONE_LONG_E_} === TELCO {_LONG_E_}
167
+ {WLONG} === {WLONG} * é
168
+ {_WLONG_} === {_WLONG_} * {_LONG_E_}
169
+ \endif
170
+ \if double_tehta_i
171
+ {_LONG_I_} === I_TEHTA_DOUBLE
172
+ {_LONE_LONG_I_} === TELCO {_LONG_I_}
173
+ {WLONG} === {WLONG} * í
174
+ {_WLONG_} === {_WLONG_} * {_LONG_I_}
175
+ \endif
176
+ \if double_tehta_o
177
+ {_LONG_O_} === {O_LOOP_DOUBLE}
178
+ {_LONE_LONG_O_} === TELCO {_LONG_O_}
179
+ {WLONG} === {WLONG} * ó
180
+ {_WLONG_} === {_WLONG_} * {_LONG_O_}
181
+ \endif
182
+ \if double_tehta_u
183
+ {_LONG_U_} === {U_LOOP_DOUBLE}
184
+ {_LONE_LONG_U_} === TELCO {_LONG_U_}
185
+ {WLONG} === {WLONG} * ú
186
+ {_WLONG_} === {_WLONG_} * {_LONG_U_}
187
+ \endif
188
+ \endif
189
+
190
+ {_LTEHTAR_} === {_LONG_A_} * {_LONG_E_} * {_LONG_I_} * {_LONG_O_} * {_LONG_U_}
100
191
 
101
- [{VOWELS}] --> TELCO [{TEHTAR}] \** Replace isolated short vowels **\
102
- [{LVOWELS}] --> ARA [{TEHTAR}] \** Replace long vowels **\
103
- [{DIPHTHONGS}] --> [{_DIPHTHONGS_}] \** Replace diphthongs **\
104
-
105
- b --> UMBAR
106
- [{VOWELS}] b --> UMBAR [{TEHTAR}]
107
-
108
- d --> ANDO
109
- [{VOWELS}] d --> ANDO [{TEHTAR}]
192
+ {V_D} === [ {VOWELS} {WLONG} ]
193
+ {V_D_WN} === [ {VOWELS} {WLONG} * {NULL} ]
194
+
195
+ {_V_D_} === [ {_TEHTAR_} {_WLONG_} ]
196
+ {_V_D_WN_} === [ {_TEHTAR_} {_WLONG_} * {NULL} ]
197
+
198
+ \** LONE SHORT VOWELS **\
199
+ [{VOWELS}] --> TELCO [{_TEHTAR_}] \** Replace isolated short vowels **\
110
200
 
111
- f --> FORMEN
112
- [{VOWELS}] f --> FORMEN_EXT [{TEHTAR}] \** Beware. **\
113
-
114
- g --> UNGWE
115
- [{VOWELS}] g --> UNGWE [{TEHTAR}]
116
-
117
- gh --> UNGWE_EXT
118
- [{VOWELS}] gh --> UNGWE_EXT [{TEHTAR}]
119
-
120
- h --> HYARMEN
121
- [{VOWELS}] h --> HYARMEN [{TEHTAR}]
201
+ \** LONE LONG VOWELS **\
202
+ [{LVOWELS}] --> [{_LONE_LONG_A_} * {_LONE_LONG_E_} * {_LONE_LONG_I_} * {_LONE_LONG_O_} * {_LONE_LONG_U_}]
203
+
204
+ [{DIPHTHONGS}] --> [{_DIPHTHONGS_}] \** Replace diphthongs **\
205
+
206
+ \** ========================= **\
207
+
208
+ {V_D_WN}p --> PARMA {_V_D_WN_}
209
+ {V_D_WN}t --> TINCO {_V_D_WN_}
210
+ {V_D_WN}{K} --> QUESSE {_V_D_WN_}
211
+
212
+ {V_D_WN} b --> UMBAR {_V_D_WN_}
213
+ {V_D_WN} d --> ANDO {_V_D_WN_}
214
+ {V_D_WN} f --> FORMEN_EXT {_V_D_WN_} \** Beware. **\
215
+ {V_D_WN} g --> UNGWE {_V_D_WN_}
216
+ {V_D_WN} gh --> UNGWE_EXT {_V_D_WN_}
217
+ {V_D_WN} h --> HYARMEN {_V_D_WN_}
122
218
 
123
219
  \** ======================== **\
124
220
 
125
- {K} --> QUESSE
126
- [{VOWELS}]{K} --> QUESSE [{TEHTAR}]
127
-
128
- {K}h --> HWESTA
129
- [{VOWELS}]{K}h --> HWESTA_EXT [{TEHTAR}] \** Take care. **\
221
+ {K}h --> HWESTA
222
+ {V_D}{K}h --> HWESTA_EXT {_V_D_} \** Take care. **\
130
223
 
131
224
  \** ======================== **\
132
225
 
133
- l --> LAMBE
134
- [{VOWELS}] l --> LAMBE [{TEHTAR}]
226
+ {V_D_WN} l --> LAMBE {_V_D_WN_}
135
227
 
136
228
  \** ======================== **\
137
229
 
138
- m --> MALTA
139
- [{VOWELS}] m --> MALTA [{TEHTAR}]
140
-
141
- mb --> UMBAR NASALIZE_SIGN_TILD
142
- [{VOWELS}] mb --> UMBAR NASALIZE_SIGN_TILD [{TEHTAR}]
143
-
144
- mp --> PARMA NASALIZE_SIGN_TILD
145
- [{VOWELS}] mp --> PARMA NASALIZE_SIGN_TILD [{TEHTAR}]
230
+ {V_D_WN} m --> MALTA {_V_D_WN_}
231
+ {V_D_WN} mb --> UMBAR {NASAL} {_V_D_WN_}
232
+ {V_D_WN} mp --> PARMA {NASAL} {_V_D_WN_}
146
233
 
147
234
  \** ======================== **\
148
235
 
149
- n --> NUMEN
150
- [{VOWELS}]n --> NUMEN [{TEHTAR}]
151
-
152
- n{K} --> QUESSE NASALIZE_SIGN_TILD
153
- [{VOWELS}]n{K} --> QUESSE NASALIZE_SIGN_TILD [{TEHTAR}]
236
+ {V_D_WN}n --> NUMEN {_V_D_WN_}
237
+ {V_D_WN}n{K} --> QUESSE {NASAL} {_V_D_WN_}
154
238
 
155
239
  \** ======================== **\
156
240
 
157
- p --> PARMA
158
-
159
- r --> ROMEN
160
- r_ --> ORE
161
- [{VOWELS}]r --> ORE [{TEHTAR}]
162
-
163
- [{VOWELS}]rb --> ORE [{TEHTAR}] UMBAR
164
- [{LVOWELS}]rb --> ARA [{TEHTAR}] ORE UMBAR
165
-
166
- [{VOWELS}]rz --> ORE [{TEHTAR}] ESSE
167
- [{LVOWELS}]rz --> ARA [{TEHTAR}] ORE ESSE
241
+ \** ROMEN / ORE handling probably not accurate **\
242
+ {V_D_WN}r --> ORE {_V_D_WN_}
243
+ {V_D_WN}R --> ROMEN {_V_D_WN_}
168
244
 
169
245
  \** ======================== **\
170
246
 
171
247
  s --> SILME
248
+ {V_D} s --> SILME_NUQUERNA {_V_D_}
249
+ z --> ESSE
250
+ {V_D} z --> ESSE_NUQUERNA {_V_D_}
172
251
 
173
252
  \** ======================== **\
174
253
 
175
254
  sh --> AHA
176
- [{VOWELS}] sh --> AHA_EXT [{TEHTAR}] \** BEWARE. **\
255
+ {V_D} sh --> AHA_EXT {_V_D_} \** BEWARE. **\
177
256
 
178
- t --> TINCO
179
- [{VOWELS}]t --> TINCO [{TEHTAR}]
180
257
 
181
258
  th --> SULE
182
259
 
183
260
  y --> ANNA
184
-
185
- z --> ESSE
186
- [{VOWELS}] z --> ESSE_NUQUERNA [{TEHTAR}]
187
261
 
188
262
  \end
189
263
 
@@ -0,0 +1,49 @@
1
+ \**
2
+
3
+ Glǽmscribe (also written Glaemscribe) is a software dedicated to
4
+ the transcription of texts between writing systems, and more
5
+ specifically dedicated to the transcription of J.R.R. Tolkien's
6
+ invented languages to some of his devised writing systems.
7
+
8
+ Copyright (C) 2015 Benjamin Babut (Talagan).
9
+
10
+ This program is free software: you can redistribute it and/or modify
11
+ it under the terms of the GNU Affero General Public License as published by
12
+ the Free Software Foundation, either version 3 of the License, or
13
+ any later version.
14
+
15
+ This program is distributed in the hope that it will be useful,
16
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
+ GNU Affero General Public License for more details.
19
+
20
+ You should have received a copy of the GNU Affero General Public License
21
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
22
+
23
+ **\
24
+
25
+ \** FOR NOW THIS IS JUST A TEMPLATE **\
26
+
27
+ \beg changelog
28
+ \end
29
+
30
+ \language "English"
31
+ \writing "Tengwar"
32
+ \mode "Phonemic IPA"
33
+ \version "0.0.1"
34
+ \authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
35
+
36
+ \charset tengwar_ds_sindarin false
37
+ \charset tengwar_ds_parmaite false
38
+ \charset tengwar_ds_eldamar false
39
+ \charset tengwar_ds_annatar true
40
+ \charset tengwar_freemono false
41
+
42
+ \beg preprocessor
43
+ \end
44
+
45
+ \beg processor
46
+ \end
47
+
48
+ \beg postprocessor
49
+ \end
@@ -0,0 +1,49 @@
1
+ \**
2
+
3
+ Glǽmscribe (also written Glaemscribe) is a software dedicated to
4
+ the transcription of texts between writing systems, and more
5
+ specifically dedicated to the transcription of J.R.R. Tolkien's
6
+ invented languages to some of his devised writing systems.
7
+
8
+ Copyright (C) 2015 Benjamin Babut (Talagan).
9
+
10
+ This program is free software: you can redistribute it and/or modify
11
+ it under the terms of the GNU Affero General Public License as published by
12
+ the Free Software Foundation, either version 3 of the License, or
13
+ any later version.
14
+
15
+ This program is distributed in the hope that it will be useful,
16
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
+ GNU Affero General Public License for more details.
19
+
20
+ You should have received a copy of the GNU Affero General Public License
21
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
22
+
23
+ **\
24
+
25
+ \** FOR NOW THIS IS JUST A TEMPLATE **\
26
+
27
+ \beg changelog
28
+ \end
29
+
30
+ \language "French"
31
+ \writing "Tengwar"
32
+ \mode "Phonemic IPA"
33
+ \version "0.0.1"
34
+ \authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
35
+
36
+ \charset tengwar_ds_sindarin false
37
+ \charset tengwar_ds_parmaite false
38
+ \charset tengwar_ds_eldamar false
39
+ \charset tengwar_ds_annatar true
40
+ \charset tengwar_freemono false
41
+
42
+ \beg preprocessor
43
+ \end
44
+
45
+ \beg processor
46
+ \end
47
+
48
+ \beg postprocessor
49
+ \end
@@ -26,7 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
26
26
  \writing "Runes"
27
27
  \mode "Futhark Codex Runicus"
28
28
  \version "0.0.1"
29
- \authors "Talagan (Benjamin Babut)"
29
+ \authors "Historical, impl. Talagan (Benjamin Babut)"
30
30
 
31
31
  \charset unicode_runes true
32
32
 
@@ -40,13 +40,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
40
40
  {A} === (a,á)
41
41
  {E} === (e,é)
42
42
  {I} === (i,í,j)
43
- {O} === (o)
43
+ {O} === (o,ó,ą,ą́)
44
44
  {U} === (u,ú)
45
45
  {Y} === (y,ý)
46
46
 
47
47
  {AE} === (æ,ǽ,ę)
48
48
  {OE} === (ø,ǿ,œ)
49
- {OTREM} === (ö,ǫ,ǫ́)
49
+ {OTREM} === (ö,ǫ,ǫ́,ǭ)
50
50
  {AEI} === (æi,ei)
51
51
 
52
52
  \** VOWELS **\
@@ -97,7 +97,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
97
97
  p --> DOTTED_P
98
98
  \** pp: ok **\
99
99
  \** mp: ok **\
100
- r --> REID
100
+ (r,ř) --> REID
101
101
  \** rr: ok **\
102
102
  \** ř < z = rune ýr, none in this mode **\
103
103
  s --> SIGEL
@@ -0,0 +1,129 @@
1
+ \**
2
+
3
+ Glǽmscribe (also written Glaemscribe) is a software dedicated to
4
+ the transcription of texts between writing systems, and more
5
+ specifically dedicated to the transcription of J.R.R. Tolkien's
6
+ invented languages to some of his devised writing systems.
7
+
8
+ Copyright (C) 2015 Benjamin Babut (Talagan).
9
+
10
+ This program is free software: you can redistribute it and/or modify
11
+ it under the terms of the GNU Affero General Public License as published by
12
+ the Free Software Foundation, either version 3 of the License, or
13
+ any later version.
14
+
15
+ This program is distributed in the hope that it will be useful,
16
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
+ GNU Affero General Public License for more details.
19
+
20
+ You should have received a copy of the GNU Affero General Public License
21
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
22
+
23
+ **\
24
+
25
+ \language "Old Norse"
26
+ \writing "Runes"
27
+ \mode "Younger Futhark"
28
+ \version "0.0.1"
29
+ \authors "Historical impl. Bertrand Bellet"
30
+
31
+ \charset unicode_runes true
32
+
33
+ \beg options
34
+ \beg option runic_style RUNIC_STYLE_LONG_BRANCH
35
+ \value RUNIC_STYLE_LONG_BRANCH 0
36
+ \value RUNIC_STYLE_SHORT_TWIG 1
37
+ \end
38
+ \end
39
+
40
+ \beg preprocessor
41
+ \downcase
42
+
43
+ \** Dis-ambiguate q,c,k **\
44
+ \rxsubstitute "(q|c|k)" "k"
45
+ \end
46
+
47
+ \beg processor
48
+
49
+ \beg rules litteral
50
+ {A} === (a,á,æ,ǽ,ę)
51
+ {I} === (i,í,j,e,é)
52
+ {O} === (ą,ą́,ö,ǫ,ǫ́,ǭ)
53
+ {U} === (u,ú,o,ó,y,ý,ø,ǿ,œ)
54
+ {AI} === (æi,ei)
55
+ {AU} === (au,ǫu,ey,æy,øy,œy)
56
+
57
+ \** VOWELS **\
58
+ \if "runic_style == RUNIC_STYLE_LONG_BRANCH"
59
+ {AR} === LONG_BRANCH_AR
60
+ {OSS} === LONG_BRANCH_OSS
61
+ \else
62
+ {AR} === SHORT_TWIG_AR
63
+ {OSS} === SHORT_TWIG_OSS
64
+ \endif
65
+
66
+ {A} --> {AR}
67
+ {I} --> ISS
68
+ {O} --> {OSS}
69
+ {U} --> UR
70
+ {AI} --> {AR} ISS
71
+ {AU} --> {OSS} UR
72
+
73
+ \** CONSONANTS **\
74
+ \if "runic_style == RUNIC_STYLE_LONG_BRANCH"
75
+ {BJARKAN} === BJARKAN
76
+ {HAGALL} === LONG_BRANCH_HAGALL
77
+ {MADR} === LONG_BRANCH_MADR
78
+ {NAUD} === NAUD
79
+ {YR} === LONG_BRANCH_YR
80
+ {SOL} === LONG_BRANCH_SOL
81
+ {TYR} === TYR
82
+ \else
83
+ {BJARKAN} === SHORT_TWIG_BJARKAN
84
+ {HAGALL} === SHORT_TWIG_HAGALL
85
+ {MADR} === SHORT_TWIG_MADR
86
+ {NAUD} === SHORT_TWIG_NAUD
87
+ {YR} === SHORT_TWIG_YR
88
+ {SOL} === SHORT_TWIG_SOL
89
+ {TYR} === SHORT_TWIG_TYR
90
+ \endif
91
+
92
+ (b,bb,mb,p,pp,mp) --> {BJARKAN}
93
+ (f,ff) --> FE
94
+ _g --> KAUN \** # Initial / After prefix **\
95
+ (g,g_) --> {HAGALL} \** # Median or final spirant **\
96
+ (h,hh) --> {HAGALL}
97
+ (k,nk,kk,gg,ng) --> KAUN
98
+ (l,ll) --> LOGR
99
+ (m,mm) --> {MADR}
100
+ (n,nn) --> {NAUD}
101
+ (r,rr) --> REID
102
+ (ř) --> {YR} \** ř < Germanic z **\
103
+ (s,ss) --> {SOL}
104
+ (t,tt,nt,d,dd,nd) --> {TYR}
105
+ (þ,þþ,ð,ðð) --> THURS
106
+ (v,vv,w,ww) --> URUZ
107
+ x --> KAUN {SOL}
108
+ z --> {TYR} {SOL}
109
+
110
+ \** nasalization of a **\
111
+ {A}(m,mm) --> {OSS} {MADR}
112
+ {A}(n,nn) --> {OSS} {NAUD}
113
+ {A}(mp,mb) --> {OSS} {BJARKAN}
114
+ {A}(nt,nd) --> {OSS} {TYR}
115
+ {A}(nk,ng) --> {OSS} KAUN
116
+ \end
117
+
118
+ \beg rules punctuation
119
+ , --> RUNIC_SINGLE_PUNCTUATION
120
+ ; --> RUNIC_SINGLE_PUNCTUATION
121
+ : --> RUNIC_MULTIPLE_PUNCTUATION
122
+ . --> RUNIC_MULTIPLE_PUNCTUATION
123
+ ! --> RUNIC_MULTIPLE_PUNCTUATION
124
+ ? --> RUNIC_CROSS_PUNCTUATION
125
+ \end
126
+ \end
127
+
128
+
129
+