# Based on the Unicode Character Database 7.0 macro dead_ascii/1 [" " ] : "\1" "\1" : end macro macro dead_ascii/2 [" " "\2" ] : "\1" ["\1" "\2"] : end macro macro composite/3 "\1" : "\3" "\1" "\2" : "\3" end macro macro composite/4 "\1" : "\4" "\1" ["\2" "\3"] : "\4" end macro "u" "+" : "U" "+" : # TODO C0 Controls # Basic Latin: dead_ascii("^") dead_ascii("`") dead_ascii("~") # TODO C1 Controls # Latin-1 Supplement: "!" "!" : "¡" ("/" "c") : "¢" ("|" ["c" "L"]) : "¢" ("-" ["l" "L"]) : "£" (["o" "O"] ["x" "X"]) : "¤" (["-" "="] ["y" "Y"]) : "¥" ("!" "|") : "¦" (["o" "O"] ["s" "S"]) : "§" dead_ascii("¨" "\"") (["o" "O"] ["c" "C"]) : "©" ( ) "_" "a" : "ª" "<" "<" : "«" ("-" ",") : "¬" "-" "-" " " : "­" (["o" "O"] ["r" "R"]) : "®" "-" : "o" : dead_ascii("°") "+" "-" : "±" "2" : "²" "3" : "³" dead_ascii("´" "'") "m" "u" : "µ" ["p" "P"] ["p" "P" "!"] : "¶" "!" ["p" "P"] : "¶" "." "-" : "·" dead_ascii("," ",") "1" : "¹" ( ) "_" "o" : "º" ">" ">" : "»" "1" "4" : "¼" "1" "2" : "½" "3" "4" : "¾" "?" "?" : "¿" composite("`" "A" "À") composite("´" "'" "A" "Á") composite("~" "A" "Ã") composite("¨" "\"" "A" "Ä") "A" : "Å" "A" "E" : "Æ" composite("¸" "," "C" "Ç") composite("`" "E" "È") composite("´" "'" "E" "É") composite("^" "E" "Ê") composite("¨" "\"" "E" "Ë") composite("`" "I" "Ì") composite("´" "'" "I" "Í") composite("^" "I" "Î") composite("¨" "\"" "I" "Ï") "-" : composite("-" "D" "Đ") "/" : composite("/" "D" "Đ") composite("~" "N" "Ñ") composite("`" "O" "Ò") composite("´" "'" "O" "Ó") composite("^" "O" "Ô") composite("~" "O" "Õ") composite("¨" "\"" "O" "Ö") "x" "x" : "×" composite("/" "O" "Ø") composite("`" "U" "Ù") composite("´" "'" "U" "Ú") composite("^" "U" "Û") composite("¨" "\"" "U" "Ü") composite("´" "'" "Y" "Ý") "T" "H" : "Þ" "s" "s" : "ß" "ſ" "s" : "ß" composite("`" "a" "à") composite("´" "'" "a" "á") composite("~" "a" "ã") composite("¨" "\"" "a" "ä") "a" : "å" "a" "e" : "æ" composite("¸" "," "c" "ç") composite("`" "e" "è") composite("´" "'" "e" "é") composite("^" "e" "ê") composite("¨" "\"" "e" "ë") composite("`" "i" "ì") composite("´" "'" "i" "í") composite("^" "i" "î") composite("¨" "\"" "i" "ï") composite("/" "d" "ð") composite("~" "n" "ñ") composite("`" "o" "ò") composite("´" "'" "o" "ó") composite("^" "o" "ô") composite("~" "o" "õ") composite("¨" "\"" "o" "ö") ":" "-" : "÷" composite("/" "o" "ø") composite("`" "u" "ù") composite("´" "'" "u" "ú") composite("^" "u" "û") composite("¨" "\"" "u" "ü") composite("´" "'" "y" "ý") "t" "h" : "þ" composite("¨" "\"" "y" "ÿ") # TODO Latin Extended-A # TODO Latin Extended-B # TODO IPA Extensions # TODO Spacing Modifier Letter # TODO Combining Diacritical Marks # TODO Greek and Coptic # TODO Cyrillic # TODO Cyrillic Supplement # TODO Armenian # TODO Hebrew # TODO Arabic # TODO Syriac # TODO Arabic Supplement # TODO Thaana # TODO NKo # TODO Samaritan # TODO Mandaic # TODO Arabic Extended-A # TODO Devanagari # TODO Bengali # TODO Gurmukhi # TODO Gujarati # TODO Oriya # TODO Tamil # TODO Telugu # TODO Kannada # TODO Malayalam # TODO Sinhala # TODO Thai # TODO Lao # TODO Tibetan # TODO Myanmar # TODO Georgian # TODO Hangul Jamo # TODO Ethiopic # TODO Ethiopic Supplement # TODO Cherokee # TODO Unified Canadian Aboriginal Syllabics # TODO Ogham # TODO Runic # TODO Tagalog # TODO Hanunoo # TODO Buhid # TODO Tagbanwa # TODO Khmer # TODO Mongolian # TODO Unified Canadian Aboriginal Syllabics Extended # TODO Limbu # TODO Tai Le # TODO New Tai Lue # TODO Khmer Symbols # TODO Buginese # TODO Tai Tham # TODO Combining Diacritical Marks Extended # TODO Balinese # TODO Sundanese # TODO Batak # TODO Lepcha # TODO Ol Chiki # TODO Sundanese Supplement # TODO Vedic Extensions # TODO Phonetic Extensions # TODO Phonetic Extensions Supplement # TODO Combining Diacritical Marks Supplement # TODO Latin Extended Additional # TODO Greek Extended # General Punctuation: "_" "." : "\u2000" # en quad "_" "_" : "\u2001" # em quad "-" "." : "\u2002" # en space "-" "-" : "\u2003" # em space "3" : "\u2004" # three-per-em space "4" : "\u2005" # four-per-em space "6" : "\u2006" # six-per-em space "f" : "\u2007" # figure space "." : "\u2008" # punctuation space "t" : "\u2009" # thin space "h" : "\u200A" # hairspace "0" : "\u200B" # zero width space "J" : "\u200C" # zero width non-joiner "j" : "\u200D" # zero width joiner "l" : "\u200E" # left-to-right mark "r" : "\u200F" # right-to-left mark "-" : "\u2010" # hyphen "-" " " : "\u2011" # non-breaking hyphen "-" "-" "f" : "\u2012" # figure dash "-" "-" "." : "\u2013" # en dash "-" "-" "-" : "\u2014" # em dash "-" "-" "_" : "\u2015" # horizontal bar "|" "|" : "\u2016" # double verical line "-" "_" : "\u2017" # double low line ("(" "'") : "‘" (")" "'") : "’" ("(" ",") : "‚" (")" ",") : "‛" ("(" "\"") : "“" (")" "\"") : "”" ("(" ";") : "„" (")" ";") : "‟" "+" "T" : "†" "+" "+" "T" : "‡" "." "." : "•" "|" ">" : "‣" "." "," : "\u2024" # one dot leader "." ";" : "\u2025" # two dot leader "." "." : "…" "-" "." : "\u2027" # hyphenation point "l" : "\u2028" # line separator "p" : "\u2029" # paragraph separator "e" "l" : "\u202A" # left-to-right embedding "e" "r" : "\u202B" # right-to-left embedding "e" "p" : "\u202C" # pop directional formatting "o" "l" : "\u202D" # left-to-right override "o" "r" : "\u202E" # right-to-left override "m" " " : "\u202F" # narrow no-break space "%" ["o" "."] : "‰" "%" ["O" ":"] : "‱" ("1" ["'" "´"]) : "′" ("2" ["'" "´"]) : "″" ("3" ["'" "´"]) : "‴" ("1" "`") : "‵" ("2" "`") : "‶" ("3" "`") : "‷" ("." "^") : "‸" ("." "<") : "‹" ("." ">") : "›" ("x" "+") : "※" "!" "!" : "‼" "!" "?" : "‽" "^" "_" : "‾" ("_" "u") : "‿" ("^" "u") : "⁀" "/" "/" : "⁁" "*" "*" : "⁂" "-" "-" : "⁃" "/" "/" : "⁄" ("[" "-") : "⁅" ("]" "-") : "⁆" "?" "?" : "⁇" "?" "!" : "⁈" "!" "?" : "⁉" ("/" "7"): "⁊" "¶" "¶" : "⁋" ("?" ["p" "P"]) : "⁋" "(" "|" : "⁌" "|" ")" : "⁍" ("*" ".") : "⁎" ";" ";" : "⁏" "(" ")": "⁐" ("*" ":") : "⁑" "%" "%" : "⁒" "~" ["-" "~"] : "⁓" "-" "~" : "⁓" ("_" "U") : "⁔" ("x" "*") : "⁕" "." ":" : "⁖" ("4" ["'" "´"]) : "⁗" "." ":" "." : "⁘" ":" "." ":" : "⁙" "|" "." "." : "⁚" "." ":" "." : "⁛" ("x" ":") : "⁜" "|" ":" "." : "⁝" "|" ":" ":" : "⁞" "m" : "\u205F" # medium mathematical space "w" : "\u2060" # word joiner ("f" " ") : "\u2061" # function application (["x" "×" "*"] " ") : "\u2062" # invisible times (["," "."] " ") : "\u2063" # invisible separator ("+" " ") : "\u2064" # invisible plus "i" "l" : "\u2066" # left-to-right isolate "i" "r" : "\u2067" # right-to-left isolate "i" "s" : "\u2068" # first strong isolate "i" "p" : "\u2069" # pop directional isolate # U+206A through U+206C are deprecated # Superscripts and Subscripts: "0" : "⁰" ["^" ] "i" : "ⁱ" "4" : "⁴" "5" : "⁵" "6" : "⁶" "7" : "⁷" "8" : "⁸" "9" : "⁹" "+" : "⁺" "-" : "⁻" "=" : "⁼" "(" : "⁽" ")" : "⁾" ["^" ] "n" : "ⁿ" dead_ascii("ˇ") "0" : "₀" "1" : "₁" "2" : "₂" "3" : "₃" "4" : "₄" "5" : "₅" "6" : "₆" "7" : "₇" "8" : "₈" "9" : "₉" "+" : "₊" "-" : "₋" "=" : "₌" "(" : "₍" ")" : "₎" ["ˇ" ] "a" : "ₐ" ["ˇ" ] "e" : "ₑ" ["ˇ" ] "o" : "ₒ" ["ˇ" ] "x" : "ₓ" ["ˇ" ] "ə" : "ₔ" ["ˇ" ] "h" : "ₕ" ["ˇ" ] "k" : "ₖ" ["ˇ" ] "l" : "ₗ" ["ˇ" ] "m" : "ₘ" ["ˇ" ] "n" : "ₙ" ["ˇ" ] "p" : "ₚ" ["ˇ" ] "s" : "ₛ" ["ˇ" ] "t" : "ₜ" # TODO Currency Symbols # TODO Combining Diacritical Marks for Symbols # TODO Letterlike Symbols # TODO Number Forms # TODO Arrows # TODO Mathematical Operators # TODO Miscellaneous Technical # TODO Control Pictures # TODO Optical Character Recognition # Enclosed Alphanumerics: for "1" to "9" as \1 "(" "\1" ")" : "\add(\u2460 \sub(\1 "1"))" "(" " " "\1" [" " .] ")" : "\add(\u2474 \sub(\1 "1"))" "(" "\1" " " ")" : "\add(\u2474 \sub(\1 "1"))" "\1" "." : "\add(\u2488 \sub(\1 "1"))" end for for "0" to "9" as \1 "(" "1" "\1" ")" : "\add(\u2469 \sub(\1 "0"))" "(" " " "1" "\1" [" " .] ")" : "\add(\u247D \sub(\1 "0"))" "(" "1" "\1" " " ")" : "\add(\u247D \sub(\1 "0"))" "1" "\1" "." : "\add(\u2491 \sub(\1 "0"))" end for "(" "2" "0" ")" : "\u2473" "(" " " "2" "0" [" " .] ")" : "\u2487" "(" "2" "0" " " ")" : "\u2473" "2" "0" "." : "\u2498" for "a" to "z" as \1 "(" " " "\1" [" " .] ")" : "\add(\u249C \sub(\1 "a"))" "(" "\1" " " ")" : "\add(\u249C \sub(\1 "a"))" end for for "A" to "Z" as \1 "(" "\1" ")" : "\add(\u24B6 \sub(\1 "A"))" end for for "a" to "z" as \1 "(" "\1" ")" : "\add(\u24D0 \sub(\1 "a"))" end for "(" "0" ")" : "\u24EA" for "1" to "9" as \1 "(" "(" "(" "1" "\1" ")" ")" ")" : "\add(\u24EB \sub(\1 "1"))" end for "(" "(" "(" "2" "0" ")" ")" ")" : "\u24F4" for "1" to "9" as \1 "(" "(" "\1" ")" ")" : "\add(\u24F5 \sub(\1 "1"))" end for "(" "(" "1" "0" ")" ")" : "\u24FE" "(" "(" "(" "0" ")" ")" ")" : "\u24FF" # TODO Box Drawing # TODO Block Elements # TODO Geometric Shapes # TODO Miscellaneous Symbols # TODO Dingbats # TODO Miscellaneous Mathematical Symbols-A # TODO Supplemental Arrows-A # Braille Patterns: function braille/1 \or(\lsh(1 \sub("\1" "0")) "\u2800") end function macro braille_double/1 let \2 : "\u2800" if \and(\1 1) = 1 let \2 : \or(\2 8) endif if \and(\1 2) = 2 let \2 : \or(\2 16) endif if \and(\1 4) = 4 let \2 : \or(\2 32) endif if \and(\1 8) = 8 let \2 : \or(\2 1) endif if \and(\1 16) = 16 let \2 : \or(\2 2) endif if \and(\1 32) = 32 let \2 : \or(\2 4) endif if \and(\1 64) = 64 let \2 : \or(\2 128) endif if \and(\1 128) = 128 let \2 : \or(\2 64) endif "\1" "\1" : "\or(\1 \2)" end macro "b" : "\u2800" for "1" to "8" as \1 "b" "\1" : "\braille(\1)" for \add(\1 1) to "8" as \2 "B" ("\1" "\2") : "\or(\braille(\1) \braille(\2))" end for end for for "\u2800" to "\u28FF" as \1 braille_double(\1) for \add(\1 1) to "\u28FF" as \2 ("\1" "\2") : "\or(\1 \2)" end for end for # TODO Supplemental Arrows-B # TODO Miscellaneous Mathematical Symbols-B # TODO Supplemental Mathematical Operators # TODO Miscellaneous Symbols and Arrows # TODO Glagolitic # TODO Latin Extended-C # TODO Coptic # TODO Georgian Supplement # TODO Tifinagh # TODO Ethiopic Extended # TODO Cyrillic Extended-A # TODO Supplemental Punctuation # TODO CJK Radicals Supplement # TODO Kangxi Radicals # TODO Ideographic Description Characters # TODO CJK Symbols and Punctuation # TODO Hiragana # TODO Katakana # TODO Bopomofo # TODO Hangul Compatibility Jamo # TODO Kanbun # TODO Bopomofo Extended # TODO CJK Strokes # TODO Katakana Phonetic Extensions # TODO Enclosed CJK Letters and Months # TODO CJK Compatibility # TODO CJK Unified Ideographs Extension A # TODO Yijing Hexagram Symbols # TODO CJK Unified Ideographs # TODO Yi Syllables # TODO Yi Radicals # TODO Lisu # TODO Vai # TODO Cyrillic Extended-B # TODO Bamum # TODO Modifier Tone Letters # TODO Latin Extended-D # TODO Syloti Nagri # TODO Common Indic Number Forms # TODO Phags-pa # TODO Saurashtra # TODO Devanagari Extended # TODO Kayah Li # TODO Rejang # TODO Hangul Jamo Extended-A # TODO Javanese # TODO Myanmar Extended-B # TODO Cham # TODO Myanmar Extended-A # TODO Tai Viet # TODO Meetei Mayek Extensions # TODO Ethiopic Extended-A # TODO Latin Extended-E # TODO Meetei Mayek # TODO Hangul Syllables # TODO Hangul Jamo Extended-B # TODO CJK Compatibility Ideographs # TODO Alphabetic Presentation Forms # TODO Arabic Presentation Forms-A # TODO Variation Selectors # TODO Vertical Forms # TODO Combining Half Marks # TODO CJK Compatibility Forms # TODO Small Form Variants # TODO Arabic Presentation Forms-B # TODO Halfwidth and Fullwidth Forms # TODO Specials # TODO Linear B Syllabary # TODO Linear B Ideograms # TODO Aegean Numbers # TODO Ancient Greek Numbers # TODO Ancient Symbols # TODO Phaistos Disc # TODO Lycian # TODO Carian # TODO Coptic Epact Numbers # TODO Old Italic # TODO Gothic # TODO Old Permic # TODO Ugaritic # TODO Old Persian # TODO Deseret # TODO Shavian # TODO Osmanya # TODO Elbasan # TODO Caucasian Albanian # TODO Linear A # TODO Cypriot Syllabary # TODO Imperial Aramaic # TODO Palmyrene # TODO Nabataean # TODO Phoenician # TODO Lydian # TODO Meroitic Hieroglyphs # TODO Meroitic Cursive # TODO Kharoshthi # TODO Old South Arabian # TODO Old North Arabian # TODO Manichaean # TODO Avestan # TODO Inscriptional Parthian # TODO Psalter Pahlavi # TODO Old Turkic # TODO Rumi Numeral Symbols # TODO Brahmi # TODO Kaithi # TODO Sora Sompeng # TODO Chakma # TODO Mahajani # TODO Sharada # TODO Sinhala Archaic Numbers # TODO Khojki # TODO Khudawadi # TODO Grantha # TODO Tirhuta # TODO Siddham # TODO Modi # TODO Takri # TODO Warang Citi # TODO Pau Cin Hau # TODO Cuneiform # TODO Cuneiform Numbers and Punctuation # TODO Egyptian Hieroglyphs # TODO Bamum Supplement # TODO Mro # TODO Bassa Vah # TODO Pahawh Hmong # TODO Miao # TODO Kana Supplement # TODO Duployan # TODO Shorthand Format Controls # TODO Byzantine Musical Symbols # TODO Musical Symbols # TODO Ancient Greek Musical Notation # TODO Tai Xuan Jing Symbols # TODO Counting Rod Numerals # TODO Mathematical Alphanumeric Symbols # TODO Mende Kikakui # TODO Arabic Mathematical Alphabetic Symbols # TODO Mahjong Tiles # TODO Domino Tiles # TODO Playing Cards # TODO Enclosed Alphanumeric Supplement # TODO Enclosed Ideographic Supplement # TODO Miscellaneous Symbols and Pictographs # TODO Emoticons # TODO Ornamental Dingbats # TODO Transport and Map Symbols # TODO Alchemical Symbols # TODO Geometric Shapes Extended # TODO Supplemental Arrows-C # TODO CJK Unified Ideographs Extension B # TODO CJK Unified Ideographs Extension C # TODO CJK Unified Ideographs Extension D # TODO CJK Compatibility Ideographs Supplement # Tags: These are deprecated # TODO Variation Selectors Supplement