The javadoc for the method HtmlTools.encodeId() mentions the pattern [A-Za-z][A-Za-z0-9:_.-]* for its output. To me, this looks like the term "letter" in meant to refer to ASCII characters in this context. However, the employed method Character.isLetter() will classify characters according to the Unicode data file. For instance, the characters "ä" and "ß" are letters in the Unicode sense. encodeId() will pass these through to its output, violating the ASCII-only pattern stated in its javadoc.