static void DumpContours( List contours ) { StringBuilder sb = new StringBuilder(); foreach (GlyphContour c in contours) { sb.Append("{ "); List parts = c.parts; foreach (GlyphPart part in parts) { switch (part.Kind) { case GlyphPartKind.Unknown: break; case GlyphPartKind.Line: { GlyphLine l = (GlyphLine)part; sb.Append("" + l.x0 + ", " + l.y0 + "; "); sb.Append(l.x1 + ", " + l.y1 + "; "); break; } case GlyphPartKind.Curve3: { GlyphCurve3 l = (GlyphCurve3)part; sb.Append("" + l.x0 + ", " + l.y0 + "; "); sb.Append("( " + l.p2x + ", " + l.p2y + "; " + l.x + ", " + l.y + " ); "); break; } case GlyphPartKind.Curve4: { GlyphCurve4 l = (GlyphCurve4)part; sb.Append("" + l.x0 + ", " + l.y0 + "; "); sb.Append("( " + l.p2x + ", " + l.p2y + "; " + "; " + l.p3x + ", " + l.p3y + + l.x + ", " + l.y + " ); "); break; } } } sb.Append(" # }"); } Console.WriteLine(sb.ToString()); }