J'aimerais pouvoir extraire la géométrie pour chaque lettre dans un fichier de polices TrueType. Chaque lettre aurait un ensemble de coordonnées, en supposant que chaque lettre soit dans sa propre réseau.
Comme une image dit mille mots - je voudrais obtenir les sommets pour des lettres similaires à l'image ci-dessous (avec la permission de http://polymaps.org/ ) p>
p>
Grâce à l'indice d'utilisation GDI, qui est maintenant intégré à .NET System.Drawing.Drawing2D, j'ai reçu le code suivant pour créer des polygones WKT. Aucune courbe bézier possible. Et même après que les lettres ont été retournées et tournées, des chemins ne rejoindront toujours pas correctement. p>
p> p>
5 Réponses :
dans Adobe Illustrator p> Mis à part à l'aide d'une application, je ne sais pas comment faire cette programmation. P> P>
Très agréable. Jamais utilisé Illustrator, mais je vois qu'il y a un essai disponible au téléchargement. Incluent-il un langage de script pour extraire les coordonnées au texte?
Malheureusement, je ne connais pas la réponse à cela :(
Pour Windows, vous pouvez utiliser GDIPLUS. Créez un graphiquePath et appelez ajoutestring () sur ça. p>
Examinez ensuite les pathdata ou les points de passage. P>
Peut-être que vous pouvez utiliser une bibliothèque de polices telle que FreeType 2 pour décoder la police? P>
Inkscape est gratuit et comprend Texte à la fonctionnalité de chemin . Certaines fonctionnalités d'inkscape sont dirigées par la commande, mais je ne sais pas si cela gérera votre problème exactement. Le format natif de l'inkscape est SVG. P>
J'avais besoin de la sortie dans MATLAB, a donc pris la réponse correctement marquée à l'aide de l'interface MATLAB.NET. Code source affiché ci-dessous
clear all % Import .NET Framework System.Drawing NET.addAssembly('System.Drawing'); % Display all available System Fonts (optional) AvailableFonts = System.Drawing.Text.InstalledFontCollection(); for i=1:AvailableFonts.Families.Length disp(AvailableFonts.Families(i).Name); end % Get GraphicsPath of chosen Font and text string % https://msdn.microsoft.com/en-us/library/ms142533(v=vs.110).aspx FontData= System.Drawing.Drawing2D.GraphicsPath(); text='Hello World'; font=System.Drawing.FontFamily('Arial'); style=cast(System.Drawing.FontStyle.Regular,'Int32'); emSize=48; origin=System.Drawing.Point(0,0); format=System.Drawing.StringFormat(); FontData.AddString(text,font,style,emSize,origin,format); %Extract X,Y data from FontData for i=1:FontData.PathPoints.Length x(i)=FontData.PathPoints(i).X; y(i)=-FontData.PathPoints(i).Y; end plot(x,y)
Je suppose que ce serait assez facile de faire apparaître du texte dans Adobe Illustrator et de convertir le texte en chemin. C'est plus une question pour SuperUserer.com, cependant.
J'espérais le faire sans un logiciel coûteux et construit autour d'un script réutilisable
À propos de votre «A» A l'air incorrect: le problème est qu'il y a deux chemins. En plus de Pathdata, vous devrez examiner les try de tremblement parallèle msdn.microsoft.com/en-us/Library/... . Lorsque le type de point est 0, vous devrez fermer la dernière figure et commencer une nouvelle.
OH YA, et vous pouvez également appeler "Aplatissez ()" sur le pavillon graphique pour convertir les courbes de Bézier en segments de ligne droite.