Praji’s Weblog

Welcome to praji’s world

Archive for December 2008

¿ʇı̣ əsnqɐ ʇ,uɐɔ noʎ ɟı̣ əpoɔı̣un sı̣ pooɓ ʇɐɥʍ

leave a comment »

At first when my friend put his name upside down in orkut, I was actually amazed. How it is done ??

Its just abusing the unicode, I wonder  which head this actually behind this wonder idea.

Each character is mapped to some other unicode character which resembles as if the character is put upside down.

The mapping is done based on the below given chart.

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)

Since it is a bit difficult to map these manually, people started writing their on scripts for this. Such a sample script is given below.

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
}



Terms of Service | Privacy Policy | Contact Info

Written by praji

December 9, 2008 at 12:50 am

Posted in Uncategorized