हालांकि यह सीधे आपके दशकीय प्रश्न का उत्तर नहीं दे सकता है, मुझे आशा है कि यह आपकी समस्या को कुछ हद तक हल करता है: निम्नलिखित तकनीकों ने मुझे मैन्युअल रूप से एक फ़ॉन्ट (जो ब्लैकलिस्ट किया गया था; कर्नेल पर काम को कम करने में मदद की; इसलिए मानक किर्निंग जोड़े लागू नहीं हुए):
अब तक सबसे महत्वपूर्ण एक: kern वर्गों का उपयोग करें। जबकि आपके फ़ॉन्ट में बहुत सारे ग्लिफ़ हो सकते हैं, उनमें से कई एक दिशा में कर्निंग के संबंध में समान हैं। उदाहरण के लिए, m और n का दाहिना-किनारा हर या लगभग हर टाइपफेस में समान होना चाहिए। इसलिए, इससे पहले कि आप कर्निंग शुरू करें, अपने सभी ग्लिफ़ को एक साथ उचित कर्निंग कक्षाओं में समूहित करें और आप बड़े पैमाने पर काम को कम कर दें, आपको करना होगा। किसी भी उचित फ़ॉन्ट संपादक को कर्लिंग कक्षाओं का समर्थन करना चाहिए।
आपके टाइपफेस के आधार पर, अलग-अलग स्थितियों के लिए अलग-अलग कर्निंग कक्षाओं का उपयोग करके कर्लिंग कक्षाओं की प्रभावशीलता को बढ़ाया जा सकता है। उदाहरण के लिए à और एक कुछ बड़े अक्षरों और करने के लिए एक ही बाएं कर्निंग सबसे छोटे अक्षरों के संबंध में, लेकिन नहीं के साथ सम्मान करना होगा च। मेरे फ़ॉन्ट के लिए, मेरे पास विभिन्न मामलों के लिए अलग-अलग कर्निंग वर्गों के साथ अलग-अलग कर्निंग टेबल थे:
लोअरकेस बिना f, ſ, ſ, ſ,… - लोअरकेस;
च, -, ľ, ï,… - लोअरकेस;
अपरकेस लोअरकेस;
अपरकेस - अपरकेस;
लोअरकेस - लोअरकेस।
बीयरिंगों को ट्यूनिंग करने का प्रयास करें , यानी, दाईं और बाईं ओर एक ग्लिफ़ की डिफ़ॉल्ट (अनकर्नड) दूरी। यदि एक ग्लिफ़ की बियरिंग को बुरी तरह से चुना जाता है, तो इसका मतलब है कि आपको इस ग्लिफ़ वाले लगभग प्रत्येक जोड़े को कर्न करना होगा। दूसरी ओर, यदि आपके बियरिंग अच्छे हैं, तो आपको बहुत अधिक कर्नेल करने की आवश्यकता नहीं है और आप सीधे देखते हैं कि आपको कहां कर्नेल करना है।
बीयरिंग और कर्नेल को समायोजित करने की एक चाल निम्न में से कुछ को देखने के लिए है :
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
uuuunımnuınuımıımunununuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
यदि xu को कर्निंग की आवश्यकता है, तो आपको इसे देखकर नोटिस करना चाहिए।
व्यवस्थित और पूरी तरह से समायोजित क्षैतिज मैट्रिक्स के साथ अपने ग्लिफ़ के पूल को विकसित करें। I, m, n, और u जैसे "सरल अक्षरों" के क्षैतिज मैट्रिक्स (बीयरिंग और kernings) को समायोजित करने के साथ शुरू करें । सुनिश्चित करें कि न्यूनतम, एल्यूमीनियम या प्रतिरक्षा जैसे शब्द अच्छे दिखते हैं, आदर्श रूप से उपरोक्त अक्षरों के बीच किसी भी कर्निंग का उपयोग किए बिना। फिर पूल में अन्य लोअरकेस अक्षर जोड़ें और सुनिश्चित करें कि उनके पास आवश्यक बीयरिंग और कर्निंग हैं। यदि आपके पूल में सभी लोअरकेस अक्षर हैं, तो अपरकेस अक्षर जोड़ें और केवल उनके सही असर की परवाह करें; और इसी तरह …
एक बार जब आपके पास वह पूल होता है, तो अपने जोड़े में बहुत सारे पाठ पढ़ें जो कुछ ऐसे जोड़े हैं जिन्हें आप याद कर सकते हैं। टेक्स्ट को उल्टा देखने से भी मदद मिलती है।
अंत में, आप अपने आप को एक पाठ उत्पन्न कर सकते हैं जिसमें हर संभव अक्षर जोड़ी होती है और इसे जांचें। उदाहरण के लिए, निम्न पायथन 3 स्क्रिप्ट लोअरकेस अक्षरों के लिए काम करेगी:
from random import shuffle
s = "abcdefghijklmnopqrstuvwxyzßþðə"
pairs = [(c,d) for c in s for d in s]
shuffle(pairs)
for i, pair in enumerate(pairs):
print("".join(pair), end=("" if i%3 else " "))
(इसे आसानी से एक फाइल (कह kerningtest.py
) में सहेज कर और फिर python3 kerningtest.py
संबंधित फ़ोल्डर में एक टर्मिनल से कॉल करके यूनिक्सड सिस्टम (मुख्य रूप से सब कुछ लेकिन विंडोज) पर आसानी से चलाया जा सकता है ।)
जो वास्तव में पहले उपयोग किया जाता है, उसके बारे में चिंता करना। सबसे महत्वपूर्ण कर्नेल लोअरकेस-लोअरकेस और अपरकेस-लोअरकेस हैं। अपरकेस - अपरकेस और लोअरकेस - अपरकेस केवल असाधारण उपयोगों के लिए है; आपके टाइपफेस के आधार पर यह महत्वपूर्ण नहीं हो सकता है, उदाहरण के लिए, क्योंकि ऑल-कैप एक सुलेख स्क्रिप्ट के साथ एक बहुत बुरा विचार है। उम्मीद है कि किसी को भी सिरिलिक-लैटिन या रोमन-अंक-मुद्रा-प्रतीक कर्निंग जोड़े की आवश्यकता नहीं है।
हालांकि, यहां तक कि उन सभी चालों के साथ, एक अच्छा मैनुअल कर्निंग प्रदर्शन करना कुछ लंबा और उबाऊ काम है।