public function truncate($length, $substring = '')
    {
        if ($length >= $this->getLength()) return $this;

        // Need to further trim the string so we can append the substring
        $substringLength = UTF8::strlen($substring, $this->encoding);
        $length -= $substringLength;

        $truncated = UTF8::substr
        (
            $this->scalarString,
            0,
            $length,
            $this->encoding
        );

        return $this->newSelf($truncated . $substring);
    }