void setText(final String text) {
        colorTags.setText(text);
        plainText = colorTags.getPlainText();

        head.setNext(tail);
        tail.setPrevious(head);
        current = head;
        if (text != null && plainText.length() > 0) {
            LetterQuad l = head;
            CharSequence characters = plainText;
            if (font.getGlyphParser() != null) {
                characters = font.getGlyphParser().parse(plainText);
            }

            for (int i = 0; i < characters.length(); i++) {
                l = l.addNextCharacter(characters.charAt(i));
                if (baseColor != null) {
                    // Give the letter a default color if
                    // one has been provided.
                    l.setColor(baseColor);
                }
            }
        }

        LinkedList<Range> ranges = colorTags.getTags();
        if (!ranges.isEmpty()) {
            for (int i = 0; i < ranges.size()-1; i++) {
                Range start = ranges.get(i);
                Range end = ranges.get(i+1);
                setColor(start.start, end.start, start.color);
            }
            Range end = ranges.getLast();
            setColor(end.start, plainText.length(), end.color);
        }

        invalidate();
    }
Manage and align LetterQuads
@author YongHoon
jme3-core/src/main/java/com/jme3/font/Letters.java