This module contains data used by Module:grc-pronunciation
local U = require("Module:string utilities").char
local gmatch = mw.ustring.gmatch
local m_utils_data = require("Module:grc-utilities/data")
local diacritics = m_utils_data.diacritics
local nonsyllabic = U(0x32F)
local high = U(0x341) -- combining acute tone mark
local low = U(0x340) -- combining grave tone mark
local midHigh = U(0x1DC4) -- mid–high pitch
local midLow = U(0x1DC6) -- mid–low pitch
local highMid = U(0x1DC7) -- high–mid pitch
local rising = U(0x30C) -- combining caron
local falling = diacritics.Latin_circum -- combining circumflex
local voiceless = U(0x325) -- combining ring below
local aspirated = "ʰ"
local stress_mark = "ˈ"
local long = "ː"
local macron = diacritics.spacing_macron
local breve = diacritics.spacing_breve
local circumflex_on_long_vowel = falling
local acute_on_long_vowel = rising
local acute_on_short_vowel = high
local grave_pitch_mark = low
local data = {}
-- Letters which can be treated as allographs of other letters.
data.aliases = {
= "χ",
= "κσ",
= "ϝ̔",
= "φ",
= "σ",
= "κ",
= "χ",
= "σ",
= "θ",
= "πσ"
}
data = {
= {
= " ",
= " ",
= " ",
= " ",
= " ",
},
}
data = {
= {
= "b",
= "b",
= {
{ "-1=μ", "b" },
"β"
},
= {
{ "-1=μ", "b" },
"v"
},
= {
{ "1=β", "" },
{ "-1=μ", "b" },
"v",
},
},
}
data = {
= {
= {
{ "1.dorsal/1=μ", "ŋ" },
"ɡ",
},
= {
{ "1.dorsal", "ŋ" },
"ɡ",
},
= {
{ "1.dorsal",
{
{ "1~preFront", "ɲ" },
"ŋ",
},
},
{ "0~preFront",
{
{ "-1=γ/-1=ν", "ɟ" },
"ʝ",
},
},
{ "-1=γ/-1=ν", "ɡ" },
"ɣ", },
= {
{ "1.dorsal",
{
{ "1~preFront", "ɲ" },
"ŋ",
},
},
{ "0~preFront",
{
{ "-1=γ/-1=ν", "ɟ" },
"ʝ",
},
},
{ "-1=γ/-1=ν", "ɡ" },
"ɣ",
},
= {
{ "1.dorsal",
{
{ "1~preFront", "ɲ" },
"ŋ",
},
},
{ "0~preFront",
{
{ "-1=γ/-1=ν", "ɟ" },
"ʝ",
},
},
{ "-1=γ/-1=ν", "ɡ" },
"ɣ",
},
},
}
data = {
= {
= "d",
= "d",
= {
{ "-1=ν", "d" },
"ð",
},
= {
{ "-1=ν", "d" },
"ð",
},
= {
{ "1=δ", "" },
{ "-1=ν", "d" },
"ð",
},
},
}
data = {
= {
{ "1=̓/1=̔", 1 },
0,
},
= {
= "w",
= "",
= "",
= "",
= "",
},
}
data = {
= {
= "w",
= "",
= "",
= "",
= "",
},
}
data = {
= {
= "ʍ",
= "(h)",
= "",
= "",
= "",
},
}
data = {
= {
= "zd",
= "z",
= "z",
= "z",
= {
{ "1=ζ", "" },
"z",
},
},
}
data = {
= {
= "h",
= "(h)",
= "",
= "",
= "",
},
}
data = {
= {
= "tʰ",
= "tʰ",
= "θ",
= "θ",
= {
{ "1=θ", "" },
"θ",
},
},
}
data = {
= {
= "j",
= "j",
= "j",
= "j",
= "j",
},
}
data = {
= {
= {
{ "1.voiced+1.stop", "ɡ" },
{ "1.aspirated", "kʰ" },
"k",
},
= {
{ "1.voiced+1.stop", "ɡ" },
"k",
},
= {
{ "1=κ", "" },
{ "1.voiced+1.stop", "ɡ" },
{ "-1=γ/-1=ν",
{
{ "0~preFront", "ɟ" },
{ "1.unvoiced", "k" },
"ɡ",
},
},
{ "0~preFront", "c" },
"k",
},
= {
{ "1=κ", "" },
{ "1.voiced+1.stop", "ɡ" },
{ "-1=γ/-1=ν",
{
{ "0~preFront", "ɟ" },
{ "1.unvoiced", "k" },
"ɡ",
},
},
{ "0~preFront", "c" },
"k",
},
= {
{ "1=κ", "" },
{ "1.voiced+1.stop", "ɡ" },
{ "-1=γ/-1=ν",
{
{ "0~preFront", "ɟ" },
{ "1.unvoiced", "k" },
"ɡ",
},
},
{ "0~preFront", "c" },
"k",
},
},
}
data = {
= {
= "l",
= "l",
= "l",
= "l",
= {
{ "1=λ", "" },
"l",
},
},
}
data = {
= {
= "m",
= "m",
= "m",
= "m",
= {
{ "1=μ", "" },
"m",
},
},
}
data = {
= {
= "n",
= "n",
= "n",
= "n",
= {
{ "1=ν", "" },
"n",
},
},
}
data = {
= {
= {
{ "1.aspirated", "pʰ" },
"p",
},
= "p",
= "p",
= "p",
= {
{ "-1=μ",
{
{ "1.unvoiced", "p" },
"b",
},
},
{ "1=π", "" },
"p",
},
},
}
data = {
= {
= {
{ "1=ρ/1=ῥ/-1=ρ/-1=ῤ/-1=ῥ", "r̥" },
"r",
},
= "r",
= "r",
= "r",
= {
{ "1=ρ/1=ῤ/1=ῥ", "" },
"r",
},
},
}
data = {
= {
= {
{ "1=ρ/1=ῥ", "r̥" },
"r",
},
= "r",
= "r",
= "r",
= {
{ "1=ρ/1=ῤ/1=ῥ", "" },
"r",
},
},
}
data = {
= {
= "r̥",
= "r",
= "r",
= "r",
= {
{ "1=ρ/1=ῤ/1=ῥ", "" },
"r",
},
},
}
data = {
= {
= {
{ "1.voiced", "z" },
"s",
},
= {
{ "1.voiced", "z" },
"s",
},
= {
{ "1.voiced", "z" },
"s",
},
= {
{ "1.voiced", "z" },
"s",
},
= {
{ "1=σ", "" },
{ "1.voiced", "z" },
"s",
},
},
}
data = {
= {
= {
{ "1.aspirated", "tʰ" },
"t",
},
= "t",
= "t",
= "t",
= {
{ "-1=ν", "d" },
{ "1=τ", "" },
"t",
},
},
}
data = {
= {
= "pʰ",
= "pʰ",
= "ɸ",
= "f",
= {
{ "1=φ", "" },
"f",
},
},
}
data = {
= {
= "kʰ",
= "kʰ",
= {
{ "1=χ", "" },
{ "0~preFront", "ç" },
"x" },
= {
{ "1=χ", "" },
{ "0~preFront", "ç" },
"x" },
= {
{ "1=χ", "" },
{ "0~preFront", "ç" },
"x",
},
},
}
data = {
= {
{ "0~hasMacronBreve",
{
{ "1~isUDiphth", 2 },
1,
},
},
{ "0~isIDiphth/0~isUDiphth", 1},
0,
},
= {
= "a",
= "a",
= "a",
= "a",
= "a",
},
}
data = {
= {
{ "0~isIDiphth/0~isUDiphth", 1},
0,
},
= {
= "e",
= "e",
= "e",
= "e",
= "e",
},
}
data = {
= {
{ "0~isUDiphth", 1},
0,
},
= {
= "ɛ",
= "e̝",
= "i",
= "i",
= "i",
},
}
data = {
= {
= "i",
= "i",
= "i",
= "i",
= "i",
},
}
data = {
= {
{ "0~isIDiphth/0~isUDiphth", 1},
0,
},
= {
= "o",
= "o",
= "o",
= "o",
= "o",
},
}
data = {
= {
{ "0~isIDiphth/0~hasMacronBreve", 1},
0,
},
= {
= "y",
= "y",
= "y",
= "y",
= "i",
},
}
data = {
= {
{ "0~isUDiphth", 1},
0,
},
= {
= "ɔ",
= "o",
= "o",
= "o",
= "o",
},
}
local categories = {
= {
= { "π", "τ", "κ", "β", "δ", "γ", "φ", "θ", "χ" },
= { "κ", "γ", "χ" },
= { "β", "δ", "γ", "ζ", "μ", "ν", "λ", "ρ", "ϝ", "ϳ" },
= { "π", "τ", "κ", "φ", "θ", "χ", "σ", "ͱ" },
= { "φ", "θ", "χ", "ͱ" },
= { "ϊ", "ϋ", "ΐ", "ΰ", "ῒ", "ῢ", "ῗ", "ῧ" },
= { "ᾳ", "ῃ", "ῳ", "ᾴ", "ῄ", "ῴ", "ᾲ", "ῂ", "ῲ", "ᾷ", "ῇ", "ῷ", "ᾀ", "ᾐ", "ᾠ", "ᾄ", "ᾔ", "ᾤ", "ᾂ", "ᾒ", "ᾢ", "ᾆ", "ᾖ", "ᾦ", "ᾁ", "ᾑ", "ᾡ", "ᾅ", "ᾕ", "ᾥ", "ᾃ", "ᾓ", "ᾣ", "ᾇ", "ᾗ", "ᾧ" },
},
= {
= { "α", "ε", "η", "ι", "ο", "ω", "υ" }, -- Not currently used; if it were, it might need to include all the accented vowel characters.
= { "β", "γ", "δ", "ζ", "ͱ", "θ", "ϳ", "κ", "λ", "μ", "ν", "π", "ρ", "σ", "τ", "φ", "χ" },
= { "η", "ω", "ᾱ", "ῑ", "ῡ" },
= { "ε", "ο", "ᾰ", "ῐ", "ῠ" },
= { "α", "ι", "υ" },
= { diacritics.macron, diacritics.spacing_macron, diacritics.modifier_macron, diacritics.breve, diacritics.spacing_breve, diacritics.rough, diacritics.smooth, diacritics.diaeresis, diacritics.acute, diacritics.grave, diacritics.circum, diacritics.Latin_circum, diacritics.coronis, diacritics.subscript },
},
= {
= { "ά", "έ", "ή", "ί", "ό", "ύ", "ώ", "ᾴ", "ῄ", "ῴ", "ἄ", "ἔ", "ἤ", "ἴ", "ὄ", "ὔ", "ὤ", "ᾄ", "ᾔ", "ᾤ", "ἅ", "ἕ", "ἥ", "ἵ", "ὅ", "ὕ", "ὥ", "ᾅ", "ᾕ", "ᾥ", "ΐ", "ΰ" },
= { "ὰ", "ὲ", "ὴ", "ὶ", "ὸ", "ὺ", "ὼ", "ᾲ", "ῂ", "ῲ", "ἂ", "ἒ", "ἢ", "ἲ", "ὂ", "ὒ", "ὢ", "ᾂ", "ᾒ", "ᾢ", "ἃ", "ἓ", "ἣ", "ἳ", "ὃ", "ὓ", "ὣ", "ᾃ", "ᾓ", "ᾣ", "ῒ", "ῢ" },
= { "ᾶ", "ῆ", "ῖ", "ῦ", "ῶ", "ᾷ", "ῇ", "ῷ", "ἆ", "ἦ", "ἶ", "ὖ", "ὦ", "ᾆ", "ᾖ", "ᾦ", "ἇ", "ἧ", "ἷ", "ὗ", "ὧ", "ᾇ", "ᾗ", "ᾧ", "ῗ", "ῧ" },
},
= {
= { "ἁ", "ἑ", "ἡ", "ἱ", "ὁ", "ὑ", "ὡ", "ᾁ", "ᾑ", "ᾡ", "ἅ", "ἕ", "ἥ", "ἵ", "ὅ", "ὕ", "ὥ", "ᾅ", "ᾕ", "ᾥ", "ἃ", "ἓ", "ἣ", "ἳ", "ὃ", "ὓ", "ὣ", "ᾃ", "ᾓ", "ᾣ", "ἇ", "ἧ", "ἷ", "ὗ", "ὧ", "ᾇ", "ᾗ", "ᾧ" },
= { "ἀ", "ἐ", "ἠ", "ἰ", "ὀ", "ὐ", "ὠ", "ᾀ", "ᾐ", "ᾠ", "ῤ", "ἄ", "ἔ", "ἤ", "ἴ", "ὄ", "ὔ", "ὤ", "ᾄ", "ᾔ", "ᾤ", "ἂ", "ἒ", "ἢ", "ἲ", "ὂ", "ὒ", "ὢ", "ᾂ", "ᾒ", "ᾢ", "ἆ", "ἦ", "ἶ", "ὖ", "ὦ", "ᾆ", "ᾖ", "ᾦ" },
},
}
for key1, list in pairs(categories) do
for key2, letters in pairs(list) do
if type(key1) == "number" then
for _, letter in ipairs(letters) do
if not data then
data = {}
end
data = true
end
elseif type(key1) == "string" then
for _, letter in ipairs(letters) do
if not data then
data = {}
end
data = key2
end
end
end
end
local rough_breathing = { "h", "(h)" }
local smooth_breathing = { "", "" }
local function get_breathing(breathing)
return breathing == "rough" and rough_breathing or smooth_breathing
end
local function get_pitch_marks(accent_type, long)
if accent_type == "acute" then
if long then
return acute_on_long_vowel
else
return acute_on_short_vowel
end
elseif accent_type == "grave" then
return grave_pitch_mark
elseif accent_type == "circum" then
return circumflex_on_long_vowel
end
return ""
end
local function epsilon(breathing, accent)
local breathing = get_breathing(breathing)
local stress = accent and stress_mark or ""
local pitch = get_pitch_marks(accent, false)
return {
= breathing .. "e" .. pitch,
= breathing .. stress .. "e",
= stress .. "e",
= stress .. "e",
= stress .. "e"
}
end
for letter in gmatch("εέὲἐἔἒἑἕἓ", ".") do
local l_data = data
l_data.p = epsilon(l_data.breath, l_data.accent)
end
local function omicron(breathing, accent)
local breathing = get_breathing(breathing)
local stress = accent and stress_mark or ""
local pitch = get_pitch_marks(accent, false)
return {
= breathing .. "o" .. pitch,
= breathing .. stress .. "o",
= stress .. "o",
= stress .. "o",
= stress .. "o"
}
end
for letter in gmatch("οόὸὀὄὂὁὅὃ", ".") do
local l_data = data
l_data.p = omicron(l_data.breath, l_data.accent)
end
local function eta(breathing, accent, iota)
local breathing = get_breathing(breathing)
local stress = accent and stress_mark or ""
local pitch = get_pitch_marks(accent, true)
local offglide = iota and ("i" .. nonsyllabic) or ""
return {
= breathing .. "ɛ" .. pitch .. long .. offglide,
= breathing .. stress .. "e̝",
= stress .. "i",
= stress .. "i",
= stress .. "i"
}
end
for letter in gmatch("ηῃήῄὴῂῆῇἠᾐἤᾔἢᾒἦᾖἡᾑἥᾕἣᾓἧᾗ", ".") do
local l_data = data
l_data.p = eta(l_data.breath, l_data.accent, l_data.subi)
end
local function omega(breathing, accent, iota)
local breathing = get_breathing(breathing)
local stress = accent and stress_mark or ""
local pitch = get_pitch_marks(accent, true)
local offglide = iota and ("i" .. nonsyllabic) or ""
return {
= breathing .. "ɔ" .. pitch .. long .. offglide,
= breathing .. stress .. "o",
= stress .. "o",
= stress .. "o",
= stress .. "o"
}
end
for letter in gmatch("ωῳώῴὼῲῶῷὠᾠὤᾤὢᾢὦᾦὡᾡὥᾥὣᾣὧᾧ", ".") do
local l_data = data
l_data.p = omega(l_data.breath, l_data.accent, l_data.subi)
end
local function alpha(breathing, accent, iota, isLong)
local breathing = get_breathing(breathing)
local stress = accent and stress_mark or ""
local pitch = get_pitch_marks(accent, isLong)
local length = (isLong or iota or accent == "circum") and long or ""
local offglide = iota and ("i" .. nonsyllabic) or ""
return {
= breathing .. "a" .. pitch .. length .. offglide,
= breathing .. stress .. "a",
= stress .. "a",
= stress .. "a",
= stress .. "a"
}
end
for letter in gmatch("αᾳάᾴὰᾲᾶᾷἀᾀἄᾄἂᾂἆᾆἁᾁἅᾅἃᾃἇᾇ", ".") do
local l_data = data
l_data.p = alpha(l_data.breath, l_data.accent, l_data.subi)
if not l_data.subi and l_data.accent ~= "circum" then
if not l_data.pre then
l_data.pre = { { "0~hasMacronBreve", 1}, 0 }
end
data = {p = alpha(l_data.breath, l_data.accent, false, false)}
data = {p = alpha(l_data.breath, l_data.accent, false, true)}
end
end
local function iota(breathing, accent, isLong)
local breathing = get_breathing(breathing)
local stress = accent and stress_mark or ""
local pitch = get_pitch_marks(accent, isLong)
local length = (isLong or accent == "circum") and long or ""
return {
= breathing .. "i" .. pitch .. length,
= breathing .. stress .. "i",
= stress .. "i",
= stress .. "i",
= stress .. "i"
}
end
local function ai(breathing, accent)
local breathing = get_breathing(breathing)
local stress = accent and stress_mark or ""
local pitch = get_pitch_marks(accent, true)
return {
= breathing .. "a" .. pitch .. "i" .. nonsyllabic,
= breathing .. stress .. "ɛ",
= stress .. "ɛ",
= stress .. "e",
= stress .. "e"
}
end
local function ei(breathing, accent)
local breathing = get_breathing(breathing)
local stress = accent and stress_mark or ""
local pitch = get_pitch_marks(accent, true)
return {
= breathing .. "e" .. pitch .. long,
= breathing .. stress .. "i",
= stress .. "i",
= stress .. "i",
= stress .. "i"
}
end
local function oi(breathing, accent)
local breathing = get_breathing(breathing)
local stress = accent and stress_mark or ""
local pitch = get_pitch_marks(accent, true)
return {
= breathing .. "o" .. pitch .. "i" .. nonsyllabic,
= breathing .. stress .. "y",
= stress .. "y",
= stress .. "y",
= stress .. "i"
}
end
local function ui(breathing, accent)
local breathing = get_breathing(breathing)
local stress = accent and stress_mark or ""
local pitch = get_pitch_marks(accent, true)
return {
= breathing .. "y" .. pitch .. long,
= breathing .. stress .. "y",
= stress .. "y",
= stress .. "y",
= stress .. "i"
}
end
for letter in gmatch("ιίὶῖἰἴἲἶἱἵἳἷϊΐῒῗ", ".") do
local l_data = data
l_data.p = iota(l_data.breath, l_data.accent)
if l_data.accent ~= "circum" then
l_data.pre = { { "0~hasMacronBreve", 1}, 0 }
data = {p = iota(l_data.breath, l_data.accent, false)}
data = {p = iota(l_data.breath, l_data.accent, true)}
end
if not l_data.diar then
local ai_data = ai(l_data.breath, l_data.accent)
data = {p = ai_data}
data = {p = ai_data}
data = {p = ei(l_data.breath, l_data.accent)}
data = {p = oi(l_data.breath, l_data.accent)}
local ui_data = ui(l_data.breath, l_data.accent)
data = {p = ui_data}
data = {p = ui_data}
end
end
local function upsilon(breathing, accent, isLong)
local breathing = get_breathing(breathing)
local stress = accent and stress_mark or ""
local pitch = get_pitch_marks(accent, isLong)
local length = (isLong or accent == "circum") and long or ""
return {
= breathing .. "y" .. pitch .. length,
= breathing .. stress .. "y",
= stress .. "y",
= stress .. "y",
= stress .. "i"
}
end
local function au(breathing, accent)
local breathing = get_breathing(breathing)
local stress = accent and stress_mark or ""
local pitch = get_pitch_marks(accent, true)
return {
= breathing .. "a" .. pitch .. "u" .. nonsyllabic,
= {
{"2=σ+3=μ", stress .. "a" .. "w"},
{"2.unvoiced", breathing .. stress .. "a" .. "ʍ"},
breathing .. stress .. "a" .. "w",
},
= {
{"2=σ+3=μ", stress .. "aβ" },
{ "2.unvoiced", stress .. "aɸ" },
stress .. "aβ",
},
= {
{"2=σ+3=μ", stress .. "av" },
{ "2.unvoiced", stress .. "af" },
stress .. "av",
},
= {
{"2=σ+3=μ", stress .. "av" },
{ "2.unvoiced", stress .. "af" },
stress .. "av",
},
}
end
local function aau(breathing, accent)
local breathing = get_breathing(breathing)
local stress = accent and stress_mark or ""
local pitch = get_pitch_marks(accent, true)
return {
= breathing .. "a" .. pitch .. "ːu" .. nonsyllabic,
= {
{"2=σ+3=μ", stress .. "a" .. "w"},
{"2.unvoiced", breathing .. stress .. "a" .. "ʍ"},
breathing .. stress .. "a" .. "w",
},
= {
{"2=σ+3=μ", stress .. "aβ" },
{ "2.unvoiced", stress .. "aɸ" },
stress .. "aβ",
},
= {
{"2=σ+3=μ", stress .. "av" },
{ "2.unvoiced", stress .. "af" },
stress .. "av",
},
= {
{"2=σ+3=μ", stress .. "av" },
{ "2.unvoiced", stress .. "af" },
stress .. "av",
},
}
end
local function eu(breathing, accent)
local breathing = get_breathing(breathing)
local stress = accent and stress_mark or ""
local pitch = get_pitch_marks(accent, true)
return {
= breathing .. "e" .. pitch .. "u" .. nonsyllabic,
= {
{"2=σ+3=μ", stress .. "e" .. "w"},
{"2.unvoiced+3=μ", breathing .. stress .. "e" .. "ʍ"},
breathing .. stress .. "e" .. "w",
},
= {
{"2=σ+3=μ", stress .. "eβ" },
{ "2.unvoiced", stress .. "eɸ" },
stress .. "eβ",
},
= {
{"2=σ+3=μ", stress .. "ev" },
{ "2.unvoiced", stress .. "ef" },
stress .. "ev",
},
= {
{"2=σ+3=μ", stress .. "ev" },
{ "2.unvoiced", stress .. "ef" },
stress .. "ev",
},
}
end
local function hu(breathing, accent)
local breathing = get_breathing(breathing)
local stress = accent and stress_mark or ""
local pitch = get_pitch_marks(accent, true)
return {
= breathing .. "ɛ" .. pitch .. "ːu" .. nonsyllabic,
= {
{"2=σ+3=μ", stress .. "e̝" .. "w"},
{"2.unvoiced", breathing .. stress .. "e̝" .. "ʍ"},
breathing .. stress .. "e̝" .. "w",
},
= {
{"2=σ+3=μ", stress .. "iβ" },
{ "2.unvoiced", stress .. "iɸ" },
stress .. "iβ",
},
= {
{"2=σ+3=μ", stress .. "iv" },
{ "2.unvoiced", stress .. "if" },
stress .. "iv",
},
= {
{"2=σ+3=μ", stress .. "iv" },
{ "2.unvoiced", stress .. "if" },
stress .. "iv",
},
}
end
local function ou(breathing, accent)
local breathing = get_breathing(breathing)
local stress = accent and stress_mark or ""
local pitch = get_pitch_marks(accent, true)
return {
= breathing .. "u" .. pitch .. long,
= breathing .. stress .. "u",
= stress .. "u",
= stress .. "u",
= stress .. "u"
}
end
local function wu(breathing, accent)
local breathing = get_breathing(breathing)
local stress = accent and stress_mark or ""
local pitch = get_pitch_marks(accent, true)
return {
= breathing .. "ɔ" .. pitch .. "ːu" .. nonsyllabic,
= {
{"2=σ+3=μ", stress .. "o" .. "w"},
{"2.unvoiced", breathing .. stress .. "o" .. "ʍ"},
breathing .. stress .. "o" .. "w",
},
= {
{"2=σ+3=μ", stress .. "oβ" },
{ "2.unvoiced", stress .. "oɸ" },
stress .. "oβ",
},
= {
{"2=σ+3=μ", stress .. "ov" },
{ "2.unvoiced", stress .. "of" },
stress .. "ov",
},
= {
{"2=σ+3=μ", stress .. "ov" },
{ "2.unvoiced", stress .. "of" },
stress .. "ov",
},
}
end
for letter in gmatch("υύὺῦὐὔὒὖὑὕὓὗϋΰῢῧ", ".") do
local l_data = data
l_data.p = upsilon(l_data.breath, l_data.accent)
if l_data.accent ~= "circum" then
if letter ~= "υ" then l_data.pre = { { "0~hasMacronBreve", 1}, 0 } end
data = {p = upsilon(l_data.breath, l_data.accent, false)}
data = {p = upsilon(l_data.breath, l_data.accent, true)}
end
if not l_data.diar then
local au_data = au(l_data.breath, l_data.accent)
data = {p = au_data}
data = {p = au_data}
data = {p = aau(l_data.breath, l_data.accent)}
data = {p = eu(l_data.breath, l_data.accent)}
data = {p = hu(l_data.breath, l_data.accent)}
data = {p = ou(l_data.breath, l_data.accent)}
data = {p = wu(l_data.breath, l_data.accent)}
end
end
data = {
= "bɡŋdzklmnprstβðɣɸθxfvɟʝcçwʍj",
= "aeiouyɛɔ",
= high .. low .. midHigh .. midLow .. highMid .. long .. aspirated .. voiceless .. nonsyllabic .. rising .. falling,
= "rln",
= "bɡdkptβðɣɸθxfv",
= "ι",
= "ιηευ",
= "ϊΐῒῗ",
= "ηω",
= "εο",
= "αιυ",
= "αεηο", -- first members for diphthongs ending in "υ"
= "αεου", -- first members for diphthongs ending in "ι"
= m_utils_data.all,
= m_utils_data.consonants
}
data.chars.frontDiphthong = data.chars.frontDiphth
return data