protected function _codePoints($input)
    {
        $codePoints = array(
            'all'      => array(),
            'basic'    => array(),
            'nonBasic' => array()
        );

        $len = Horde_String::length($input, 'UTF-8');
        for ($i = 0; $i < $len; ++$i) {
            $char = Horde_String::substr($input, $i, 1, 'UTF-8');
            $code = $this->_charToCodePoint($char);
            if ($code < 128) {
                $codePoints['all'][] = $codePoints['basic'][] = $code;
            } else {
                $codePoints['all'][] = $codePoints['nonBasic'][] = $code;
            }
        }

        return $codePoints;
    }