private void cmdMeasureString_Click(object sender, EventArgs e) { //How to measure user's string... //this demostrate step-by-step //similar to ... selectedTextPrinter.DrawString(printTextBuffer, x_pos, y_pos); string str = txtInputChar.Text; // Typeface typeface = _basicOptions.Typeface; float fontSizeInPoints = _basicOptions.FontSizeInPoints; var layout = new Typography.TextLayout.GlyphLayout(); layout.Typeface = typeface; layout.ScriptLang = _basicOptions.ScriptLang; layout.PositionTechnique = _basicOptions.PositionTech; layout.EnableLigature = false;// true layout.EnableComposition = true; //3. //3.1 : if you want GlyphPlanList too. //var resultGlyphPlanList = new Typography.TextLayout.GlyphPlanList(); //Typography.TextLayout.MeasuredStringBox box = layout.LayoutAndMeasureString(str.ToCharArray(), 0, str.Length, _basicOptions.FontSizeInPoints, resultGlyphPlanList); //or //3.2 : only MeasuredStringBox Typography.TextLayout.MeasuredStringBox box = layout.LayoutAndMeasureString( str.ToCharArray(), 0, str.Length, fontSizeInPoints); this.lblStringSize.Text = "measure (W,H)= (" + box.width.ToString() + "," + (box.AscendingInPx - box.DescendingInPx) + ") px"; }