Unicode Upside-Down Mapping

Unicode Upside-Down Mapping


Summary

This is character mapping used by the Upside-Down Converter.

The mapping is based on one from revfad.com, but I've added the upper-case characters and numbers.

If you have any suggestions, let me know. The major thing missing is the number 4, but B, K, 1, 2 and 5 could be better.


Mapping

From To
! - EXCLAMATION MARK (U+0021) ¡ - INVERTED EXCLAMATION MARK (U+00A1)
" - QUOTATION MARK (U+0022) „ - DOUBLE LOW-9 QUOTATION MARK (U+201E)
& - AMPERSAND (U+0026) ⅋ - TURNED AMPERSAND (U+214B)
' - APOSTROPHE (U+0027) , - COMMA (U+002C)
( - LEFT PARENTHESIS (U+0028) ) - RIGHT PARENTHESIS (U+0029)
. - FULL STOP (U+002E) ˙ - DOT ABOVE (U+02D9)
3 - DIGIT THREE (U+0033) Ɛ - LATIN CAPITAL LETTER OPEN E (U+0190)
4 - DIGIT FOUR (U+0034) ᔭ - CANADIAN SYLLABICS YA (U+152D)
6 - DIGIT SIX (U+0036) 9 - DIGIT NINE (U+0039)
7 - DIGIT SEVEN (U+0037) Ɫ - LATIN CAPITAL LETTER L WITH MIDDLE TILDE (U+2C62)
; - SEMICOLON (U+003B) ؛ - ARABIC SEMICOLON (U+061B)
< - LESS-THAN SIGN (U+003C) > - GREATER-THAN SIGN (U+003E)
? - QUESTION MARK (U+003F) ¿ - INVERTED QUESTION MARK (U+00BF)
A - LATIN CAPITAL LETTER A (U+0041) ∀ - FOR ALL (U+2200)
B - LATIN CAPITAL LETTER B (U+0042) 𐐒 - DESERET CAPITAL LETTER BEE (U+10412)
C - LATIN CAPITAL LETTER C (U+0043) Ↄ - ROMAN NUMERAL REVERSED ONE HUNDRED (U+2183)
D - LATIN CAPITAL LETTER D (U+0044) ◖ - LEFT HALF BLACK CIRCLE (U+25D6)
E - LATIN CAPITAL LETTER E (U+0045) Ǝ - LATIN CAPITAL LETTER REVERSED E (U+018E)
F - LATIN CAPITAL LETTER F (U+0046) Ⅎ - TURNED CAPITAL F (U+2132)
G - LATIN CAPITAL LETTER G (U+0047) ⅁ - TURNED SANS-SERIF CAPITAL G (U+2141)
J - LATIN CAPITAL LETTER J (U+004A) ſ - LATIN SMALL LETTER LONG S (U+017F)
K - LATIN CAPITAL LETTER K (U+004B) ⋊ - RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT (U+22CA)
L - LATIN CAPITAL LETTER L (U+004C) ⅂ - TURNED SANS-SERIF CAPITAL L (U+2142)
M - LATIN CAPITAL LETTER M (U+004D) W - LATIN CAPITAL LETTER W (U+0057)
N - LATIN CAPITAL LETTER N (U+004E) ᴎ - LATIN LETTER SMALL CAPITAL REVERSED N (U+1D0E)
P - LATIN CAPITAL LETTER P (U+0050) Ԁ - CYRILLIC CAPITAL LETTER KOMI DE (U+0500)
Q - LATIN CAPITAL LETTER Q (U+0051) Ό - GREEK CAPITAL LETTER OMICRON WITH TONOS (U+038C)
R - LATIN CAPITAL LETTER R (U+0052) ᴚ - LATIN LETTER SMALL CAPITAL TURNED R (U+1D1A)
T - LATIN CAPITAL LETTER T (U+0054) ⊥ - UP TACK (U+22A5)
U - LATIN CAPITAL LETTER U (U+0055) ∩ - INTERSECTION (U+2229)
V - LATIN CAPITAL LETTER V (U+0056) ᴧ - GREEK LETTER SMALL CAPITAL LAMDA (U+1D27)
Y - LATIN CAPITAL LETTER Y (U+0059) ⅄ - TURNED SANS-SERIF CAPITAL Y (U+2144)
[ - LEFT SQUARE BRACKET (U+005B) ] - RIGHT SQUARE BRACKET (U+005D)
_ - LOW LINE (U+005F) ‾ - OVERLINE (U+203E)
a - LATIN SMALL LETTER A (U+0061) ɐ - LATIN SMALL LETTER TURNED A (U+0250)
b - LATIN SMALL LETTER B (U+0062) q - LATIN SMALL LETTER Q (U+0071)
c - LATIN SMALL LETTER C (U+0063) ɔ - LATIN SMALL LETTER OPEN O (U+0254)
d - LATIN SMALL LETTER D (U+0064) p - LATIN SMALL LETTER P (U+0070)
e - LATIN SMALL LETTER E (U+0065) ǝ - LATIN SMALL LETTER TURNED E (U+01DD)
f - LATIN SMALL LETTER F (U+0066) ɟ - LATIN SMALL LETTER DOTLESS J WITH STROKE (U+025F)
g - LATIN SMALL LETTER G (U+0067) ƃ - LATIN SMALL LETTER B WITH TOPBAR (U+0183)
h - LATIN SMALL LETTER H (U+0068) ɥ - LATIN SMALL LETTER TURNED H (U+0265)
i - LATIN SMALL LETTER I (U+0069) ı - LATIN SMALL LETTER DOTLESS I (U+0131)
j - LATIN SMALL LETTER J (U+006A) ɾ - LATIN SMALL LETTER R WITH FISHHOOK (U+027E)
k - LATIN SMALL LETTER K (U+006B) ʞ - LATIN SMALL LETTER TURNED K (U+029E)
l - LATIN SMALL LETTER L (U+006C) ʃ - LATIN SMALL LETTER ESH (U+0283)
m - LATIN SMALL LETTER M (U+006D) ɯ - LATIN SMALL LETTER TURNED M (U+026F)
n - LATIN SMALL LETTER N (U+006E) u - LATIN SMALL LETTER U (U+0075)
r - LATIN SMALL LETTER R (U+0072) ɹ - LATIN SMALL LETTER TURNED R (U+0279)
t - LATIN SMALL LETTER T (U+0074) ʇ - LATIN SMALL LETTER TURNED T (U+0287)
v - LATIN SMALL LETTER V (U+0076) ʌ - LATIN SMALL LETTER TURNED V (U+028C)
w - LATIN SMALL LETTER W (U+0077) ʍ - LATIN SMALL LETTER TURNED W (U+028D)
y - LATIN SMALL LETTER Y (U+0079) ʎ - LATIN SMALL LETTER TURNED Y (U+028E)
{ - LEFT CURLY BRACKET (U+007B) } - RIGHT CURLY BRACKET (U+007D)
‿ - UNDERTIE (U+203F) ⁀ - CHARACTER TIE (U+2040)
⁅ - LEFT SQUARE BRACKET WITH QUILL (U+2045) ⁆ - RIGHT SQUARE BRACKET WITH QUILL (U+2046)
∴ - THEREFORE (U+2234) ∵ - BECAUSE (U+2235)

JavaScript Code

For the JavaScript hackers out there, here's some code to test with (code from revfad):

function flipString(aString)
{
	var last = aString.length - 1;
	//Thanks to Brook Monroe for the
	//suggestion to use Array.join
	var result = new Array(aString.length)
	for (var i = last; i >= 0; --i)
	{
		var c = aString.charAt(i)
		var r = flipTable[c]
		result[last - i] = r != undefined ? r : c
	}
	return result.join('')
}

var flipTable = {
'\u0021' : '\u00A1',
'\u0022' : '\u201E',
'\u0026' : '\u214B',
'\u0027' : '\u002C',
'\u0028' : '\u0029',
'\u002E' : '\u02D9',
'\u0033' : '\u0190',
'\u0034' : '\u152D',
'\u0036' : '\u0039',
'\u0037' : '\u2C62',
'\u003B' : '\u061B',
'\u003C' : '\u003E',
'\u003F' : '\u00BF',
'\u0041' : '\u2200',
'\u0042' : '\u10412',
'\u0043' : '\u2183',
'\u0044' : '\u25D6',
'\u0045' : '\u018E',
'\u0046' : '\u2132',
'\u0047' : '\u2141',
'\u004A' : '\u017F',
'\u004B' : '\u22CA',
'\u004C' : '\u2142',
'\u004D' : '\u0057',
'\u004E' : '\u1D0E',
'\u0050' : '\u0500',
'\u0051' : '\u038C',
'\u0052' : '\u1D1A',
'\u0054' : '\u22A5',
'\u0055' : '\u2229',
'\u0056' : '\u1D27',
'\u0059' : '\u2144',
'\u005B' : '\u005D',
'\u005F' : '\u203E',
'\u0061' : '\u0250',
'\u0062' : '\u0071',
'\u0063' : '\u0254',
'\u0064' : '\u0070',
'\u0065' : '\u01DD',
'\u0066' : '\u025F',
'\u0067' : '\u0183',
'\u0068' : '\u0265',
'\u0069' : '\u0131',
'\u006A' : '\u027E',
'\u006B' : '\u029E',
'\u006C' : '\u0283',
'\u006D' : '\u026F',
'\u006E' : '\u0075',
'\u0072' : '\u0279',
'\u0074' : '\u0287',
'\u0076' : '\u028C',
'\u0077' : '\u028D',
'\u0079' : '\u028E',
'\u007B' : '\u007D',
'\u203F' : '\u2040',
'\u2045' : '\u2046',
'\u2234' : '\u2235'
}

for (i in flipTable)
{
	flipTable[flipTable[i]] = i
}