original
smooth
基於網格的系統,用於設計簡單的符號和字體。包括示例字體。主要用於繪圖儀圖紙。
符號描述看起來像這樣:
S4,9:DS6|S3DtRqS2eLp
您可以使用空格分離移動,因此可以這樣寫:
S4,9: DS6| S3 DtRq S2 eLp
第一部分(左:是info部分。目前包含網格的大小(作為integers )。這裡的寬度為4 ,高度為9 。也就是說,兩個方向有4和9網格點。這意味著符號的寬度將為3和8 。
隨著時間的推移,本節可能包含其他內容。例如翻譯命令。 (如果您僅在網格的某個部分中繪製,這可能會很有用。)
下一部分是一個或多個路徑,被管道符號分開| 。具體而言,上面的示例應導致字母b的兩條路徑:
| <-- p1
|
|/- <-- p2
| |
| |
|-/
以下是一些更複雜的符號定義的示例:
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
當繪製新路徑時,光標總是重置為左上角的origin 。坐標系的旋轉旋轉:
-
|
- --o-- x+
|
y+
從那裡您可以執行相對和絕對的移動。輸入命令D後,路徑將開始繪製。這意味著您可以在開始每條路徑之前將光標移至位置。
允許以下命令:
p N t
| /
L - o - R <-- o is the current position of the cursor
/ |
e S q
將方向命令解釋為步驟的長度之後的任何數字(請參見下文),否則步長為1 。您也可以使用兩個逗號分隔的數字。例如, q2.5,3將移動光標向右移動兩個半步驟,然後向下三個步驟。同樣, p2,1/2將剩下兩個步驟移動光標,然後向上移動一半。
公認的數字是整數: 1 ,分數: 1/2或小數: 3.5 。請注意,所有小數都轉換為分數。小數是一種方便,使您可以編寫4.5而不是9/2 。但是,您最好使用13/3而不是4.33...後者很可能不會在網格極限內加起來。如果發現更容易,也可以在相同方向上使用多個命令。例如R4 R1/2 。
這意味著,如果您擺脫了界限,則是因為您使用的小數點在網格內部不正確地“累加”。或僅僅是因為結果數不在網格之外。
在導出到json或svg之前,數字已轉換為Float
允許以下絕對舉動
Mx,y相對於origin移動到位置x,y 。Z移動到繪製路徑的第一個位置。 (默認為origin )W移動到圖紙的右側。w移到圖紙的左側。H移至圖紙的頂部。h移至圖紙的底部。您可以在json規範的groups屬性中提供替換組。組名稱應始終以a (並以a結尾)開頭。路徑定義中的任何(group)將被逐字替換,直到路徑規範中不再剩下(或) 。 (注意:這意味著您可以導致無限循環以及內存洩漏。)
字體路徑包含在dat/*/res.json中,以及每個符號的SVG。原始描述在dat/*.json中。
目前,隨附的字體為:
original :塊狀字母smooth :更平滑的版本。 為了使用此庫
python3 setup.py install --user
然後,您可以使用代碼中的庫。請參閱gridfont/__init__.py或gridfont/writer.py以獲取一個想法。如果這對人們有用,則可能會在以後添加更多文檔。
查看其他選項使用:
gridfont --help
解析符號.json文件,例如dat/font.json運行以下內容,以將結果輸出到目錄out
gridfont parse font.json out [--svg]
如果包含--svg標誌,則還將為每個符號創建一個SVG。
當您有一個解析的符號文件(例如dat/original/res.json )時,可以像這樣編寫SVG:
gridfont write res.json tmp.svg 'my text'
這是我開始的一個項目,因為我想要一個簡單的“字體”,可以使我在繪製時輕鬆繪製基於線的字形。我不知道我是否最終會進一步發展,但我願意接受建議。
2和3 ?AZ這與好時字體非常相似:https://en.wikipedia.org/wiki/hershey_fonts。您可能應該使用它,因為它們已經存在了一段時間
此方法也類似於徽標中的繪製:https://en.wikipedia.org/wiki/logo_(programming_language)
路徑定義也類似於SVG格式(但更簡單):https://en.wikipedia.org/wiki/scalable_vector_graphics
如果您覺得這很有趣,您可能還喜歡遞歸激進的包裝語言:https://github.com/lingdong-/rrpl
metafont(乳膠):https://en.wikipedia.org/wiki/metafont
Leonsans:https://github.com/cmiscm/leonsans