private string GetMetrics(string fontName, float emHeight, bool isBold, bool isItalic) { if (textMetrics.TextFaceIsInstalled(fontName)) { StringBuilder builder = new StringBuilder(); ITextFaceMetrics metrics = textMetrics.GetTextFaceMetrics(fontName, emHeight, Util.GetTextEffects(isBold, isItalic)); builder.AppendFormat("Font metrics: "); builder.AppendLine(); builder.AppendFormat(" Em height: {0}", metrics.EmHeight); builder.AppendLine(); builder.AppendFormat(" Ascent: {0}", metrics.Ascent); builder.AppendLine(); builder.AppendFormat(" Descent: {0}", metrics.Descent); builder.AppendLine(); builder.AppendFormat(" CapHeight: {0}", metrics.CapHeight); builder.AppendLine(); builder.AppendFormat(" Ascent+Descent: {0}", metrics.Ascent + metrics.Descent); builder.AppendLine(); builder.AppendFormat(" EmHeight-(Ascent+Descent): {0}", metrics.EmHeight - (metrics.Ascent + metrics.Descent)); builder.AppendLine(); builder.AppendFormat(" CapHeight+Descent: {0}", metrics.CapHeight + metrics.Descent); builder.AppendLine(); builder.AppendFormat(" Space width: {0}", metrics.SpaceWidth); builder.AppendLine(); return(builder.ToString()); } else { return(string.Format("Face name '{0}' is not installed.", fontName)); } }
private void DrawSingleLineText(IGraphicsTarget g, string text, FontDesc fontDesc, PointF pt, StringAlignment horizAlignment, StringAlignment vertAlignment) { object font = new object(); g.CreateFont(font, fontDesc.Name, fontDesc.EmHeight, fontDesc.TextEffects); ITextFaceMetrics fontMetrics = textMetrics.GetTextFaceMetrics(fontDesc.Name, fontDesc.EmHeight, fontDesc.TextEffects); SizeF size = fontMetrics.GetTextSize(text); switch (horizAlignment) { case StringAlignment.Near: break; case StringAlignment.Center: pt.X = pt.X - size.Width / 2F; break; case StringAlignment.Far: pt.X = pt.X - size.Width; break; } switch (vertAlignment) { case StringAlignment.Near: break; case StringAlignment.Center: pt.Y = pt.Y - size.Height / 2F; break; case StringAlignment.Far: pt.Y = pt.Y - size.Height; break; } g.DrawText(text, font, blackBrush, pt); fontMetrics.Dispose(); }