Skip to content

Commit

Permalink
Orient nasal vowel letters more correctly
Browse files Browse the repository at this point in the history
  • Loading branch information
dscorbett committed Dec 14, 2024
1 parent 147edcd commit a933a79
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 16 deletions.
25 changes: 17 additions & 8 deletions assets/js/transliterate.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ function transliterate(inputValue, autosyllabify = true, textBefore = '') {
.replace(/^<0\+>$/, '\u{1BC9C}')
.replace(/^<x+>$/i, m => '\u2E3C'.repeat(m.length - 2))
.replaceAll(/£(?=£*\p{L})|(?<=\p{L}£*)£(?!£*\d)/gu, 'Ɬ')
.replaceAll(/(?<=[aeiouəAEIOUƏ])N/g, '\u0303')
.replaceAll('X', 'χ')
.replaceAll(RegExp(`(?<=[${wordCharacter}])E`, 'gu'), 'ᴇ')
.replaceAll(/(?<=\p{L}\p{M}*)(?!Ø)\p{Upper}/gu, '\u{1BCA1}$&')
Expand Down Expand Up @@ -226,10 +227,10 @@ function transliterate(inputValue, autosyllabify = true, textBefore = '') {
.replaceAll('ī', '\u{1BC46}\u0323')
.replaceAll('ü', '\u{1BC51}')
.replaceAll('ǖ', '\u{1BC53}')
.replaceAll('ã', '\u{1BC64}\u0301')
.replaceAll('ĩ', '\u{1BC64}\u0300')
.replaceAll('õ', '\u{1BC62}\u0317')
.replaceAll('ũ', '\u{1BC62}\u0316')
.replaceAll('ã', '\u{1BC64}')
.replaceAll('ĩ', '\u{1BC63}')
.replaceAll('õ', '\u{1BC62}')
.replaceAll('ũ', '\u{1BC61}')
.replaceAll('ω', '\u{1BC5D}')
.replaceAll('ι', '\u{1BC5E}')
.replaceAll('η', '\u{1BC5F}')
Expand Down Expand Up @@ -294,10 +295,18 @@ function transliterate(inputValue, autosyllabify = true, textBefore = '') {
.replaceAll(RegExp(consonantalI, 'gu'), '\u{1BC4A}')
.replaceAll(RegExp(`(?<=${nConsonant}${circleVowel})${iVowel}(?=${hConsonant}|\\P{L}|$)`, 'gu'), '\u{1BC4B}')
.replaceAll(RegExp(`(?<=${nConsonant}${circleVowel})(?!.P)${iVowel}`, 'gu'), '$&R')
.replaceAll(/(?<!\p{L})\u{1BC62}\u0316(?!\p{L})/gu, '\u{1BC61}')
.replaceAll(/(?<!\p{L})\u{1BC62}\u0317(?!\p{L})/gu, '\u{1BC62}')
.replaceAll(/(?<!\p{L})\u{1BC64}\u0300(?!\p{L})/gu, '\u{1BC63}')
.replaceAll(/(?<!\p{L})\u{1BC64}\u0301(?!\p{L})/gu, '\u{1BC64}')
.replaceAll(RegExp(`(?<=^|\\P{L}|${hConsonant})\u{1BC64}(?!${hConsonant}|\\P{L}|$)`, 'gu'), '\u{1BC64}\u0301')
.replaceAll(RegExp(`(?<=^|\\P{L}|${hConsonant})\u{1BC63}(?!${hConsonant}|\\P{L}|$)`, 'gu'), '\u{1BC64}\u0300')
.replaceAll(RegExp(`(?<=^|\\P{L}|${hConsonant})\u{1BC62}(?!${hConsonant}|\\P{L}|$)`, 'gu'), '\u{1BC64}\u0317')
.replaceAll(RegExp(`(?<=^|\\P{L}|${hConsonant})\u{1BC61}(?!${hConsonant}|\\P{L}|$)`, 'gu'), '\u{1BC64}\u0316')
.replaceAll(RegExp(`\u{1BC64}(?=[\u0300\u0301\u0316\u0317](${tConsonant}|${lConsonant}|${curveConsonant}))`, 'gu'), '\u{1BC62}')
.replaceAll(RegExp(`(?<!^|[^\\p{L}\\p{M}]|${hConsonant})\u{1BC64}`, 'gu'), '\u{1BC64}\u0301')
.replaceAll(RegExp(`(?<!^|[^\\p{L}\\p{M}]|${hConsonant})\u{1BC63}`, 'gu'), '\u{1BC64}\u0300')
.replaceAll(RegExp(`(?<!^|[^\\p{L}\\p{M}]|${hConsonant})\u{1BC62}`, 'gu'), '\u{1BC62}\u0317')
.replaceAll(RegExp(`(?<!^|[^\\p{L}\\p{M}]|${hConsonant})\u{1BC61}`, 'gu'), '\u{1BC62}\u0316')
.replaceAll(RegExp(`(?<=${lConsonant}|${curveConsonant})\u{1BC64}(?=[\u0300\u0301])`, 'gu'), '\u{1BC62}')
.replaceAll(RegExp(`(?<=${kConsonant})\u{1BC62}(?=[\u0316\u0317])`, 'gu'), '\u{1BC64}')
.replaceAll(RegExp(`(?<=${vowel}[PR]?\\p{M}*)\u{1BC64}(?=[\u0300\u0301\u0316\u0317])`, 'gu'), '\u{1BC62}')
.replaceAll(RegExp(`(?<=^|\\P{L}|${hConsonant})\u{1BC41}(?=\u{1BC46}(${hConsonant}|\\P{L}|$))`, 'gu'), '$&R')
.replaceAll(RegExp(`(?<=^|\\P{L}|${hConsonant})${reversibleCircleVowel}(?=\u{1BC46}(?!${hConsonant}|\\P{L}|$))`, 'gu'), '$&R')
.replaceAll(RegExp(`(?<=(^|\\P{L}|${hConsonant})${normalCircleVowel})\u{1BC46}(?=${hConsonant}|\\P{L}|$)`, 'gu'), '$&R')
Expand Down
16 changes: 8 additions & 8 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -112,10 +112,10 @@
<li class="alt"><span class="keycap Dupl">𛱒</span><span class="hint">yu\2</span>
<li class="normal"><span class="keycap Dupl">𛱓</span><span class="hint">eu</span>
<li class="alt"><span class="keycap Dupl">𛱓&#x034F;&#x034F;&#x034F;</span><span class="hint">eu\2</span>
<li class="normal"><span class="keycap Dupl">𛱤</span><span class="hint">a~</span>
<li class="alt"><span class="keycap Dupl">𛱢</span><span class="hint">o~</span>
<li class="non-orienting"><span class="keycap Dupl">𛱣</span><span class="hint">i~</span>
<li class="non-orienting"><span class="keycap Dupl">𛱡</span><span class="hint">u~</span>
<li class="normal"><span class="keycap Dupl">𛱤</span><span class="hint">aN</span>
<li class="alt"><span class="keycap Dupl">𛱢</span><span class="hint">oN</span>
<li class="non-orienting"><span class="keycap Dupl">𛱣</span><span class="hint">iN</span>
<li class="non-orienting"><span class="keycap Dupl">𛱡</span><span class="hint">uN</span>
<li class="normal"><span class="keycap Dupl">𛱝</span><span class="hint">wo</span>
<li class="alt"><span class="keycap Dupl">𛱝&#x034F;&#x034F;&#x034F;</span><span class="hint">wo\2</span>
<li class="normal"><span class="keycap Dupl">𛱞</span><span class="hint">wi</span>
Expand Down Expand Up @@ -149,10 +149,10 @@
<li class="normal"><span class="keycap Dupl">»</span><span class="hint">&gt;&gt;</span>
<li class="normal"><span class="keycap Dupl"></span><span class="hint">'</span>
<li class="normal"><span class="keycap Dupl"></span><span class="hint" data-prefix="'d">'</span>
<li class="normal"><span class="keycap Dupl">◌́</span><span class="info">Stress mark; on <span class="to-transliterate">a~</span>: “an” (English <span lang="en-fonipa">/æn/</span>, French <span lang="fr-fonipa">/ɑ̃/</span>)</span>
<li class="normal"><span class="keycap Dupl">◌̀</span><span class="info">Stress mark; on <span class="to-transliterate">i~</span>: “in” (English <span lang="en-fonipa">/ɪn/</span>, French <span lang="fr-fonipa">/ɛ̃/</span>)</span>
<li class="normal"><span class="keycap Dupl">◌̗</span><span class="info">On <span class="to-transliterate">o~</span>: “on” (English <span lang="en-fonipa">/ɒn/</span>, French <span lang="fr-fonipa">/ɔ̃/</span>)</span>
<li class="normal"><span class="keycap Dupl">◌̖</span><span class="info">On <span class="to-transliterate">u~</span>: “un” (English <span lang="en-fonipa">/ɐn/</span>, French <span lang="fr-fonipa">/œ̃/</span>)</span>
<li class="normal"><span class="keycap Dupl">◌́</span><span class="info">Stress mark; on <span class="to-transliterate">aN</span>: “an” (English <span lang="en-fonipa">/æn/</span>, French <span lang="fr-fonipa">/ɑ̃/</span>)</span>
<li class="normal"><span class="keycap Dupl">◌̀</span><span class="info">Stress mark; on <span class="to-transliterate">iN</span>: “in” (English <span lang="en-fonipa">/ɪn/</span>, French <span lang="fr-fonipa">/ɛ̃/</span>)</span>
<li class="normal"><span class="keycap Dupl">◌̗</span><span class="info">On <span class="to-transliterate">oN</span>: “on” (English <span lang="en-fonipa">/ɒn/</span>, French <span lang="fr-fonipa">/ɔ̃/</span>)</span>
<li class="normal"><span class="keycap Dupl">◌̖</span><span class="info">On <span class="to-transliterate">uN</span>: “un” (English <span lang="en-fonipa">/ɐn/</span>, French <span lang="fr-fonipa">/œ̃/</span>)</span>
<li class="normal"><span class="keycap Dupl">◌̇</span><span class="info">On <span class="to-transliterate">i</span>: <span lang="und-fonipa">/i/</span> or <span lang="und-fonipa">/ɪ/</span></span>
<li class="normal"><span class="keycap Dupl">◌̣</span><span class="info">On <span class="to-transliterate">i</span>: <span lang="und-fonipa">/ɛ/</span></span>
<li class="normal"><span class="keycap Dupl">◌̄</span><span class="info">On <span class="to-transliterate">i</span>: <span lang="und-fonipa">/i/</span></span>
Expand Down

0 comments on commit a933a79

Please sign in to comment.