original
smooth
Système basé sur la grille pour concevoir des symboles et des polices simples. y compris un exemple de police. Principalement destiné aux dessins de traceur.
Les descriptions des symboles ressemblent à ceci:
S4,9:DS6|S3DtRqS2eLp
Vous pouvez utiliser des espaces pour séparer les mouvements, afin que vous puissiez par exemple l'écrire comme ceci:
S4,9: DS6| S3 DtRq S2 eLp
La première section (à gauche de : est la section info . Qui contient actuellement la taille de la grille (comme integers ). Ici, la largeur est 4 et la hauteur est 9 . Autrement dit, il y a 4 et 9 points de grille dans les deux directions. Cela signifie que la largeur du symbole sera 3 et 8 .
Avec le temps, cette section peut contenir d'autres choses. Comme une commande traduisale. (Cela pourrait être utile si vous ne dessinez que dans une certaine section de la grille.)
La section suivante est un ou plusieurs chemins, séparés par le symbole de tuyau | . Plus précisément, l'exemple ci-dessus devrait entraîner les deux chemins de la lettre b :
| <-- p1
|
|/- <-- p2
| |
| |
|-/
Voici quelques exemples de définitions de symboles plus complexes:
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
Lorsque vous tracez un nouveau chemin, le curseur est toujours réinitialisé à l' origin , qui se trouve dans le coin supérieur gauche. Le système de coordonnées est tourné comme ceci:
-
|
- --o-- x+
|
y+
De là, vous pouvez effectuer des mouvements relatifs et absolus. Une fois la commande D entrée, le chemin commencera à être dessiné. Ce qui signifie que vous pouvez déplacer le curseur en position avant de commencer chaque chemin.
Les commandes suivantes sont autorisées:
p N t
| /
L - o - R <-- o is the current position of the cursor
/ |
e S q
Tout nombre (voir ci-dessous) après qu'une commande de direction est interprétée comme la longueur de l'étape, sinon la taille de pas est 1 . Vous pouvez également utiliser deux nombres séparés par une virgule. Par exemple, q2.5,3 déplacera le curseur de deux marches et demie vers la droite, et trois étapes vers le bas. De même, p2,1/2 déplacera le curseur, deux étapes à gauche et un demi-pas en avant.
Les nombres acceptés sont soit entiers: 1 , fractions: 1/2 ou décimales: 3.5 . Notez que toutes les décimales sont converties en fractions. Les décimales sont une commodité qui vous permet d'écrire 4.5 au lieu de 9/2 . Cependant, vous mieux utiliser 13/3 au lieu de 4.33... Ce dernier ne s'additionnera probablement pas à l'intérieur des limites de la grille. Vous pouvez également utiliser plusieurs commandes dans la même direction, si vous le trouvez plus facile. Par exemple R4 R1/2 .
Cela signifie que si vous sortez des erreurs hors limites, c'est soit parce que vous utilisez une décimale qui ne "s'additionne pas correctement" à l'intérieur de la grille. Ou simplement parce que le nombre résultant est en dehors de la grille.
Les nombres sont convertis en flottement avant d'être exportés vers json ou svg
Les mouvements absolus suivants sont autorisés
Mx,y pour passer à la position x,y par rapport à l' origin .Z passe à la première position du chemin dessiné. (par défaut est d' origin )W pour se déplacer pour se déplacer vers le côté droit du dessin.w pour se déplacer vers le côté gauche du dessin.H pour se déplacer vers le haut du dessin.h pour se déplacer vers le bas du dessin. Vous pouvez fournir des groupes de substitution dans la propriété des groups de la spécification json . Les noms des groupes doivent toujours commencer par un ( et se terminer par a ) . Tout (group) dans une définition de chemin sera remplacé textuellement jusqu'à ce qu'il ne reste plus ( ou ) dans la spécification de chemin. (Remarque: cela signifie que vous pouvez provoquer des boucles infinies ainsi que des fuites de mémoire.)
Les chemins de police sont inclus dans dat/*/res.json , ainsi que les SVG pour chaque symbole. Les descriptions brutes sont dans dat/*.json .
Pour le moment, les polices incluses sont:
original : lettres en blocsmooth : Version plus lisse. Afin d'utiliser cette bibliothèque
python3 setup.py install --user
Vous pouvez ensuite utiliser la bibliothèque à partir de votre code. Voir gridfont/__init__.py ou gridfont/writer.py pour avoir une idée. Plus de documents pourraient être ajoutés plus tard, si cela semble utile aux gens.
Pour voir d'autres options utiliser:
gridfont --help
Pour analyser un fichier symbole .json tel que dat/font.json exécutez ce qui suit, pour sortir les résultats vers le out
gridfont parse font.json out [--svg]
Si vous incluez l'indicateur --svg , un SVG sera également créé pour chaque symbole.
Lorsque vous avez un fichier de symboles analysé (tel dat/original/res.json ), vous pouvez écrire des SVG avec ceci:
gridfont write res.json tmp.svg 'my text'
Ceci est un projet que j'ai commencé parce que je voulais une simple "police" qui me permettrait de dessiner facilement des glyphes en ligne pendant le traçage. Je ne sais pas si je finirai par développer cela beaucoup plus loin, mais je suis ouvert aux suggestions.
2 et 3 ?AZCeci est très similaire aux polices Hershey: https://en.wikipedia.org/wiki/Hershey_fonts. Que vous devriez probablement utiliser, car ils existent depuis un certain temps
Cette méthode est également similaire au dessin dans Logo: https://en.wikipedia.org/wiki/Logo_(programming_language)
Les définitions de chemin sont également similaires au format SVG (mais plus simple): https://en.wikipedia.org/wiki/Scalable_vector_graphics
Si vous trouvez cela intéressant, vous aimerez peut-être également le langage d'emballage radical récursif: https://github.com/lingdong-/rrpl
Metafont (latex): https://en.wikipedia.org/wiki/metafont
Leonsans: https://github.com/cmiscm/leonsans