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
Разрешены следующие абсолютные ходы
Mx,y чтобы перейти к позиции x,y относительно origin .Z Перейдите к первой позиции нарисованного пути. (по умолчанию к origin )W , чтобы перейти, чтобы выходить в правую сторону чертежа.w , чтобы двигаться в левую сторону чертежа.H , чтобы перейти к вершине рисунка.h , чтобы перейти к дне чертежа. Вы можете предоставить группы замены в собственности groups спецификации json . Названия групп всегда начинаются с ( и заканчиваться а ) . Любая (group) в определении пути будет заменено дословно, пока в спецификации пути не будет больше ( или ) . (Примечание: это означает, что вы можете вызвать бесконечные петли, а также утечки памяти.)
Пути шрифта включены в dat/*/res.json , а также SVG для каждого символа. Необработанные описания в dat/*.json .
На данный момент включенные шрифты:
original : блочные буквыsmooth : более плавная версия. Чтобы использовать эту библиотеку
python3 setup.py install --user
Затем вы можете использовать библиотеку из вашего кода. См. gridfont/__init__.py или gridfont/writer.py чтобы получить идею. Больше документации может быть добавлено позже, если это кажется полезным для людей.
Чтобы увидеть другие варианты использования:
gridfont --help
Проанализировать файл символа .json , такой out dat/font.json
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
Леонсанс: https://github.com/cmiscm/leonsans