public function toUnicode()
    {
        $h = ord($this->char{0});

        if ($h <= 0x7F) {
            return $h;
        } else {
            if ($h < 0xC2) {
                return false;
            } else {
                if ($h <= 0xDF) {
                    return ($h & 0x1F) << 6 | (ord($this->char{1}) & 0x3F);
                } else {
                    if ($h <= 0xEF) {
                        return ($h & 0x0F) << 12 | (ord($this->char{1}) & 0x3F) << 6 | (ord($this->char{2}) & 0x3F);
                    } else {
                        if ($h <= 0xF4) {
                            return ($h & 0x0F) << 18 | (ord($this->char{1}) & 0x3F) << 12 | (ord(
                                    $this->char{2}
                                ) & 0x3F) << 6 | (ord(
                                    $this->char{3}
                                ) & 0x3F);
                        } else {
                            return false;
                        }
                    }
                }
            }
        }
    }