local export = {}
local u = mw.ustring.char
 
local tt = {
	-- consonants
	["𐴀"]="อ", ["𐴁"]="บ", ["𐴃"]="ต", ["𐴄"]="ฏ",
	["𐴅"]="จฺ", ["𐴆"]="จ", ["𐴇"]="ฮ", ["𐴈"]="ฅ",
	["𐴉"]="ฟ", ["𐴂"]="ป", ["𐴊"]="ด", ["𐴋"]="ฎ",
	["𐴌"]="ร", ["𐴍"]="รฺ", ["𐴎"]="ซฺ", ["𐴏"]="ซ",
	["𐴐"]="ศ", ["𐴑"]="ก", ["𐴒"]="กฺ", ["𐴓"]="ล",
	["𐴔"]="ม", ["𐴕"]="น", ["𐴖"]="ว", ["𐴗"]="ว์",
	["𐴘"]="ย", ["𐴙"]="ย์", ["𐴚"]="ง", ["𐴛"]="ญ", ["𐴜"]="วฺ",
	
	-- vowels
	["𐴝"]="า", ["𐴞"]="ี", ["𐴟"]="ู", ["𐴠"]="↶เ", ["𐴡"]="↶โ",

	-- others
	["𐴢"]="", --only used after some ending consonants
	["𐴣"]="ํ", --nasalization
	[u(0x200D)]="", --ZWJ, might appear to adjust consonants

	-- numerals
	["𐴰"]="0", ["𐴱"]="1", ["𐴲"]="2", ["𐴳"]="3", ["𐴴"]="4",
	["𐴵"]="5", ["𐴶"]="6", ["𐴷"]="7", ["𐴸"]="8", ["𐴹"]="9",
}

function export.tr(text, lang, sc)

	text = mw.ustring.gsub(text, ".", tt)
	text = mw.ustring.gsub(text, "(.ฺ?)↶([เโ])", "%2%1")

	-- tones and special mark
	text = mw.ustring.gsub(text, "(.)𐴤", "%1́")
	text = mw.ustring.gsub(text, "(.)𐴥", "%1́%1")
	text = mw.ustring.gsub(text, "(.)𐴦", "%1%1́")
	text = mw.ustring.gsub(text, "(.)𐴧", "%1%1")

	return text

end

return export