code: function _getCharType(ch) {
        var charCode = ch.charCodeAt(),
            range = charCode >> 8,
            rangeIdx = _UNICODE_RANGES_MAP[range];
  
        if (rangeIdx !== undefined) {
          return _UNICODE_TYPES[rangeIdx * 256 + (charCode & 0xFF)];
        } else if (range === 0xFC || range === 0xFD) {
          return "AL";
        } else if (_LTR_RANGES_REG_EXPR.test(range)) {
          //unlikely case
          return "L";
        } else if (range === 8) {
          // even less likely
          return "R";
        }
  
        return "N"; //undefined type, mark as neutral
      }
docs: for reference see 3.2 in http://unicode.org/reports/tr9/