diff --git a/files/fluf.harmony.pron.ielkh.purrub b/files/fluf.harmony.pron.ielkh.purrub index 3fc53fd..ed99587 100644 --- a/files/fluf.harmony.pron.ielkh.purrub +++ b/files/fluf.harmony.pron.ielkh.purrub @@ -4,7 +4,7 @@ Yo = cʷ ɟʷ çʷ ʝʷ In = t͜ɕ d͜ʑ ɕ ʑ U = m p b ɸ β -A = 0 tˁ dˁ ħ ʕ +A = 0 tˁ dˁ χ ʁ Z = n t d s z I = ɲ c ɟ ç ʝ Y = 0 cʷ ɟʷ çʷ ʝʷ @@ -21,7 +21,6 @@ Vn = u a z̩ i ɛ ɯ ə ɔ ɛ {0:Io} > {0:In} ˁ > 0 -# needs fixing f > ɸ / [uɔ]_ f > ɸ / _ˈ?[uɔ] ɸɸ > ɸ diff --git a/gmp/gmp-data.txt b/gmp/gmp-data.txt new file mode 100644 index 0000000..e86afef --- /dev/null +++ b/gmp/gmp-data.txt @@ -0,0 +1,385 @@ +Proto-elejáw Grand Master Plan +!!Proto-elejáw → Proto-Western (-3000⁓-1000)#pel-pw +!!!Vowels +ɨj ɘj ɜj aj|before a vowel|ɨj ej ɛj aj +|otherwise|i e ɛ æ +ɨw ɘw ɜw aw|before a vowel|ɨw ow ɔw aw +|otherwise|u o ɔ ɒ +ɨ ɘ ɜ a|before n t d ɗ ŋ k ɡ ɠ|i e ɛ æ +|before m p b ɓ ŋʷ kʷ ɡʷ ɠʷ|u o ɔ ɒ +ɘ ɜ|0|ə +any vowel|in open, stressed syllables|lengthens +!!!Consonant Clusters +0|before initial consonant cluster|insertion of ə +|after the second of three or more consecutive consonants| +any consonant|word-final after a consonant|disappears +s h|after a voiced consonant|z ɦ +z|after a voiceless consonant|s +!!!Syllables +vowel + h|unstressed before vowel + h|disappears +h + vowel|unstressed before h + vowel|disappears +!!!Consonants +kʷ ɡʷ ɠʷ ŋʷ|0|wkw wɡw wɠw wŋw +w|between consonants|disappears +|before an initial consonant| +|after a final consonant| +|after u o ɔ ɒ and before a consonant| +b d ɡ|0|β ð ɣ +ɓ ɗ ɠ||b d ɡ +r|0|ɾ +any consonant|intervocalically before a stressed vowel|geminates +!!Proto-Western → Old Sájura (-1000⁓-500)#pw-os +!!!Vowels +ɨ ə a|after stressed syllables|disappears +i e ɛ æ||j +u o ɔ ɒ||w +æ ɒ|0|a ɔ +long vowels|before j or w|shortens +|in closed syllables| +!!!Consonants +h ɦ ʔ|0|disappears +n t ð d s z ɾ l + j|0|ɲ t͜ɕ j d͜ʑ ɕ ʑ ɾʲ ʎ +w j l ɾ|between consonants|u i o ə +!!Old Sájura → Old Purrub (-500⁓200)#os-op +!!!Vowels +long vowels|0|shorten +e o|0|ɛ ɔ +ɨ||ɨ~ɯ +0|before initial vowels|insertion of ʔ +|intervocalically| +!!!Syllables +0|finally|stressed +|otherwised|unstressed +!!!Consonants +m n ɲ ŋ|before m p b β w|m +|before n t d ð s z l ɾ r|n +|before ɲ t͜ɕ d͜ʑ ɕ ʑ ʎ ɾʲ j|ɲ +|before ŋ k g ɣ|ŋ +ð|0|z +z|after t, d, or s and not before a vowel|z̩ +l|not adjacent to a vowel|l̩ +ʑ j ɾʲ ʎ|0|ʑ~j +β w||v~w +ɾ r|0|ʁ ʁʁ +(C)C₁C₂(C)|intervocalically|C₁C₁ +|initially|C₁ +|finally| +!!Old Purrub → Middle Purrub (200⁓900)#op-midp +!!!Vowels +i ɛ|pre-stress|e +u ɔ||o +ɯ ə a||ə +!!!Consonants +ʁʁ ll|intervocalically|χ ɫ +v ʑ||w j +z ɣ||disappears +vv zz ʑʑ ɣɣ||v z ʑ ɣ +b d d͜ʑ g|| +bb dd dd͜ʑ gg||b d d͜ʑ g +mm nn ɲɲ ŋŋ||mb nd ɲd͜ʑ ŋg +pp tt ss tt͜ɕ ɕɕ kk||pʰ tʰ sʰ t͜ɕʰ ɕʰ kʰ +p t s t͜ɕ ɕ k|initially| +b d d͜ʑ g||p t t͜ɕ k +#l ɾ|coda, following u ʊ|o̯ ə̯ +#|coda, following ə ɜ a|w ɨ̯ +#|coda, otherwise|w ə̯ +#|intervocalically following l, ll, or ʎ + vowel|ɾ +#|intervocalically following ɾ, r, or ɾʲ + vowel|l +#|following β ð ɣ n|ɫ r +#|following another consonant|ɹ +!!Middle Purrub → Early Modern Purrub (900⁓1400)#midp-emp +!!!Vowels +u o ɔ|unstressed\after a non-rounded vowel|w +|\after a rounded vowel|disappears +i e ɛ|\after a non-front vowel|j +|\after a front vowel|disappears +ɯ|\after a non-high vowel|ɰ +|\after a high vowel|disappears +any vowel|before a coda nasal|nasalizes +j w ɰ|| +!!!Consonants +pʰ tʰ sʰ t͜ɕʰ ɕʰ kʰ|0|ɸ θ h ɕ ç x +m n ɲ ŋ|coda|disappears +t͜ɕ d͜ʑ ɕ ʑ|before a back vowel|ʈ͡ʂ ɖ͡ʐ ʂ ʐ +|word finally after a back vowel| +!!Early Modern Purrub → Modern Purrub (1400⁓1800)#emp-mp +!!!Vowels +ɯw əw ɯw̃ əw̃|0|u o ũ õ +oɰ ɔɰ oɰ̃ ɔɰ̃|| +iw ew ɛw iw̃ ew̃ ɛw̃||y ø œ ỹ ø̃ œ̃ +uj oj ɔj uj̃ oj̃ ɔj̃|| +ɯj əj ɯj̃ əj̃||i e ĩ ẽ +eɰ ɛɰ eɰ̃ ɛɰ̃|| +əɰ aɰ əɰ̃ aɰ̃||ɯ ə ɯ̃ ə̃ +aj aw aj̃ aw̃||ɛ ɔ ɛ̃ ɔ̃ +!!!Consonants +x ɣ|0|χ ʁ +!!Old Sájura → Old Elkehen (-500⁓200)#os-oe +!!!Vowels +i e ɛ|long|ə̯i ei̯ ɛə̯ +ɨ ə a||ə̯ɨ əɨ̯ aə̯ +u o ɔ||ə̯u ou̯ ɔə̯ +ɛ ɔ|in open syllables|e o +i e u o|in closed syllables|ɪ ɛ ʊ ɔ +ɨ a|unstressed|ə +ə|stressed\open syllables|a +|\closed syllables|ɨ +any vowel|before a nasal|nasalizes +!!!Syllables +əw əj|initially before a consonant|wə jə +!!!Consonants +r|0|ʀ +ɾ|initially| +ɾ ɾʲ|before a voiced consonant|ʁ ʝ +|word finally or before a voiceless consonant|χ ç +|following a consonant|ɻ j +ɣ|0|ʁ +any consonant|between two consonants|disappears +|final| +!!Old Elkehen → Middle Elkehen (200⁓900)#oe-mide +!!!Vowels +ə̯i ei̯ ɛə̯|0|aj iː ɛw +ə̯ɨ əɨ̯ aə̯||aɨ̯ +ə̯u ou̯ ɔə̯||aw uː ɔj +u ʊ|short|y ʏ +!!!Consonants +any consonant|geminate|simplifies +any nasal|coda|disappears +t d s z + j|0|t͜ɕ d͜ʑ ɕ ʑ +t d s z + ɻ||ʈ͡ʂ ɖ͡ʐ ʂ ʐ +t͜ɕ d͜ʑ ɕ ʑ + ɻ|| +ɻ j|after voiced consonants|ʐ ʑ +|after voiceless consonants|ʂ ɕ +ɾ ɾʲ|0|l ʎ +!!Middle Elkehen → Early Modern Elkehen (900⁓1400)#mide-eme +!!!Vowels +aj aɨ̯ aw|before a vowel|ej əɨ̯ ow +|otherwise|ɛ ə ɔ +ɛw ɔj|in open syllables|ø ɤ +|in closed syllables|œ ʌ +i u|long|shorten +nasal vowels|before a nasal|denasalize +any vowel|finally and unstressed|disappears +|post-stress in non-final syllables| +!!!Consonants +β|0|v +any fricative|before another fricative|disappears +!!Early Modern Elkehen → Modern Elkehen (1400⁓1800)#eme-me +!!!Vowels +ẽ ø̃ ɤ̃ õ|0|ɛ̃ œ̃ ʌ̃ ɔ̃ +ĩ ɪ̃||ẽ +ỹ ʏ̃||ø̃ +ũ||õ +ɨ̃||ə̃ +!!!Syllables +0|finally|stressed +|otherwise|unstressed +!!!Consonants +p b v w|finally after p t t͜ɕ ʈ͡ʂ k b d d͜ʑ ɖ͡ʐ g|u +t͜ɕ d͜ʑ ɕ ʑ ç ʝ j||i +k g ɣ||ɨ +t d ð||ə +!!Proto-Western → Proto Western B (-1000⁓-500)#pw-pwb +!!!Vowels +i e ɛ æ|followed by a coda nasal|ẽ +ɨ ə a||ə̃ +u o ɔ ɒ||õ +!!!Consonants +m n ŋ|after a nasal vowel|disappears +k g ɣ|before i e ɛ|t͜s d͜z ʒ +nj ŋj|0|ɲ +β|0|v +j w|after a voiced consonant|ʒ v +|after a voiceless consonant|ʃ f +|word finally| +h ɦ|before i e ɛ æ|ʃ ʒ +|before u o ɔ ɒ|f v +|before ɨ ə a|x ɣ +|after i e ɛ æ\before a voiced consonant|ʒ +|after u o ɔ ɒ\|v +|after ɨ ə a\|ɣ +|after i e ɛ æ\before a voiceless consonant or word finally|ʃ +|after u o ɔ ɒ\|f +|after ɨ ə a\|x +ʔ|between vowels|ʔ +|otherwise|disappears +s z|adjacent to ʒ|ʒ +s z|adjacent to ʃ|ʃ +!!Proto Western B → Old Western B (-500⁓-300)#pwb-owb +!!!Vowels +i ɨ u|long|ə̯i ə̯ɨ ə̯u +e o||eə̯ oə̯ +ɛ ɔ||ea̯ oa̯ +æ ɒ||aːj aːw +|stressed|aj aw +|unstressed|ɛ ɔ +!!Old Western B → Middle Western B (-300⁓100)#owb-mwb +!!!Vowels +ə̯i ə̯ɨ ə̯u|0|aj aɰ aw +eə̯ oə̯||jo we +ea̯ oa̯||ja wa +!!!Consonants: +ʃ ʒ|0|ʂ ʐ +m p b f v|before i e ɛ j|mʲ pʲ bʲ fʲ vʲ +n t d s z l ɾ r||ɲ t͜ɕ d͜ʑ ɕ ʑ ʎ ɾʲ rʲ +ŋ k g x ɣ||ɲ c ɟ ç ʝ +j|after a palatalized consonant|disappears +!!Old Western B → Spanish? (-300⁓100)#owb-span +!!!Vowels +ɨ ə|adjacent to m p b f v w|u o +|otherwise|i a +ə̯i ə̯u|0|aj aw +eə̯ oə̯||je we +ea̯ oa̯||ja wa +e o|stressed|e o +|unstressed|i u +ɛ ɔ|stressed|je we +|unstressed|e o +!!!Consonants +d͜z z ʒ|0|t͜s s ʃ +!!Proto-elejáw → Proto-Eastern (-3000⁓-1500)#pel-pe +!!!Vowels +ɨw ɘw ɜw|before a vowel|ɨw ow ɛw +|otherwise|u o ɔ +ɨŋʷ ɘŋʷ ɜŋʷ aŋʷ|before a vowel|ɨw̃ ow̃ ɛw̃ aw̃ +|otherwise|ũ õ ɔ̃ aw̃ +ɨj ɘj ɜj|before a vowel|ɨj oj ɛj +|otherwise|i e ɛ +ɘ ɜ|0|o ɛ +!!!Consonants +kʷ ɡʷ ɠʷ|0|p b ɓ +ɓ ɗ ɠ|0|mb nd ŋɡ +any consonant|before mb nd ŋg|disappears +h ʔ|between two consonants|disappears +|word initial before a consonant| +|word final after a consonant| +m n ŋ|before m, n, or ŋ|disappears +|adjacent to b or p|m +|adjacent to d or t|n +|adjacent to ɡ or k|ŋ +ŋʷ|after b or p|mw +|after d or t|nw +|after ɡ or k|ŋw +|after m, n, or ŋ|w +|otherwise|w̃ +!!Pre-Proto-Fluf → Proto-Fluf#ppf-pf +!!!Vowels +ə|after a labial\before a labial|u +|\before a pharyngeal|o +|\before a dental|u +|\before l|l̩ +|\before a palatal|y +|\before a labio-palatal|u +|\before a velar|u +|\before a glottal|u +|\before a finally|u +|after a pharyngeal\before a labial|o +|\before a pharyngeal|ɑ +|\before a dental|ɑ +|\before l|l̩ +|\before a palatal|e +|\before a labio-palatal|ø +|\before a velar|ɤ +|\before a glottal|ɑ +|\before a finally|ɑ +|after a dental\before a labial|u +|\before a pharyngeal|ɑ +|\before a dental|z̩ +|\before l|l̩ +|\before a palatal|i +|\before a labio-palatal|y +|\before a velar|ɯ +|\before a glottal|z̩ +|\before a finally|z̩ +|after l\before a labial|u +|\before a pharyngeal|ɑ +|\before a dental|z̩ +|\before l|l̩ +|\before a palatal|i +|\before a labio-palatal|y +|\before a velar|ɯ +|\before a glottal|ə +|\before a finally|ə +|after a palatal\before a labial|ɯ +|\before a pharyngeal|e +|\before a dental|z̩ +|\before l|l̩ +|\before a palatal|i +|\before a labio-palatal|y +|\before a velar|i +|\before a glottal|i +|\before a finally|i +|after a labio-palatal\before a labial|u +|\before a pharyngeal|ø +|\before a dental|z̩ +|\before l|l̩ +|\before a palatal|y +|\before a labio-palatal|y +|\before a velar|i +|\before a glottal|y +|\before a finally|y +|after a velar\before a labial|ɯ +|\before a pharyngeal|ɤ +|\before a dental|ɯ +|\before l|l̩ +|\before a palatal|ɯ +|\before a labio-palatal|u +|\before a velar|ɯ +|\before a glottal|ɯ +|\before a finally|ɯ +|after a glottal\before a labial|u +|\before a pharyngeal|ɑ +|\before a dental|z̩ +|\before l|l̩ +|\before a palatal|i +|\before a labio-palatal|y +|\before a velar|ɯ +|\before a glottal|ə +|\before a finally|ə +!!!Consonants +β ɣ|before or after\u ɯ|disappears +ʕ|\ɑ| +z|\z̩| +l|\l̩| +ʝ ʝʷ|\i y| +h|\ə| +!!Fluf Harmony#pf-h +!!!Vowels +i ɯ e ɤ ə\y u ø o|with last vowel\i y z̩|i\y +\|\e ø|e\ø +i ɯ e ɤ\y u ø o ə|\ɯ u l̩|ɯ\u +\|\ɤ o a|ɤ\o +!!Proto-Fluf → Iealkh#pf-ilk +!!!Vowels +ɑ|0|a +y ɯ||ø ɤ +e o||ɛ ɔ +!!!Consonants +any nasal|before a labial|m +|before a dental|n +|before a pharyngeal| +|before a (labio-) palatal|ɲ +|before a velar|ŋ +ɸ β|0|f v +ħ ʕ||χ ʁ +(C)C₁C₂(C)|intervocalically|C₁C₁ +|initially|C₁ +|finally| +!!Iealkh → Old Purrub (-500⁓200)#ilk-op +!!!Consonants +c ɟ ç ʝ|0|t͜ɕ d͜ʑ ɕ ʑ +cʷ ɟʷ çʷ ʝʷ|| +tˁ dˁ|0|t d +f ff|adjacent to u ɔ|ɸ +|otherwise|disappears +∅ h|between two vowels or initially\before u ɔ|ɸ +|\before a|ʁ +|\before z̩|s +|\before i ɛ ø|ɕ +|\before ɤ|ɣ +|\before l|disappears +!!!Vowels +ø ɤ|0|ɛ ɯ +z̩|after t d s|z̩ +|otherwise|ɯz +z̩ + a consonant||ɯzz \ No newline at end of file diff --git a/gmp/gmp-out.html b/gmp/gmp-out.html new file mode 100644 index 0000000..215c1b3 --- /dev/null +++ b/gmp/gmp-out.html @@ -0,0 +1,1512 @@ + + + +Proto-elejáw Grand Master Plan + + + +

Proto-elejáw Grand Master Plan

+ +

Proto-elejáw → Proto-Western (-3000⁓-1000)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vowels
ɨj ɘj ɜj ajbefore a vowelɨj ej ɛj aj
otherwisei e ɛ æ
ɨw ɘw ɜw awbefore a vowelɨw ow ɔw aw
otherwiseu o ɔ ɒ
ɨ ɘ ɜ abefore n t d ɗ ŋ k ɡ ɠi e ɛ æ
before m p b ɓ ŋʷ kʷ ɡʷ ɠʷu o ɔ ɒ
ɘ ɜə
any vowelin open, stressed syllableslengthens
Consonant Clusters
before initial consonant clusterinsertion of ə
after the second of three or more consecutive consonants
any consonantword-final after a consonantdisappears
s hafter a voiced consonantz ɦ
zafter a voiceless consonants
Syllables
vowel + hunstressed before vowel + hdisappears
h + vowelunstressed before h + voweldisappears
Consonants
kʷ ɡʷ ɠʷ ŋʷwkw wɡw wɠw wŋw
wbetween consonantsdisappears
before an initial consonant
after a final consonant
after u o ɔ ɒ and before a consonant
b d ɡβ ð ɣ
ɓ ɗ ɠb d ɡ
rɾ
any consonantintervocalically before a stressed vowelgeminates
+

Proto-Western → Old Sájura (-1000⁓-500)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vowels
ɨ ə aafter stressed syllablesdisappears
i e ɛ æj
u o ɔ ɒw
æ ɒa ɔ
long vowelsbefore j or wshortens
in closed syllables
Consonants
h ɦ ʔdisappears
n t ð d s z ɾ l + jɲ t͜ɕ j d͜ʑ ɕ ʑ ɾʲ ʎ
w j l ɾbetween consonantsu i o ə
+

Old Sájura → Old Purrub (-500⁓200)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vowels
long vowelsshorten
e oɛ ɔ
ɨɨ~ɯ
before initial vowelsinsertion of ʔ
intervocalically
Syllables
finallystressed
otherwisedunstressed
Consonants
m n ɲ ŋbefore m p b β wm
before n t d ð s z l ɾ rn
before ɲ t͜ɕ d͜ʑ ɕ ʑ ʎ ɾʲ jɲ
before ŋ k g ɣŋ
ðz
zafter t, d, or s and not before a vowel
lnot adjacent to a vowel
ʑ j ɾʲ ʎʑ~j
β wv~w
ɾ rʁ ʁʁ
(C)C₁C₂(C)intervocalicallyC₁C₁
initiallyC₁
finally
+

Old Purrub → Middle Purrub (200⁓900)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vowels
i ɛpre-stresse
u ɔo
ɯ ə aə
Consonants
ʁʁ llintervocalicallyχ ɫ
v ʑw j
z ɣdisappears
vv zz ʑʑ ɣɣv z ʑ ɣ
b d d͜ʑ g
bb dd dd͜ʑ ggb d d͜ʑ g
mm nn ɲɲ ŋŋmb nd ɲd͜ʑ ŋg
pp tt ss tt͜ɕ ɕɕ kkpʰ tʰ sʰ t͜ɕʰ ɕʰ kʰ
p t s t͜ɕ ɕ kinitially
b d d͜ʑ gp t t͜ɕ k
+

Middle Purrub → Early Modern Purrub (900⁓1400)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vowels
u o ɔunstressedafter a non-rounded vowelw
after a rounded voweldisappears
i e ɛafter a non-front vowelj
after a front voweldisappears
ɯafter a non-high vowelɰ
after a high voweldisappears
any vowelbefore a coda nasalnasalizes
j w ɰ
Consonants
pʰ tʰ sʰ t͜ɕʰ ɕʰ kʰɸ θ h ɕ ç x
m n ɲ ŋcodadisappears
t͜ɕ d͜ʑ ɕ ʑbefore a back vowelʈ͡ʂ ɖ͡ʐ ʂ ʐ
word finally after a back vowel
+

Early Modern Purrub → Modern Purrub (1400⁓1800)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vowels
ɯw əw ɯw̃ əw̃u o ũ õ
oɰ ɔɰ oɰ̃ ɔɰ̃
iw ew ɛw iw̃ ew̃ ɛw̃y ø œ ỹ ø̃ œ̃
uj oj ɔj uj̃ oj̃ ɔj̃
ɯj əj ɯj̃ əj̃i e ĩ ẽ
eɰ ɛɰ eɰ̃ ɛɰ̃
əɰ aɰ əɰ̃ aɰ̃ɯ ə ɯ̃ ə̃
aj aw aj̃ aw̃ɛ ɔ ɛ̃ ɔ̃
Consonants
x ɣχ ʁ
+

Old Sájura → Old Elkehen (-500⁓200)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vowels
i e ɛlongə̯i ei̯ ɛə̯
ɨ ə aə̯ɨ əɨ̯ aə̯
u o ɔə̯u ou̯ ɔə̯
ɛ ɔin open syllablese o
i e u oin closed syllablesɪ ɛ ʊ ɔ
ɨ aunstressedə
əstressedopen syllablesa
closed syllablesɨ
any vowelbefore a nasalnasalizes
Syllables
əw əjinitially before a consonantwə jə
Consonants
rʀ
ɾinitially
ɾ ɾʲbefore a voiced consonantʁ ʝ
word finally or before a voiceless consonantχ ç
following a consonantɻ j
ɣʁ
any consonantbetween two consonantsdisappears
final
+

Old Elkehen → Middle Elkehen (200⁓900)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vowels
ə̯i ei̯ ɛə̯aj iː ɛw
ə̯ɨ əɨ̯ aə̯aɨ̯
ə̯u ou̯ ɔə̯aw uː ɔj
u ʊshorty ʏ
Consonants
any consonantgeminatesimplifies
any nasalcodadisappears
t d s z + jt͜ɕ d͜ʑ ɕ ʑ
t d s z + ɻʈ͡ʂ ɖ͡ʐ ʂ ʐ
t͜ɕ d͜ʑ ɕ ʑ + ɻ
ɻ jafter voiced consonantsʐ ʑ
after voiceless consonantsʂ ɕ
ɾ ɾʲl ʎ
+

Middle Elkehen → Early Modern Elkehen (900⁓1400)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vowels
aj aɨ̯ awbefore a vowelej əɨ̯ ow
otherwiseɛ ə ɔ
ɛw ɔjin open syllablesø ɤ
in closed syllablesœ ʌ
i ulongshorten
nasal vowelsbefore a nasaldenasalize
any vowelfinally and unstresseddisappears
post-stress in non-final syllables
Consonants
βv
any fricativebefore another fricativedisappears
+

Early Modern Elkehen → Modern Elkehen (1400⁓1800)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vowels
ẽ ø̃ ɤ̃ õɛ̃ œ̃ ʌ̃ ɔ̃
ĩ ɪ̃
ỹ ʏ̃ø̃
ũõ
ɨ̃ə̃
Syllables
finallystressed
otherwiseunstressed
Consonants
p b v wfinally after p t t͜ɕ ʈ͡ʂ k b d d͜ʑ ɖ͡ʐ gu
t͜ɕ d͜ʑ ɕ ʑ ç ʝ ji
k g ɣɨ
t d ðə
+

Proto-Western → Proto Western B (-1000⁓-500)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vowels
i e ɛ æfollowed by a coda nasal
ɨ ə aə̃
u o ɔ ɒõ
Consonants
m n ŋafter a nasal voweldisappears
k g ɣbefore i e ɛt͜s d͜z ʒ
nj ŋjɲ
βv
j wafter a voiced consonantʒ v
after a voiceless consonantʃ f
word finally
h ɦbefore i e ɛ æʃ ʒ
before u o ɔ ɒf v
before ɨ ə ax ɣ
after i e ɛ æbefore a voiced consonantʒ
after u o ɔ ɒv
after ɨ ə aɣ
after i e ɛ æbefore a voiceless consonant or word finallyʃ
after u o ɔ ɒf
after ɨ ə ax
ʔbetween vowelsʔ
otherwisedisappears
s zadjacent to ʒʒ
s zadjacent to ʃʃ
+

Proto Western B → Old Western B (-500⁓-300)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vowels
i ɨ ulongə̯i ə̯ɨ ə̯u
e oeə̯ oə̯
ɛ ɔea̯ oa̯
æ ɒaːj aːw
stressedaj aw
unstressedɛ ɔ
+

Old Western B → Middle Western B (-300⁓100)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vowels
ə̯i ə̯ɨ ə̯uaj aɰ aw
eə̯ oə̯jo we
ea̯ oa̯ja wa
Consonants:
ʃ ʒʂ ʐ
m p b f vbefore i e ɛ jmʲ pʲ bʲ fʲ vʲ
n t d s z l ɾ rɲ t͜ɕ d͜ʑ ɕ ʑ ʎ ɾʲ rʲ
ŋ k g x ɣɲ c ɟ ç ʝ
jafter a palatalized consonantdisappears
+

Old Western B → Spanish? (-300⁓100)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vowels
ɨ əadjacent to m p b f v wu o
otherwisei a
ə̯i ə̯uaj aw
eə̯ oə̯je we
ea̯ oa̯ja wa
e ostressede o
unstressedi u
ɛ ɔstressedje we
unstressede o
Consonants
d͜z z ʒt͜s s ʃ
+

Proto-elejáw → Proto-Eastern (-3000⁓-1500)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vowels
ɨw ɘw ɜwbefore a vowelɨw ow ɛw
otherwiseu o ɔ
ɨŋʷ ɘŋʷ ɜŋʷ aŋʷbefore a vowelɨw̃ ow̃ ɛw̃ aw̃
otherwiseũ õ ɔ̃ aw̃
ɨj ɘj ɜjbefore a vowelɨj oj ɛj
otherwisei e ɛ
ɘ ɜo ɛ
Consonants
kʷ ɡʷ ɠʷp b ɓ
ɓ ɗ ɠmb nd ŋɡ
any consonantbefore mb nd ŋgdisappears
h ʔbetween two consonantsdisappears
word initial before a consonant
word final after a consonant
m n ŋbefore m, n, or ŋdisappears
adjacent to b or pm
adjacent to d or tn
adjacent to ɡ or kŋ
ŋʷafter b or pmw
after d or tnw
after ɡ or kŋw
after m, n, or ŋw
otherwise
+

Pre-Proto-Fluf → Proto-Fluf

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vowels
əafter a labialbefore a labialu
before a pharyngealo
before a dentalu
before l
before a palataly
before a labio-palatalu
before a velaru
before a glottalu
before a finallyu
after a pharyngealbefore a labialo
before a pharyngealɑ
before a dentalɑ
before l
before a palatale
before a labio-palatalø
before a velarɤ
before a glottalɑ
before a finallyɑ
after a dentalbefore a labialu
before a pharyngealɑ
before a dental
before l
before a palatali
before a labio-palataly
before a velarɯ
before a glottal
before a finally
after lbefore a labialu
before a pharyngealɑ
before a dental
before l
before a palatali
before a labio-palataly
before a velarɯ
before a glottalə
before a finallyə
after a palatalbefore a labialɯ
before a pharyngeale
before a dental
before l
before a palatali
before a labio-palataly
before a velari
before a glottali
before a finallyi
after a labio-palatalbefore a labialu
before a pharyngealø
before a dental
before l
before a palataly
before a labio-palataly
before a velari
before a glottaly
before a finallyy
after a velarbefore a labialɯ
before a pharyngealɤ
before a dentalɯ
before l
before a palatalɯ
before a labio-palatalu
before a velarɯ
before a glottalɯ
before a finallyɯ
after a glottalbefore a labialu
before a pharyngealɑ
before a dental
before l
before a palatali
before a labio-palataly
before a velarɯ
before a glottalə
before a finallyə
Consonants
β ɣbefore or afteru ɯdisappears
ʕɑ
z
l
ʝ ʝʷi y
hə
+

Fluf Harmony

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vowels
i ɯ e ɤ əy u ø owith last voweli y z̩iy
e øeø
i ɯ e ɤy u ø o əɯ u l̩ɯu
ɤ o aɤo
+

Proto-Fluf → Iealkh

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vowels
ɑa
y ɯø ɤ
e oɛ ɔ
Consonants
any nasalbefore a labialm
before a dentaln
before a pharyngeal
before a (labio-) palatalɲ
before a velarŋ
ɸ βf v
ħ ʕχ ʁ
(C)C₁C₂(C)intervocalicallyC₁C₁
initiallyC₁
finally
+

Iealkh → Old Purrub (-500⁓200)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Consonants
c ɟ ç ʝt͜ɕ d͜ʑ ɕ ʑ
cʷ ɟʷ çʷ ʝʷ
tˁ dˁt d
f ffadjacent to u ɔɸ
otherwisedisappears
∅ hbetween two vowels or initiallybefore u ɔɸ
before aʁ
before z̩s
before i ɛ øɕ
before ɤɣ
before ldisappears
Vowels
ø ɤɛ ɯ
after t d s
otherwiseɯz
z̩ + a consonantɯzz
+ + diff --git a/gmp/gmp.css b/gmp/gmp.css new file mode 100644 index 0000000..3b53cff --- /dev/null +++ b/gmp/gmp.css @@ -0,0 +1,47 @@ +* { + font-family: Code2000, Thryomanes, Gentium, + Lucida Sans Unicode, Arial Unicode; + font-size: 20px; +} +a { + color: #063; +} +a:hover{ + color: #096; +} +html { + background-color: #096; +} +table, th, td { + border: 2px solid #f60; + border-collapse: collapse; +} +table { + width: 50%; +} +td.c0, td.c2 { + white-space: nowrap; +} +td.c0.m, td.c1.m, td.s1.c0, td.s1.c1 { + border-right-width: 3px; +} +td.c1.m, td.c2.m, td.s0.c1, td.s0.c2 { + border-left-width: 3px; +} +td { + background-color: #fff; + padding: 0 .25em; + vertical-align: middle; +} +th { + background-color: #f93; + color: #063; +} +ul { + border: 2px solid #f60; + background-color: #f93; + left: 50%; + position: fixed; + list-style: disc; + width: 50%; +} \ No newline at end of file diff --git a/gmp/gmp.py b/gmp/gmp.py new file mode 100755 index 0000000..6dda389 --- /dev/null +++ b/gmp/gmp.py @@ -0,0 +1,153 @@ +#! /usr/bin/env python3 + +import argparse +import cgitb +import collections +import sys + +cgitb.enable(format='none') + + +parser = argparse.ArgumentParser() +parser.add_argument('--input', '-i') +parser.add_argument('--output', '-o') +parser.add_argument('--style', '-s', default='gmp.css') +parser.add_argument('--escape', '-e', action='store_true') + +args = parser.parse_args() + +class Reencoder(): + + def __init__(self, stream=sys.__stdout__): + self.stream = stream + + def write(self, *a): + return self.stream.write(*(reencode(s) for s in a)) + + def flush(self): + return self.stream.flush() + +reencode = lambda s: s.encode('ascii', 'xmlcharrefreplace').decode() + +if args.input == None: + inFile = sys.stdin +else: + inFile = open(args.input, 'r') +if args.output is not None: + sys.stdout = open(args.output, 'w') +if args.escape: + sys.stdout = Reencoder(sys.stdout) + +title = inFile.readline()[:-1] +lines = inFile.read().splitlines() +inFile.close() + +h2 = {} +h3 = {} + +table = [] +untaggedIndex = 0 + +tCells = [] +lastMerged = {} +lastSplit = collections.defaultdict(dict) + +tableOpen = False + +for i in range(len(lines)): + if lines[i][:3] == '!!!': + h3[len(table)] = lines[i][3:] + elif lines[i][:2] == '!!': + h2[len(table)] = lines[i][2:].split('#') + if len(h2[len(table)]) == 1: + h2[len(table)].append('untagged-' + str(untaggedIndex)) + untaggedIndex += 1 + elif lines[i][0] == '#': + continue + else: + table.append([c.split('\\', 1) for c in lines[i].split('|')]) + +for i in range(len(table)): + tCells.append([None] * len(table[i])) + for j in range(len(table[i])): + if len(table[i][j]) == 2: + tCells[i][j] = [0, 0] + if table[i][j][0] != '': + lastSplit[j][0] = i + tCells[lastSplit[j][0]][j][0] += 1 + if table[i][j][1] != '': + lastSplit[j][1] = i + tCells[lastSplit[j][1]][j][1] += 1 + else: + tCells[i][j] = [0] + if table[i][j][0] != '': + lastMerged[j] = [i] + tCells[lastMerged[j][0]][j][0] += 1 + +print('''\ + + + +''' + title + ''' + + + +

''' + title + '''

+') + +for i in range(len(table)): + if i in h2: + if tableOpen: + print('') + tableOpen = False + print('

' + h2[i][0] + '

') + if not tableOpen: + print('') + tableOpen = True + if i in h3: + print('') + print('') + for j in range(len(table[i])): + if len(tCells[i][j]) == 2: + if table[i][j][0] == '0': + tbw = '' + else: + tbw = table[i][j][0] + if tCells[i][j][0] > 1: + print('') + elif tCells[i][j][0] == 1: + print('') + if table[i][j][1] == '0': + tbw = '' + else: + tbw = table[i][j][1] + if tCells[i][j][1] > 1: + print('') + elif tCells[i][j][1] == 1: + print('') + else: + if table[i][j][0] == '0': + tbw = '' + else: + tbw = table[i][j][0] + if tCells[i][j][0] > 1: + print('') + elif tCells[i][j][0] == 1: + print('') + print('') + +if tableOpen: + print('
' + h3[i] + '
' + tbw + '' + tbw + '' + tbw + '' + tbw + '' + tbw + '' + tbw + + '
') + +print('\n') \ No newline at end of file