There is a bug in the LabelSplitter class where the start index would be incorrectly advanced at the end of the buildFontRanges() method. This happened when a font could not be found to display the character at the current index, the start-index would then be incremented in the else. This can lead to an incorrect font-range from being created, or at worst a StringIndexOutOfBoundsException.
I encountered the StringIndexOutOfBoundsException when I tried to render the first couple of layers of OpenStreetMap tiles in GeoServer for the entire world. The exception causes the entire tile-rendering process to just bomb out and you cannot continue to render tiles past this point. However, this is quite rare as I only encountered this once, and only for a single label somewhere in China. So, this is most probably a very rare edge case that causes this exception to pop up.
You can follow the issue here: https://github.com/geotools/geotools/pull/2041