Me gustaría poder extraer la geometría de cada letra en un archivo de fuentes TrueType. Cada letra tendría un conjunto de coordenadas, asumiendo que cada letra está en su propia grilla.Extraer Geometría de la Fuente
Como una imagen vale más que mil palabras - Me gustaría obtener los vértices de cartas similares a la imagen de abajo (cortesía de http://polymaps.org/)
actualización
Gracias ala sugerencia de usar GDI, que ahora se incorpora a .NET System.Drawing.Drawing2D Obtuve el siguiente código para crear polígonos WKT. No hay curvas bezier posibles. E incluso después de que las letras se voltearan y giraran, algunos caminos aún no se unirían correctamente.
// C# Visual Studio
GraphicsPath gp = new GraphicsPath();
Point origin = new Point(0, 0);
StringFormat format = new StringFormat();
FontFamily ff = new FontFamily("Arial");
//enter letter here
gp.AddString("T", ff, 0, 12, origin, format); //ABCDEFGHIJKLMNOPQRSTUVWXYZ
StringBuilder sb = new StringBuilder();
sb.AppendLine("DECLARE @g geometry;");
sb.Append("SET @g = geometry::STGeomFromText('POLYGON ((");
Matrix flipmatrix = new Matrix(-1, 0, 0, 1, 0, 0);
gp.Transform(flipmatrix);
Matrix rotationtransform = new Matrix();
RectangleF r = gp.GetBounds();
// Get center point
PointF rotationPoint = new PointF(r.Left + (r.Width/2), r.Top + (r.Height/2));
rotationtransform.RotateAt(180, rotationPoint);
gp.Transform(rotationtransform);
//gp.CloseAllFigures(); //make sure the polygon is closed - does not work
foreach (PointF pt in gp.PathData.Points)
{
sb.AppendFormat("{0} {1},", pt.X, pt.Y);
}
PointF firstpoint = gp.PathData.Points[0];
sb.AppendFormat("{0} {1}", firstpoint.X, firstpoint.Y); //make last point same as first
sb.Append("))',0);");
sb.AppendLine("");
sb.AppendLine("SELECT @g");
System.Diagnostics.Debug.WriteLine(sb.ToString());
Supongo que sería muy fácil sacar algo de texto en Adobe Illustrator y convertir el texto en una ruta. Sin embargo, esto es más una pregunta para superuser.com. –
Esperaba hacerlo sin un paquete de software costoso, y construido alrededor de un script reutilizable – geographika
sobre su 'A' que parece incorrecta: El problema es que hay dos rutas. Además de PathData, tendrá que mirar la matriz paralela PathTypes http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.graphicspath.pathtypes.aspx. Cuando el tipo de un punto es 0, tendrá que cerrar la última figura y comenzar una nueva. –