diff --git a/QuestPDF/Drawing/TextShaper.cs b/QuestPDF/Drawing/TextShaper.cs index 2df1a3b..40ea223 100644 --- a/QuestPDF/Drawing/TextShaper.cs +++ b/QuestPDF/Drawing/TextShaper.cs @@ -47,12 +47,14 @@ namespace QuestPDF.Drawing var xOffset = 0f; var yOffset = 0f; - uint lastCluster = glyphInfos.LastOrDefault().Cluster; + // used for letter spacing calculation + var lastCluster = glyphInfos.LastOrDefault().Cluster; var glyphs = new ShapedGlyph[length]; for (var i = 0; i < length; i++) { - //We need to advance xOffset by the current letter spacing after each unicode cluster. + // letter spacing should be applied between glyph clusters, not between individual glyphs, + // different cluster id indicates the end of the glyph cluster if (lastCluster != glyphInfos[i].Cluster) { lastCluster = glyphInfos[i].Cluster; @@ -65,6 +67,7 @@ namespace QuestPDF.Drawing Position = new SKPoint(xOffset + glyphPositions[i].XOffset * scaleX, yOffset - glyphPositions[i].YOffset * scaleY), Width = glyphPositions[i].XAdvance * scaleX }; + xOffset += glyphPositions[i].XAdvance * scaleX; yOffset += glyphPositions[i].YAdvance * scaleY; }