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 . يجب أن تبدأ أسماء المجموعات دائمًا بـ ( وينتهي بـ A ) . سيتم استبدال أي (group) في تعريف المسار حرفيًا حتى لا يكون هناك ( أو ) مزيد من تركها في مواصفات المسار. (ملاحظة: هذا يعني أنه يمكنك التسبب في حلقات لا حصر لها وكذلك تسرب الذاكرة.)
يتم تضمين مسارات الخط في dat/*/res.json ، جنبا إلى جنب مع SVGs لكل رمز. الأوصاف الخام في 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 ) ، يمكنك كتابة SVGs مع هذا:
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 (LaTex): https://en.wikipedia.org/wiki/metafont
Leonsans: https://github.com/cmiscm/leonsans