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