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
@@ -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
|
36
|
-
\authors "Talagan (Benjamin Babut)"
|
40
|
+
\version "0.1.0"
|
41
|
+
\authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
|
37
42
|
|
38
|
-
\charset
|
39
|
-
\charset
|
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
|
-
|
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
|
-
|
93
|
-
|
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
|
-
|
96
|
-
|
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}
|
99
|
-
{_DIPHTHONGS_}
|
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}
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
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
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
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}
|
126
|
-
|
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
|
134
|
-
[{VOWELS}] l --> LAMBE [{TEHTAR}]
|
226
|
+
{V_D_WN} l --> LAMBE {_V_D_WN_}
|
135
227
|
|
136
228
|
\** ======================== **\
|
137
229
|
|
138
|
-
m
|
139
|
-
|
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
|
150
|
-
|
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
|
-
|
158
|
-
|
159
|
-
|
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
|
-
|
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
|
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
|
+
|