<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3Atengwar</id>
	<title>Module:tengwar - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3Atengwar"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:tengwar&amp;action=history"/>
	<updated>2026-05-30T11:53:13Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:tengwar&amp;diff=496207&amp;oldid=prev</id>
		<title>Sware: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:tengwar&amp;diff=496207&amp;oldid=prev"/>
		<updated>2026-04-21T12:46:00Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:46, 21 April 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:tengwar&amp;diff=496206&amp;oldid=prev</id>
		<title>wikt&gt;Ow! That Hurts!: minor change</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:tengwar&amp;diff=496206&amp;oldid=prev"/>
		<updated>2025-12-13T04:29:49Z</updated>

		<summary type="html">&lt;p&gt;minor change&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local export = {}&lt;br /&gt;
&lt;br /&gt;
local PAGENAME = mw.loadData(&amp;quot;Module:headword/data&amp;quot;).pagename&lt;br /&gt;
&lt;br /&gt;
function export.convert2(frame)&lt;br /&gt;
	-- get arguments&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	local lang = frame.args[1] or error(&amp;quot;Language code has not been specified.&amp;quot;)&lt;br /&gt;
	local font = frame.args[2] or &amp;#039;annatar&amp;#039;&lt;br /&gt;
	local text = frame.args[3] or PAGENAME&lt;br /&gt;
	return export.convert(lang, font, text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.convert(lang, font, text)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;^wh&amp;#039;, &amp;#039;hw&amp;#039;)    -- Replaces word-initial &amp;quot;wh&amp;quot; with &amp;quot;hw&amp;quot; for rendering&lt;br /&gt;
	text = mw.ustring.lower(text)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;appendix:[^/]+/&amp;#039;, &amp;#039;&amp;#039;)	-- remove Appendix:&amp;lt;Language&amp;gt;/&lt;br /&gt;
	text = &amp;#039;␂&amp;#039; .. text .. &amp;#039;␃&amp;#039;	-- mark start and end of text&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;[\.]&amp;#039;, &amp;#039;‡&amp;#039;)	-- unused character for syllable separator&lt;br /&gt;
	&lt;br /&gt;
	if lang == &amp;#039;qya&amp;#039; then	-- Quenya&lt;br /&gt;
		text = export.conv_qya(font, text)&lt;br /&gt;
	elseif lang == &amp;#039;sjn&amp;#039; then	-- Sindarin, Tehtar mode&lt;br /&gt;
		text = export.conv_sjn(font, text)&lt;br /&gt;
	elseif lang == &amp;#039;sjn2&amp;#039; then	-- Sindarin, mode of Beleriand&lt;br /&gt;
		text = export.conv_sjn2(font, text)&lt;br /&gt;
	else&lt;br /&gt;
		error(&amp;quot;Language code is not supported.&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;[‡␂␃]&amp;#039;, &amp;#039;&amp;#039;)	-- remove syllable separator and start/end marks&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.tel2ana(text)&lt;br /&gt;
	local repltel = {&amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;-&amp;#039;, &amp;#039;,&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;}&lt;br /&gt;
	local replana = {&amp;#039;1Í&amp;#039;, &amp;#039;1[&amp;#039;, &amp;#039;1\&amp;#039;&amp;#039;, &amp;#039;q[&amp;#039;, &amp;#039;q\&amp;#039;&amp;#039;, &amp;#039;a[&amp;#039;, &amp;#039;a\&amp;#039;&amp;#039;, &amp;#039;z[&amp;#039;, &amp;#039;2Ì&amp;#039;, &amp;#039;2{&amp;#039;, &amp;#039;w{&amp;#039;, &amp;#039;s{&amp;#039;, &amp;#039;x{&amp;#039;, &amp;#039;xè&amp;#039;, &amp;#039;3[&amp;#039;, &amp;#039;c[&amp;#039;, &amp;#039;cé&amp;#039;, &amp;#039;4Ì&amp;#039;, &amp;#039;5Ì&amp;#039;, &amp;#039;5{&amp;#039;, &amp;#039;5&amp;quot;&amp;#039;, &amp;#039;t{&amp;#039;, &amp;#039;t&amp;quot;&amp;#039;, &amp;#039;hÍ&amp;#039;, &amp;#039;7Í&amp;#039;, &amp;#039;7\&amp;#039;&amp;#039;, &amp;#039;j´&amp;#039;, &amp;#039;j¸&amp;#039;, &amp;#039;9Ï&amp;#039;, &amp;#039;\\&amp;#039;, &amp;#039;¹&amp;#039;, &amp;#039;1&amp;#039;, &amp;#039;q&amp;#039;, &amp;#039;a&amp;#039;, &amp;#039;z&amp;#039;, &amp;#039;2&amp;#039;, &amp;#039;w&amp;#039;, &amp;#039;s&amp;#039;, &amp;#039;x&amp;#039;, &amp;#039;3&amp;#039;, &amp;#039;e&amp;#039;, &amp;#039;d&amp;#039;, &amp;#039;c&amp;#039;, &amp;#039;4&amp;#039;, &amp;#039;r&amp;#039;, &amp;#039;f&amp;#039;, &amp;#039;v&amp;#039;, &amp;#039;5&amp;#039;, &amp;#039;t&amp;#039;, &amp;#039;g&amp;#039;, &amp;#039;b&amp;#039;, &amp;#039;6&amp;#039;, &amp;#039;y&amp;#039;, &amp;#039;h&amp;#039;, &amp;#039;n&amp;#039;, &amp;#039;7&amp;#039;, &amp;#039;u&amp;#039;, &amp;#039;j&amp;#039;, &amp;#039;m&amp;#039;, &amp;#039;8&amp;#039;, &amp;#039;i&amp;#039;, &amp;#039;k&amp;#039;, &amp;#039;,&amp;#039;, &amp;#039;9&amp;#039;, &amp;#039;o&amp;#039;, &amp;#039;l&amp;#039;, &amp;#039;l&amp;#039;, &amp;#039;.&amp;#039;, &amp;#039;~&amp;#039;, &amp;#039;½&amp;#039;, &amp;#039;`&amp;#039;, &amp;#039;]&amp;#039;, &amp;#039;E&amp;#039;, &amp;#039;Õ&amp;#039;, &amp;#039;T&amp;#039;, &amp;#039;R&amp;#039;, &amp;#039;Y&amp;#039;, &amp;#039;å&amp;#039;, &amp;#039;U&amp;#039;, &amp;#039;\+&amp;#039;, &amp;#039;â&amp;#039;, &amp;#039;ë&amp;#039;}&lt;br /&gt;
	&lt;br /&gt;
	for i=1, #repltel do&lt;br /&gt;
		text = mw.ustring.gsub(text, repltel[i], replana[i])&lt;br /&gt;
	end&lt;br /&gt;
		&lt;br /&gt;
	-- adjust diacritics to the letter width in Annatar&lt;br /&gt;
	local vowdef = {&amp;#039;E&amp;#039;, &amp;#039;R&amp;#039;, &amp;#039;T&amp;#039;, &amp;#039;Y&amp;#039;, &amp;#039;U&amp;#039;, &amp;#039;Õ&amp;#039;}&lt;br /&gt;
	local vowwide = {&amp;#039;#&amp;#039; ,&amp;#039;\$&amp;#039;, &amp;#039;&amp;amp;#x25;&amp;#039;, &amp;#039;\^&amp;#039;, &amp;#039;&amp;amp;&amp;#039;, &amp;#039;Ô&amp;#039;, &amp;#039;&amp;#039;}&lt;br /&gt;
	local vowround = {&amp;#039;D&amp;#039; ,&amp;#039;F&amp;#039;, &amp;#039;G&amp;#039;, &amp;#039;H&amp;#039;, &amp;#039;J&amp;#039;, &amp;#039;Ö&amp;#039;}&lt;br /&gt;
	local vownarr = {&amp;#039;C&amp;#039; ,&amp;#039;V&amp;#039;, &amp;#039;B&amp;#039;, &amp;#039;N&amp;#039;, &amp;#039;M&amp;#039;, &amp;#039;×&amp;#039;}&lt;br /&gt;
	&lt;br /&gt;
	for i=1, #vowdef do&lt;br /&gt;
		text = mw.ustring.gsub(text, &amp;#039;([245rwtfsgvxbj][\&amp;#039;&amp;quot;´ÍÌÏ{[]?)&amp;#039;..vowdef[i], &amp;#039;%1&amp;#039;..vowwide[i])&lt;br /&gt;
		text = mw.ustring.gsub(text, &amp;#039;([9~`][\&amp;#039;&amp;quot;´ÍÌÏ{[]?)&amp;#039;..vowdef[i], &amp;#039;%1&amp;#039;..vownarr[i])&lt;br /&gt;
		text = mw.ustring.gsub(text, &amp;#039;([3ei,.][\&amp;#039;&amp;quot;´ÍÌÏ{[]?)&amp;#039;..vowdef[i], &amp;#039;%1&amp;#039;..vowround[i])&lt;br /&gt;
	end&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.conv_qya(font, text)&lt;br /&gt;
	-- merge duplicate transcriptions (replaced by the easier processable one)&lt;br /&gt;
	local dublfind = {&amp;#039;x&amp;#039;, &amp;#039;z&amp;#039;, &amp;#039;qu&amp;#039;, &amp;#039;mb&amp;#039;, &amp;#039;nd&amp;#039;, &amp;#039;ng&amp;#039;, &amp;#039;nw&amp;#039;, &amp;#039;th&amp;#039;, &amp;#039;j&amp;#039;, &amp;#039;k&amp;#039;, &amp;#039;â&amp;#039;, &amp;#039;ê&amp;#039;, &amp;#039;î&amp;#039;, &amp;#039;ô&amp;#039;, &amp;#039;û&amp;#039;}&lt;br /&gt;
	local duplrepl = {&amp;#039;cs&amp;#039;, &amp;#039;ss&amp;#039;, &amp;#039;cw&amp;#039;, &amp;#039;b&amp;#039;, &amp;#039;d&amp;#039;, &amp;#039;g&amp;#039;, &amp;#039;ñw&amp;#039;, &amp;#039;þ&amp;#039;, &amp;#039;y&amp;#039;, &amp;#039;c&amp;#039;, &amp;#039;á&amp;#039;, &amp;#039;é&amp;#039;, &amp;#039;í&amp;#039;, &amp;#039;ó&amp;#039;, &amp;#039;ú&amp;#039;}&lt;br /&gt;
	&lt;br /&gt;
	for i=1, #dublfind do&lt;br /&gt;
		text = mw.ustring.gsub(text, dublfind[i], duplrepl[i])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- define arrays for conversion&lt;br /&gt;
	local arfind = {&amp;#039;gw&amp;#039;, &amp;#039;ncw&amp;#039;, &amp;#039;ndy&amp;#039;, &amp;#039;nty&amp;#039;, &amp;#039;cc&amp;#039;,  &amp;#039;dy&amp;#039;, &amp;#039;hl&amp;#039;, &amp;#039;hr&amp;#039;, &amp;#039;hw&amp;#039;, &amp;#039;hy&amp;#039;, &amp;#039;ld&amp;#039;, &amp;#039;ll&amp;#039;, &amp;#039;ly&amp;#039;, &amp;#039;mm&amp;#039;, &amp;#039;mp&amp;#039;, &amp;#039;nc&amp;#039;, &amp;#039;nn&amp;#039;, &amp;#039;nt&amp;#039;, &amp;#039;ñw&amp;#039;, &amp;#039;ny&amp;#039;, &amp;#039;pp&amp;#039;, &amp;#039;ps&amp;#039;, &amp;#039;cs&amp;#039;, &amp;#039;cw&amp;#039;, &amp;#039;rd&amp;#039;, &amp;#039;rr&amp;#039;, &amp;#039;ry&amp;#039;, &amp;#039;ss&amp;#039;, &amp;#039;ts&amp;#039;, &amp;#039;tt&amp;#039;, &amp;#039;ty&amp;#039;, &amp;#039;b&amp;#039;, &amp;#039;c&amp;#039;, &amp;#039;d&amp;#039;, &amp;#039;f&amp;#039;, &amp;#039;g&amp;#039;, &amp;#039;h&amp;#039;, &amp;#039;l&amp;#039;, &amp;#039;m&amp;#039;, &amp;#039;n&amp;#039;, &amp;#039;ñ&amp;#039;, &amp;#039;p&amp;#039;, &amp;#039;r&amp;#039;, &amp;#039;s&amp;#039;, &amp;#039;t&amp;#039;, &amp;#039;v&amp;#039;, &amp;#039;w&amp;#039;, &amp;#039;y&amp;#039;, &amp;#039;þ&amp;#039;, &amp;#039;ai&amp;#039;, &amp;#039;au&amp;#039;, &amp;#039;eu&amp;#039;, &amp;#039;iu&amp;#039;, &amp;#039;oi&amp;#039;, &amp;#039;ui&amp;#039;, &amp;#039;á&amp;#039;, &amp;#039;é&amp;#039;, &amp;#039;í&amp;#039;, &amp;#039;ó&amp;#039;, &amp;#039;ú&amp;#039;, &amp;#039;a&amp;#039;, &amp;#039;e&amp;#039;, &amp;#039;i&amp;#039;, &amp;#039;o&amp;#039;, &amp;#039;u&amp;#039;}&lt;br /&gt;
	local repltel = {&amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;}&lt;br /&gt;
	&lt;br /&gt;
	-- detect hiatus onsets&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;([äöë])([aeiou])&amp;#039;, &amp;#039;%1%2&amp;#039;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;([aeiou])([äöëaeo])&amp;#039;, &amp;#039;%1%2&amp;#039;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;([ei])(i)&amp;#039;, &amp;#039;%1%2&amp;#039;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;([ou])(u)&amp;#039;, &amp;#039;%1%2&amp;#039;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;ä&amp;#039;, &amp;#039;a&amp;#039;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;ë&amp;#039;, &amp;#039;e&amp;#039;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;ö&amp;#039;, &amp;#039;o&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	-- convert to Telcontar (base font, as it uses own codepoints)&lt;br /&gt;
	for i=1, #arfind do&lt;br /&gt;
		text = mw.ustring.gsub(text, arfind[i], repltel[i])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- detect initial vowel&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;([^-])([])&amp;#039;, &amp;#039;%1%2&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	-- switch consonants, that have another form before vowels&lt;br /&gt;
	local cons2find = {&amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;}&lt;br /&gt;
	local cons2repl = {&amp;#039;&amp;#039;,  &amp;#039;&amp;#039;,  &amp;#039;&amp;#039;, &amp;#039;&amp;#039;}&lt;br /&gt;
	-- before short, long vowels and diphthongs&lt;br /&gt;
	for i=1, 2 do&lt;br /&gt;
		text = mw.ustring.gsub(text, cons2find[i]..&amp;#039;([])&amp;#039;, cons2repl[i]..&amp;#039;%1&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	-- before short vowels only&lt;br /&gt;
	for i=3, 4 do&lt;br /&gt;
		text = mw.ustring.gsub(text, cons2find[i]..&amp;#039;([])&amp;#039;, cons2repl[i]..&amp;#039;%1&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if font == &amp;#039;annatar&amp;#039; then	-- covert to Annatar&lt;br /&gt;
		text = export.tel2ana(text)&lt;br /&gt;
	end&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.conv_sjn(font, text)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;f␃&amp;#039;, &amp;#039;v␃&amp;#039;)	-- final f to v&lt;br /&gt;
	&lt;br /&gt;
	-- merge duplicate transcriptions (replaced by the easier processable one)&lt;br /&gt;
	local dublfind = {&amp;#039;dh&amp;#039;, &amp;#039;ph&amp;#039;, &amp;#039;th&amp;#039;, &amp;#039;k&amp;#039;, &amp;#039;â&amp;#039;, &amp;#039;ê&amp;#039;, &amp;#039;î&amp;#039;, &amp;#039;ô&amp;#039;, &amp;#039;û&amp;#039;, &amp;#039;ŷ&amp;#039;, &amp;#039;œ&amp;#039;, &amp;#039;ai&amp;#039;, &amp;#039;ae&amp;#039;, &amp;#039;au&amp;#039;, &amp;#039;ei&amp;#039;, &amp;#039;oe&amp;#039;, &amp;#039;ui&amp;#039;}&lt;br /&gt;
	local duplrepl = {&amp;#039;ð&amp;#039;, &amp;#039;f&amp;#039;, &amp;#039;þ&amp;#039;, &amp;#039;c&amp;#039;, &amp;#039;á&amp;#039;, &amp;#039;é&amp;#039;, &amp;#039;í&amp;#039;, &amp;#039;ó&amp;#039;, &amp;#039;ú&amp;#039;, &amp;#039;ý&amp;#039;, &amp;#039;e&amp;#039;, &amp;#039;aÿ&amp;#039;, &amp;#039;aj&amp;#039;, &amp;#039;aw&amp;#039;, &amp;#039;eÿ&amp;#039;, &amp;#039;oj&amp;#039;, &amp;#039;uÿ&amp;#039;}&lt;br /&gt;
	&lt;br /&gt;
	for i=1, #dublfind do&lt;br /&gt;
		text = mw.ustring.gsub(text, dublfind[i], duplrepl[i])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- define arrays for conversion&lt;br /&gt;
	local arfind = {&amp;#039;chw&amp;#039;, &amp;#039;nch&amp;#039;,  &amp;#039;nþ&amp;#039;, &amp;#039;ch&amp;#039;, &amp;#039;ð&amp;#039;, &amp;#039;gh&amp;#039;, &amp;#039;gw&amp;#039;, &amp;#039;hw&amp;#039;, &amp;#039;lh&amp;#039;, &amp;#039;ll&amp;#039;, &amp;#039;mb&amp;#039;, &amp;#039;mm&amp;#039;, &amp;#039;mp&amp;#039;, &amp;#039;nc&amp;#039;, &amp;#039;nd&amp;#039;, &amp;#039;ng&amp;#039;, &amp;#039;nn&amp;#039;, &amp;#039;nt&amp;#039;, &amp;#039;rh&amp;#039;, &amp;#039;rr&amp;#039;, &amp;#039;ss&amp;#039;, &amp;#039;þ&amp;#039;, &amp;#039;b&amp;#039;, &amp;#039;c&amp;#039;, &amp;#039;d&amp;#039;, &amp;#039;f&amp;#039;, &amp;#039;g&amp;#039;, &amp;#039;h&amp;#039;, &amp;#039;j&amp;#039;, &amp;#039;l&amp;#039;, &amp;#039;m&amp;#039;, &amp;#039;n&amp;#039;, &amp;#039;ŋ&amp;#039;, &amp;#039;p&amp;#039;, &amp;#039;r&amp;#039;, &amp;#039;s&amp;#039;, &amp;#039;t&amp;#039;, &amp;#039;v&amp;#039;, &amp;#039;w&amp;#039;, &amp;#039;á&amp;#039;, &amp;#039;é&amp;#039;, &amp;#039;í&amp;#039;, &amp;#039;ó&amp;#039;, &amp;#039;ú&amp;#039;, &amp;#039;ý&amp;#039;, &amp;#039;ÿ&amp;#039;, &amp;#039;\&amp;#039;&amp;#039;}&lt;br /&gt;
	local repltel = {&amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;}&lt;br /&gt;
	&lt;br /&gt;
	-- detect initial i glide&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;([^a-zÿðþ])i([aeou])&amp;#039;, &amp;#039;%1j%2&amp;#039;)&lt;br /&gt;
	-- detect initial ng&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;([^a-zÿðþ])ng([aeou])&amp;#039;, &amp;#039;%1ŋ%2&amp;#039;)&lt;br /&gt;
	-- detect hiatus onsets&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;([äöë][aeiouy])&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;([aeiouy][äöëao])&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;([iy][iuy])&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;([eu]e|oi|[eou]u)&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;ä&amp;#039;, &amp;#039;a&amp;#039;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;ë&amp;#039;, &amp;#039;e&amp;#039;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;ö&amp;#039;, &amp;#039;o&amp;#039;)&lt;br /&gt;
	-- detect final vowel&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;([^])([aeiouy][^a-zÿðþ])&amp;#039;, &amp;#039;%1%2&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	-- convert to Telcontar (base font, as it uses own codepoints)&lt;br /&gt;
	for i=1, #arfind do&lt;br /&gt;
		text = mw.ustring.gsub(text, arfind[i], repltel[i])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local vowfind  = {&amp;#039;a&amp;#039;, &amp;#039;e&amp;#039;, &amp;#039;i&amp;#039;, &amp;#039;o&amp;#039;, &amp;#039;u&amp;#039;, &amp;#039;y&amp;#039;}&lt;br /&gt;
	local vowrepl  = {&amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;}&lt;br /&gt;
	&lt;br /&gt;
	-- move vowel marks to the next consonant&lt;br /&gt;
	for i=1, #vowfind do&lt;br /&gt;
		text = mw.ustring.gsub(text, &amp;#039;([^])&amp;#039;..vowfind[i]..&amp;#039;([-][]?)&amp;#039;, &amp;#039;%1%2&amp;#039;..vowrepl[i])&lt;br /&gt;
		text = mw.ustring.gsub(text, &amp;#039;([^])&amp;#039;..vowfind[i]..&amp;#039;([-][]?)&amp;#039;, &amp;#039;%1%2&amp;#039;..vowrepl[i])	-- excecute twice because of overlap&lt;br /&gt;
		text = mw.ustring.gsub(text, vowfind[i], vowrepl[i])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- switch consonants, that have another form before vowels&lt;br /&gt;
	local cons2find = {&amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;}&lt;br /&gt;
	local cons2repl = {&amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;}&lt;br /&gt;
	-- before short, long vowels and diphthongs&lt;br /&gt;
	text = mw.ustring.gsub(text, cons2find[1]..&amp;#039;([]?[-][])&amp;#039;, cons2repl[1]..&amp;#039;%1&amp;#039;)&lt;br /&gt;
	-- carrying vowel mark&lt;br /&gt;
	for i=2, 3 do&lt;br /&gt;
		text = mw.ustring.gsub(text, cons2find[i]..&amp;#039;([])&amp;#039;, cons2repl[i]..&amp;#039;%1&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if font == &amp;#039;annatar&amp;#039; then	-- covert to Annatar&lt;br /&gt;
		text = export.tel2ana(text)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.conv_sjn2(font, text)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;f␃&amp;#039;, &amp;#039;v␃&amp;#039;)	-- final f to v&lt;br /&gt;
	&lt;br /&gt;
	-- merge duplicate transcriptions (replaced by the easier processable one)&lt;br /&gt;
	local dublfind = {&amp;#039;dh&amp;#039;, &amp;#039;ph&amp;#039;, &amp;#039;th&amp;#039;, &amp;#039;k&amp;#039;, &amp;#039;â&amp;#039;, &amp;#039;ê&amp;#039;, &amp;#039;î&amp;#039;, &amp;#039;ô&amp;#039;, &amp;#039;û&amp;#039;, &amp;#039;ŷ&amp;#039;}&lt;br /&gt;
	local duplrepl = {&amp;#039;ð&amp;#039;, &amp;#039;f&amp;#039;, &amp;#039;þ&amp;#039;, &amp;#039;c&amp;#039;, &amp;#039;á&amp;#039;, &amp;#039;é&amp;#039;, &amp;#039;í&amp;#039;, &amp;#039;ó&amp;#039;, &amp;#039;ú&amp;#039;, &amp;#039;ý&amp;#039;}&lt;br /&gt;
	&lt;br /&gt;
	for i=1, #dublfind do&lt;br /&gt;
		text = mw.ustring.gsub(text, dublfind[i], duplrepl[i])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- define arrays for conversion&lt;br /&gt;
	local arfind = {&amp;#039;chw&amp;#039;, &amp;#039;nch&amp;#039;, &amp;#039;nþ&amp;#039;, &amp;#039;ch&amp;#039;, &amp;#039;ð&amp;#039;, &amp;#039;gh&amp;#039;, &amp;#039;gw&amp;#039;, &amp;#039;hw&amp;#039;, &amp;#039;lh&amp;#039;, &amp;#039;mb&amp;#039;, &amp;#039;mm&amp;#039;, &amp;#039;mp&amp;#039;, &amp;#039;nc&amp;#039;, &amp;#039;nd&amp;#039;, &amp;#039;ng&amp;#039;, &amp;#039;nn&amp;#039;, &amp;#039;nt&amp;#039;, &amp;#039;rh&amp;#039;, &amp;#039;ss&amp;#039;, &amp;#039;þ&amp;#039;, &amp;#039;b&amp;#039;, &amp;#039;c&amp;#039;, &amp;#039;d&amp;#039;, &amp;#039;f&amp;#039;, &amp;#039;g&amp;#039;, &amp;#039;h&amp;#039;, &amp;#039;j&amp;#039;, &amp;#039;l&amp;#039;, &amp;#039;m&amp;#039;, &amp;#039;n&amp;#039;, &amp;#039;ŋ&amp;#039;, &amp;#039;p&amp;#039;, &amp;#039;r&amp;#039;, &amp;#039;s&amp;#039;, &amp;#039;t&amp;#039;, &amp;#039;v&amp;#039;, &amp;#039;w&amp;#039;, &amp;#039;ai&amp;#039;, &amp;#039;ae&amp;#039;, &amp;#039;au&amp;#039;, &amp;#039;ei&amp;#039;, &amp;#039;oe&amp;#039;, &amp;#039;ui&amp;#039;, &amp;#039;a&amp;#039;, &amp;#039;ä&amp;#039;, &amp;#039;e&amp;#039;, &amp;#039;ë&amp;#039;, &amp;#039;i&amp;#039;, &amp;#039;o&amp;#039;, &amp;#039;ö&amp;#039;, &amp;#039;u&amp;#039;, &amp;#039;y&amp;#039;, &amp;#039;œ&amp;#039;, &amp;#039;á&amp;#039;, &amp;#039;é&amp;#039;, &amp;#039;í&amp;#039;, &amp;#039;ó&amp;#039;, &amp;#039;ú&amp;#039;, &amp;#039;ý&amp;#039;, &amp;#039;\&amp;#039;&amp;#039;}&lt;br /&gt;
	local repltel = {&amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;}&lt;br /&gt;
	&lt;br /&gt;
	-- detect initial ng&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;([^a-zðþ])ng([aeou])&amp;#039;, &amp;#039;%1ŋ%2&amp;#039;)&lt;br /&gt;
	-- detect final au&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;#039;aw([^a-zðþ])&amp;#039;, &amp;#039;au%1&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	-- convert to Telcontar (base font, as it uses own codepoints)&lt;br /&gt;
	for i=1, #arfind do&lt;br /&gt;
		text = mw.ustring.gsub(text, arfind[i], repltel[i])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if font == &amp;#039;annatar&amp;#039; then	-- covert to Annatar&lt;br /&gt;
		text = export.tel2ana(text)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>wikt&gt;Ow! That Hurts!</name></author>
	</entry>
</feed>