Cómo obtener la ruta de las curvas Bezier con coordenadas de valor decimal en CorelDraw

Necesito obtener la ruta de una letra de alguna fuente que se transforma en curvas. Tengo un lienzo de 512x512 px con una letra de 350x350 px, por ejemplo, "R" en el medio. Necesito exportar de alguna manera coordenadas de puntos de curvas Bezier.

Entonces tengo ese lienzo con coordenadas de 0,0 a 511,511 y alguna forma en él. Pero, cuando lo guardo como *.svg en la ruta, por ejemplo (256.124 373.811 l-85.544 -46.3289 c-21.8516,33.0922 -34.017,54.9238).

Pero necesito coordenadas de píxeles en formato decimal y desde el rango 0,0 hasta 511,511.

¿Hay alguna manera de obtener un camino como ese?

Respuestas (1)

Ya decodifiqué la ruta en .svg de CorelDraw.

En primer lugar, Corel y la mayoría de los editores gráficos tienen un sistema de coordenadas cartesianas (el punto [0,0] está en la esquina inferior izquierda). Por otro lado, SVG tiene un sistema diferente con un punto de inicio en la esquina superior izquierda. A partir de esto, cuando tengo un lienzo con un tamaño de 512x512 px y coloco el mouse sobre él, veo que las coordenadas de un punto son, por ejemplo, [128,312] en la ruta SVG, será el punto [128,200]. Vea las imágenes a continuación.

Sistema de coordenadas cartesianas SVG

A continuación, la ruta continúa L-89,8385 -46,3289 C-22,9477,33,0922 -35,7249,54,9238 -38,4096,65,4971. Esto significa Línea a punto, que es 89,84 px más pequeña en el eje x y 46,33 px más pequeña en el eje y. Básicamente, deduce esos números de las coordenadas del último punto actual.

Por último, C curva media a, curva de Beziér exactamente cúbica. Esto es bastante extraño. -22,9477,33,0922 significa -22,95 px en el eje x y +33,09 px en el eje y para el punto de control 1. Como se mencionó, se calcula desde el último punto de la última curva. ¡El siguiente -35,7249,54,9238 es para el punto de control 2 también calculado desde el último punto de la última curva NO desde el punto de control 1! Y finalmente -38,4096,65,4971 pertenece al punto final de la curva actual. Tal vez haya notado que no se menciona el punto de inicio de la curva. El punto de inicio es, por supuesto, el punto final de la última curva/línea/...

Hasta el final, puede ver algo como esto en la ruta SVG -1,95237,7,5638 -6,18545,13,9241 -12,7772,19,0808 -6,59057,5,07167 -11,3103 ,7,65002. Estas son las próximas curvas. No hay letra como L,C,M o cualquier otra sino que son curvas porque no había C y ninguna otra letra hasta este punto. Entonces necesita obtener 3 números como -1,95237,7,5638 para obtener el siguiente punto de control 1, el punto de control 2 y el punto final.

Espero que esto ayude a alguien.