public CharacterBoundingBox GetBoundingBox(int characterCode) { if (boundingBoxCache.TryGetValue(characterCode, out var cached)) { return(cached); } var matrix = GetFontMatrix(); var boundingBox = GetBoundingBoxInGlyphSpace(characterCode); boundingBox = matrix.Transform(boundingBox); var characterIdentifier = CMap.ConvertToCid(characterCode); var width = CidFont.GetWidthFromFont(characterIdentifier); var advanceWidth = matrix.TransformX(width); var result = new CharacterBoundingBox(boundingBox, advanceWidth); boundingBoxCache[characterCode] = result; return(result); }
public CharacterBoundingBox GetBoundingBox(int characterCode) { var matrix = GetFontMatrix(); var boundingBox = GetBoundingBoxInGlyphSpace(characterCode); boundingBox = matrix.Transform(boundingBox); var characterIdentifier = CMap.ConvertToCid(characterCode); var width = CidFont.GetWidthFromFont(characterIdentifier); var advanceWidth = matrix.Transform(new PdfPoint(width, 0)).X; return(new CharacterBoundingBox(boundingBox, advanceWidth)); }