2011/11/19

倒字 flip text

今天在塗鴉牆上看到國外網友的留言:

看的出有什麼特別的嗎?

前三行字都是倒過來的喔!
puodsǝɹ oɥʍ ǝǝs oʇ ƃuıɥɔʇɐʍ ǝq ןןıʍ I ˙snʇɐʇs ɹnoʎ oʇ ǝʇsɐd puɐ ʎdoɔ sıɥʇ pɐǝɹ uɐɔ noʎ ɟI...ʇsod ı ʇɐɥʍ oʇ uoıʇuǝʇʇɐ ʎɐd spuǝıɹɟ ʎɯ ɟo ʎuɐɯ ʍoH
And yes I read it up side down.............................
仔細瞧瞧,這不是圖片,每個字都是實實在在的文字。原以為這是某個語言的文字,但用翻譯軟體卻無法辨識。後來想想,這應該不是單一語言的文字,而是在各種語言的文字中找出看起來像是倒過的文字。分享的網友當然不可能這麼閒、一個字一個字去找,應該是有轉換程式可以幫忙轉換。後來果真在網路上找到倒字產生器:

  • http://www.fliptext.org/
  • http://www.fliptitle.com/
  • http://www.fliptextgenerator.com/

使用方式大同小異,都是在上方輸入英文字,下方自動顯示轉換後的文字。
不過這三個應該都不是網友用的那個,因為這三個轉換器,英文大寫都會轉換成小寫,但網友留言的 H 和 I 都是大寫,應該還有其他的轉換器。

另外,這三個網站都是用 javascript 進行文字轉換,所以看一下網頁原始碼就能知道程式是怎麼寫的,每個字的對應的字碼也一目了然。以下是 fliptext.org 上的寫法,原始檔可從原網站此處下載。

// from http://www.fliptext.org
function flipChar(c) {
 if (c == 'a') {
  return '\u0250'
 }
 else if (c == 'b') {
  return 'q'
 }
 else if (c == 'c') {
  return '\u0254'  
 }
 else if (c == 'd') {
  return 'p'
 }
 else if (c == 'e') {
  return '\u01DD'
 }
 else if (c == 'f') {
  return '\u025F' 
 }
 else if (c == 'g') {
  return 'b'
 }
 else if (c == 'h') {
  return '\u0265'
 }
 else if (c == 'i') {
  return '\u0131'//'\u0131\u0323' 
 }
 else if (c == 'j') {
  return '\u0638'
 }
 else if (c == 'k') {
  return '\u029E'
 }
 else if (c == 'l') {
  return '\u05DF'
 }
 else if (c == 'm') {
  return '\u026F'
 }
 else if (c == 'n') {
  return 'u'
 }
 else if (c == 'o') {
  return 'o'
 }
 else if (c == 'p') {
  return 'd'
 }
 else if (c == 'q') {
  return 'b'
 }
 else if (c == 'r') {
  return '\u0279'
 }
 else if (c == 's') {
  return 's'
 }
 else if (c == 't') {
  return '\u0287'
 }
 else if (c == 'u') {
  return 'n'
 }
 else if (c == 'v') {
  return '\u028C'
 }
 else if (c == 'w') {
  return '\u028D'
 }
 else if (c == 'x') {
  return 'x'
 }
 else if (c == 'y') {
  return '\u028E'
 }
 else if (c == 'z') {
  return 'z'
 }
 else if (c == '[') {
  return ']'
 }
 else if (c == ']') {
  return '['
 }
 else if (c == '(') {
  return ')'
 }
 else if (c == ')') {
  return '('
 }
 else if (c == '{') {
  return '}'
 }
 else if (c == '}') {
  return '{'
 }
 else if (c == '?') {
  return '\u00BF'  
 }
 else if (c == '\u00BF') {
  return '?'
 }
 else if (c == '!') {
  return '\u00A1'
 }
 else if (c == "\'") {
  return ','
 }
 else if (c == ',') {
  return "\'"
 }
 else if (c == '.') {
  return '\u02D9'
 }
 else if (c == '_') {
  return '\u203E'
 }
 else if (c == ';') {
  return '\u061B'
 }
 else if (c == '9') {
  return '6'
 }
 else if (c == '6') {
  return '9'
 }
 return c;
}