original
smooth
Gitterbasiertes System zum Entwerfen einfacher Symbole und Schriftarten. einschließlich einer Beispielschrift. Hauptsächlich für Plotterzeichnungen bestimmt.
Die Symbolbeschreibungen sehen so aus:
S4,9:DS6|S3DtRqS2eLp
Sie können Räume verwenden, um die Bewegungen zu trennen, damit Sie sie beispielsweise so schreiben können:
S4,9: DS6| S3 DtRq S2 eLp
Der erste Abschnitt (links von : ist der info -Abschnitt. Die derzeit die Größe des Netzes (als integers ) enthält. Hier ist die Breite 4 und die Höhe 9 . Das heißt, es gibt 4 und 9 Gitterpunkte in die beiden Richtungen. Das bedeutet, dass die Breite des Symbols 3 und 8 beträgt.
Mit der Zeit kann dieser Abschnitt andere Dinge enthalten. Wie ein Übersetzungsbefehl. (Dies kann nützlich sein, wenn Sie nur innerhalb eines bestimmten Abschnitts des Netzes zeichnen.)
Der nächste Abschnitt ist ein oder mehrere Pfade, getrennt durch das Rohrsymbol | . Insbesondere sollte das obige Beispiel zu den beiden Pfaden des Buchstabens b führen:
| <-- p1
|
|/- <-- p2
| |
| |
|-/
Hier sind einige Beispiele für komplexere Symboldefinitionen:
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
Beim Zeichnen eines neuen Pfades wird der Cursor immer auf den origin zurückgesetzt, der sich in der oberen linken Ecke befindet. Das Koordinatensystem wird so gedreht:
-
|
- --o-- x+
|
y+
Von dort aus können Sie relative und absolute Bewegungen ausführen. Sobald der Befehl D eingegeben ist, wird der Pfad gezogen. Dies bedeutet, dass Sie den Cursor in Position bringen können, bevor Sie jeden Weg starten.
Die folgenden Befehle sind erlaubt:
p N t
| /
L - o - R <-- o is the current position of the cursor
/ |
e S q
Eine beliebige Zahl (siehe unten), nachdem ein Anweisungsbefehl als die Länge des Schritts interpretiert wurde, ansonsten beträgt die Schrittgröße 1 . Sie können auch zwei von einem Komma getrennte Zahlen verwenden. Zum Beispiel wird q2.5,3 den Cursor zweieinhalb Schritte nach rechts und drei Schritte nach unten bewegen. In ähnlicher Weise bewegen p2,1/2 den Cursor zwei links und einen halben Schritt nach oben.
Akzeptierte Zahlen sind entweder Ganzzahlen: 1 , Brüche: 1/2 oder Dezimalstellen: 3.5 . Beachten Sie, dass alle Dezimalstellen in Brüche umgewandelt werden. Dezimalstellen sind eine Komfort, mit der Sie 4.5 anstelle von 9/2 schreiben können. Sie können jedoch besser 13/3 anstelle von 4.33... Letzteres addiert höchstwahrscheinlich nicht in den Grenzen des Netzes. Sie können auch mehrere Befehle in derselben Richtung verwenden, wenn Sie dies einfacher finden. Zum Beispiel R4 R1/2 .
Das bedeutet, dass, wenn Sie aus Grenzenfehler hinausgehen, entweder daran liegt, dass Sie eine Dezimalzahl verwenden, die sich nicht ordnungsgemäß im Netz "addiert". Oder einfach, weil die resultierende Zahl außerhalb des Netzes liegt.
Die Zahlen werden in Schwimmer konvertiert, bevor sie in json oder svg exportiert werden
Die folgenden absoluten Bewegungen sind erlaubt
Mx,y um sich in Position x,y relativ zum origin zu bewegen.Z bewegen Sie sich in die erste Position des gezeichneten Pfades. (Standardeinstellungen zum origin )W , um sich auf die rechte Seite der Zeichnung zu bewegen.w zu der linken Seite der Zeichnung zu bewegen.H , um an die Spitze der Zeichnung zu gehen.h , um sich auf den Boden der Zeichnung zu bewegen. Sie können Substitutionsgruppen in der groups der json -Spezifikation bereitstellen. Gruppennamen sollten immer mit a beginnen ( und mit a enden ) . Jede (group) in einer Pfaddefinition wird wörtlich ersetzt, bis in der Pfadspezifikation nicht mehr ( oder ) übrig sind. (Hinweis: Dies bedeutet, dass Sie sowohl unendliche Schleifen als auch Speicherlecks verursachen können.)
Die Schriftart Pfade sind zusammen mit SVGs für jedes Symbol in dat/*/res.json enthalten. Die Rohbeschreibungen sind in dat/*.json .
Im Moment sind die enthaltenen Schriftarten:
original : Blockige Buchstabensmooth : Glättere Version. Um diese Bibliothek zu verwenden
python3 setup.py install --user
Sie können dann die Bibliothek aus Ihrem Code aus verwenden. Siehe gridfont/__init__.py oder gridfont/writer.py um eine Idee zu bekommen. Es kann später mehr Dokumentation hinzugefügt werden, wenn dies für Menschen nützlich erscheint.
Um andere Optionen zu sehen, nutzen Sie:
gridfont --help
Um eine Symbol .json -Datei wie dat/font.json zu analysieren, führen Sie Folgendes aus, um die Ergebnisse in das Verzeichnis out
gridfont parse font.json out [--svg]
Wenn Sie das Flag --svg einfügen, wird auch für jedes Symbol ein SVG erstellt.
Wenn Sie eine analysierte Symboldatei (wie dat/original/res.json ) haben, können Sie so diese SVGs schreiben:
gridfont write res.json tmp.svg 'my text'
Dies ist ein Projekt, das ich begonnen habe, weil ich eine einfache "Schriftart" wollte, mit der ich beim Aufzeichnen leicht zeilenbasierte Glyphen zeichnen kann. Ich weiß nicht, ob ich so viel weiter entwickeln werde, aber ich bin offen für Vorschläge.
2 und 3 ?AZDies ist den Hershey -Schriftarten sehr ähnlich: https://en.wikipedia.org/wiki/hershey_fonts. Was Sie wahrscheinlich verwenden sollten, da sie es schon seit einiger Zeit gibt
Diese Methode ähnelt auch dem Zeichnen in Logo: https://en.wikipedia.org/wiki/logo_(programming_glanguage)
Die Pfaddefinitionen ähneln auch dem SVG -Format (aber einfacher): https://en.wikipedia.org/wiki/scalable_vector_graphics
Wenn Sie dies interessant finden, können Sie auch eine rekursive radikale Verpackungssprache mögen: https://github.com/lingdong-/rrpl
Metafont (Latex): https://en.wikipedia.org/wiki/metafont
Leonsans: https://github.com/cmiscm/leonsans