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 커서를 오른쪽으로 2 반 동안, 3 단계 아래로 이동합니다. 마찬가지로 p2,1/2 커서를 두 단계 남았고 1 단계 위로 이동합니다.
허용 숫자는 정수입니다 : 1 , 분수 : 1/2 또는 소수점 : 3.5 . 모든 소수점은 분수로 변환됩니다. 데시 말은 편의성으로 9/2 대신 4.5 쓸 수 있습니다. 그러나 4.33... 대신 13/3 사용하는 것이 좋습니다. 후자는 그리드의 한계 내부에 추가되지 않을 가능성이 높습니다. 더 쉽게 찾으면 같은 방향으로 여러 명령을 사용할 수도 있습니다. 예를 들어 R4 R1/2 .
즉, 한계 오류가 발생하면 그리드 내부에 "추가"되지 않는 소수점을 사용하고 있기 때문입니다. 또는 결과 숫자가 그리드 외부에 있기 때문입니다.
숫자는 json 또는 svg 로 내보내기 전에 플로트로 변환됩니다.
다음 절대 이동이 허용됩니다
Mx,y origin 에 대한 위치 x,y 로 이동합니다.Z 그려진 경로의 첫 번째 위치로 이동합니다. (기본값으로 origin )W 그림의 오른쪽으로 이동하기 위해 이동합니다.w 도면의 왼쪽으로 이동합니다.H 그림의 상단으로 이동합니다.h 도면의 바닥으로 이동합니다. json 사양의 groups 속성에서 대체 그룹을 제공 할 수 있습니다. 그룹 이름은 항상 a ( a로 끝나는 ) 로 시작해야합니다. 경로 정의의 모든 (group) 경로 사양에 더 이상 ( 또는 ) 남은 상태가 없을 때까지 구두로 대체됩니다. (참고 : 이것은 메모리 누출뿐만 아니라 무한 루프를 유발할 수 있음을 의미합니다.)
글꼴 경로는 각 기호에 대한 SVG와 함께 dat/*/res.json 에 포함됩니다. 원시 설명은 dat/*.json 에 있습니다.
현재 포함 된 글꼴은 다음과 같습니다.
original : 블록 문자smooth : 더 부드러운 버전. 이 라이브러리를 사용하기 위해
python3 setup.py install --user
그런 다음 코드에서 라이브러리를 사용할 수 있습니다. 아이디어를 얻으려면 gridfont/__init__.py 또는 gridfont/writer.py 참조하십시오. 사람들에게 유용한 것처럼 보이면 나중에 더 많은 문서가 추가 될 수 있습니다 .
다른 옵션 사용을 보려면 :
gridfont --help
dat/font.json 과 같은 기호 .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