private void RenderWord(float x, float y, TextNode node)
{
if (node.Type != TextNodeType.Word)
return;
int charGaps = node.Text.Length - 1;
bool isCrumbleWord = CrumbledWord(node);
if (isCrumbleWord)
charGaps++;
int pixelsPerGap = 0;
int leftOverPixels = 0;
if (charGaps != 0)
{
pixelsPerGap = (int)node.LengthTweak / charGaps;
leftOverPixels = (int)node.LengthTweak - pixelsPerGap * charGaps;
}
for(int i = 0; i < node.Text.Length; i++){
char c = node.Text[i];
if(fontData.CharSetMapping.ContainsKey(c)){
var glyph = fontData.CharSetMapping[c];
RenderGlyph(x,y,c, false);
if (IsMonospacingActive)
x += MonoSpaceWidth;
else
x += (int)Math.Ceiling(glyph.rect.Width + fontData.meanGlyphWidth * Options.CharacterSpacing + fontData.GetKerningPairCorrection(i, node.Text, node));
x += pixelsPerGap;
if (leftOverPixels > 0)
{
x += 1.0f;
leftOverPixels--;
}
else if (leftOverPixels < 0)
{
x -= 1.0f;
leftOverPixels++;
}
}
}
}