private void ProcessTextAdv(string text, int index, out GlyphData glyphData, out Rect uvRect, out float glyphXAdv, out float glyphXOff)
{
char glyph = text[index];
int charIndex = (int)glyph > CharLookup.Length ? 0 : CharLookup[(int)glyph];
this.texture.LookupAtlas(charIndex, out uvRect);
this.GetGlyphData(glyph, out glyphData);
glyphXOff = -glyphData.offsetX;
if (this.kerning && !this.monospace && !this.needsReload)
{
char glyphNext = index + 1 < text.Length ? text[index + 1] : ' ';
GlyphData glyphDataNext;
this.GetGlyphData(glyphNext, out glyphDataNext);
int minSum = int.MaxValue;
for (int k = 0; k < glyphData.kerningSamplesRight.Length; k++)
minSum = Math.Min(minSum, glyphData.kerningSamplesRight[k] + glyphDataNext.kerningSamplesLeft[k]);
glyphXAdv = (this.monospace ? this.maxGlyphWidth : -glyphData.offsetX + glyphData.width) + this.spacing - minSum;
}
else
glyphXAdv = (this.monospace ? this.maxGlyphWidth : -glyphData.offsetX + glyphData.width) + this.spacing;
}