original
smooth
Sistema basado en la cuadrícula para diseñar símbolos y fuentes simples. incluyendo una fuente de ejemplo. Principalmente destinado a dibujos de plotter.
Las descripciones de símbolos se ven así:
S4,9:DS6|S3DtRqS2eLp
Puede usar espacios para separar movimientos, para que, por ejemplo, pueda escribirlo así:
S4,9: DS6| S3 DtRq S2 eLp
La primera sección (izquierda de : es la sección info . Que actualmente contiene el tamaño de la cuadrícula (como integers ). Aquí el ancho es 4 y la altura es 9 . Es decir, hay 4 y 9 puntos de cuadrícula en las dos direcciones. Eso significa que el ancho del símbolo será 3 y 8 .
Con el tiempo, esta sección puede contener otras cosas. Como un comando de traducción. (Esto podría ser útil si solo está dibujando dentro de una determinada sección de la cuadrícula).
La siguiente sección es una o más rutas, separadas por el símbolo de la tubería | . Específicamente, el ejemplo anterior debería dar como resultado las dos rutas de la letra b :
| <-- p1
|
|/- <-- p2
| |
| |
|-/
Aquí hay algunos ejemplos de definiciones de símbolos más complejas:
asterisk: S3,9:M1,3DS|S3.75Dq1,0.25t1,0.25|M0.25,5Dt0.75,1q0.75,1
w: S5,9:S2D q1,4 t1,4 q1,4 t1,4
y: S4,9:S2Dq1.5,4|M3,2De1.5,4e0.5,1e
Al dibujar un nuevo camino, el cursor siempre se restablece al origin , que se encuentra en la esquina superior izquierda. El sistema de coordenadas se gira así:
-
|
- --o-- x+
|
y+
Desde allí puedes realizar movimientos relativos y absolutos. Una vez que se ingrese el comando D la ruta comenzará a dibujar. Lo que significa que puede mover el cursor a la posición antes de comenzar cada ruta.
Se permiten los siguientes comandos:
p N t
| /
L - o - R <-- o is the current position of the cursor
/ |
e S q
Cualquier número (ver más abajo) después de un comando de dirección se interpreta como la longitud del paso, de lo contrario, el tamaño del paso es 1 . También puede usar dos números separados por una coma. Por ejemplo, q2.5,3 moverá el cursor dos pasos y medio hacia la derecha y tres pasos hacia abajo. Del mismo modo, p2,1/2 moverá el cursor que quedan dos pasos y medio paso hacia arriba.
Los números aceptados son enteros: 1 , fracciones: 1/2 o decimales: 3.5 . Tenga en cuenta que todos los decimales se convierten en fracciones. Los decimales son una conveniencia que le permite escribir 4.5 en lugar de 9/2 . Sin embargo, es mejor usar 13/3 en lugar de 4.33... Lo más probable es que este último no sumará dentro de los límites de la cuadrícula. También puede usar múltiples comandos en la misma dirección, si lo encuentra más fácil. Por ejemplo R4 R1/2 .
Eso significa que si sales de los errores de los límites, es porque estás usando un decimal que no "suma" correctamente dentro de la cuadrícula. O simplemente porque el número resultante está fuera de la cuadrícula.
Los números se convierten en flotación antes de exportarse a json o svg
Se permiten los siguientes movimientos absolutos
Mx,y para moverse a la posición x,y en relación con el origin .Z Muévete a la primera posición de la ruta dibujada. (predeterminado es de origin )W para moverse para moverse hacia el lado derecho del dibujo.w para moverse hacia el lado izquierdo del dibujo.H para moverse a la parte superior del dibujo.h para moverse al fondo del dibujo. Puede proporcionar grupos de sustitución en la propiedad groups de la especificación json . Los nombres de los grupos siempre deben comenzar con A ( y terminar con A ) . Cualquier (group) en una definición de ruta se reemplazará textualmente hasta que no quede más ( o ) en la especificación de ruta. (Nota: Esto significa que puede causar bucles infinitos, así como fugas de memoria).
Las rutas de fuentes se incluyen en dat/*/res.json , junto con SVG para cada símbolo. Las descripciones sin procesar están en dat/*.json .
Por el momento, las fuentes incluidas son:
original : Letras en bloquesmooth : versión más suave. Para usar esta biblioteca
python3 setup.py install --user
Luego puede usar la biblioteca de su código. Consulte gridfont/__init__.py o gridfont/writer.py para obtener una idea. Se podría agregar más documentación más adelante, si esto parece útil para las personas.
Para ver otras opciones, se usa:
gridfont --help
Para analizar un símbolo .json como dat/font.json ejecuta lo siguiente, para generar los resultados al directorio out
gridfont parse font.json out [--svg]
Si incluye la bandera --svg , también se creará un SVG para cada símbolo.
Cuando tiene un archivo de símbolos analizado (dicho dat/original/res.json ), puede escribir SVG con él como este:
gridfont write res.json tmp.svg 'my text'
Este es un proyecto que comencé porque quería una "fuente" simple que me permitiera dibujar fácilmente glifos basados en línea mientras traza. No sé si terminaré desarrollando tanto más, pero estoy abierto a sugerencias.
2 y 3 ?AZEsto es muy similar a las fuentes de Hershey: https://en.wikipedia.org/wiki/hershey_fonts. Que probablemente deberías usar, ya que han existido por algún tiempo
Este método también es similar al dibujo en el logotipo: https://en.wikipedia.org/wiki/logo_(programming_language)
Las definiciones de ruta también son similares al formato SVG (pero más simple): https://en.wikipedia.org/wiki/scalable_vector_graphics
Si encuentra esto interesante, también le puede gustar el lenguaje de embalaje radical recursivo: https://github.com/lingdong-/rrplpl
MetaFont (Latex): https://en.wikipedia.org/wiki/metafont
Leonsans: https://github.com/cmiscm/leonsans