void setBaseAlpha(float alpha) {
        this.baseAlpha = alpha;
        colorTags.setBaseAlpha(alpha);

        if (alpha == -1) {
            alpha = baseColor != null ? baseColor.a : 1;
        }

        // Forward the new alpha to the letter quads
        LetterQuad cursor = head.getNext();
        while (!cursor.isTail()) {
            cursor.setAlpha(alpha);
            cursor = cursor.getNext();
        }

        // If the alpha was reset to "default" (-1),
        // then the color tags are potentially reset, and
        // we need to reapply them.  This has to be done
        // second since it may override any alpha values
        // set above... but you still need to do the above
        // since non-color tagged text is treated differently
        // even if part of a color tagged string.
        if (baseAlpha == -1) {
            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();
    }
@param start start index to set style. inclusive.
@param end   end index to set style. EXCLUSIVE.
@param color
jme3-core/src/main/java/com/jme3/font/Letters.java