ट्रैकिंग (Tracking) चयनित टेक्स्ट खंड में सभी वर्णों के बीच अंतराल का समान समायोजन है, कर्निंग के विपरीत जो विशिष्ट अक्षर जोड़ों के बीच की दूरी को समायोजित करता है। ट्रैकिंग सभी वर्णों पर समान रूप से लागू होती है: सकारात्मक ट्रैकिंग अंतराल बढ़ाती है, नकारात्मक घटाती है। MDN Web Docs के अनुसार, वेब इंटरफ़ेस में ट्रैकिंग CSS प्रॉपर्टी letter-spacing के माध्यम से कार्यान्वित की जाती है, जो किसी भी लंबाई इकाई को समर्थन करती है और चाइल्ड एलिमेंट्स द्वारा इनहेरिट की जाती है।
मुख्य बिंदु
ट्रैकिंग (Tracking) अंतर-वर्ण दूरी का समायोजन है, जो टेक्स्ट ब्लॉक के सभी वर्णों पर समान रूप से लागू होता है। कर्निंग के विपरीत, जहां वर्णों की प्रत्येक जोड़ी फ़ॉन्ट की कर्निंग तालिका के आधार पर व्यक्तिगत समायोजन प्राप्त करती है, ट्रैकिंग पूरी श्रृंखला के लिए एक संख्यात्मक मान के रूप में निर्धारित की जाती है। सकारात्मक ट्रैकिंग अंतराल बढ़ाती है (विस्तारित स्पेसिंग), नकारात्मक ट्रैकिंग घटाती है (संघनित स्पेसिंग)।
यह शब्द धातु टाइपोग्राफी से उत्पन्न हुआ है, जहां अंतर-वर्ण अंतराल टाइप स्लग के बीच भौतिक दूरी द्वारा नियंत्रित होता था। डिजिटल टाइपोग्राफी में, ट्रैकिंग कर्निंग तालिका के ऊपर लागू की जाती है: पहले फ़ॉन्ट अपने अंतर्निहित कर्निंग जोड़ों को लागू करता है, फिर सिस्टम सभी वर्णों में समान ट्रैकिंग जोड़ता है। परिणामी अंतराल = कर्निंग + ट्रैकिंग, जो टेक्स्ट को आक्रामक रूप से संघनित करते समय विचार करना महत्वपूर्ण है।
माप की इकाइयाँ: ट्रैकिंग को निरपेक्ष इकाइयों (पॉइंट, पिक्सेल, मिलीमीटर) और सापेक्ष इकाइयों (em, फ़ॉन्ट आकार का प्रतिशत) में निर्दिष्ट किया जा सकता है। मोबाइल डेवलपमेंट में, ट्रैकिंग आमतौर पर पॉइंट (iOS) या sp (Android) में निरपेक्ष मानों के रूप में निर्दिष्ट की जाती है, वेब पर em में सापेक्ष मानों के रूप में। सापेक्ष इकाइयाँ एक्सेसिबिलिटी के लिए पसंद की जाती हैं क्योंकि उपयोगकर्ता द्वारा फ़ॉन्ट आकार बदलने पर वे स्केल होती हैं।
ट्रैकिंग और कर्निंग के बीच भ्रम नौसिखिए डिज़ाइनरों और डेवलपर्स की सबसे आम गलतियों में से एक है। कर्निंग सूक्ष्म स्तर पर काम करता है — यह उनकी ज्यामिति के आधार पर विशिष्ट वर्ण जोड़ों (AV, Te, To) के बीच अंतराल को समायोजित करता है। ट्रैकिंग समग्र स्तर पर काम करती है — यह एक खंड के सभी वर्णों को उनके आकार पर विचार किए बिना समान रूप से स्थानांतरित करती है।
दृश्य प्रभाव: कर्निंग के साथ, विभिन्न वर्ण जोड़ों के बीच की दूरियाँ भिन्न होती हैं — A और V के बीच A और I की तुलना में छोटी होती है, क्योंकि अक्षर आकार एक दूसरे की क्षतिपूर्ति करते हैं। ट्रैकिंग के साथ, सभी दूरियाँ समान होती हैं — A और V, A और I, T और o के बीच — हर जगह समान विस्थापन। यह ट्रैकिंग को वैश्विक समायोजन का उपकरण और कर्निंग को सूक्ष्म-समायोजन का उपकरण बनाता है।
संयुक्त उपयोग: इंटरफ़ेस टाइपोग्राफी में, ट्रैकिंग और कर्निंग एक साथ उपयोग किए जाते हैं। फ़ॉन्ट में बुनियादी ऑप्टिमाइज़ेशन के लिए कर्निंग तालिका शामिल होती है, और डेवलपर स्टाइलिंग या एक्सेसिबिलिटी के लिए ट्रैकिंग जोड़ता है। कर्निंग तालिका पहले लागू की जाती है, फिर उसके ऊपर ट्रैकिंग जोड़ी जाती है। नकारात्मक ट्रैकिंग (संघनन) के साथ, कर्निंग जोड़े अवांछित ओवरलैप बना सकते हैं — समस्याग्रस्त संयोजनों की जाँच करें।
| विशेषता | कर्निंग | ट्रैकिंग |
|---|---|---|
| क्षेत्र | वर्ण जोड़े | पूरा टेक्स्ट |
| मान | प्रत्येक जोड़े के लिए व्यक्तिगत | सभी वर्णों के लिए समान |
| उद्देश्य | दृश्य समरूपता | घनत्व समायोजन |
| दृश्यता | 24pt से शीर्षकों में | सभी आकारों में |
| iOS विशेषता | .kern (nil या 0) | .kern (संख्यात्मक मान) |
सकारात्मक ट्रैकिंग वर्णों के बीच की दूरी बढ़ाती है। इसका उपयोग छोटे टेक्स्ट (10–13pt) की पठनीयता में सुधार के लिए किया जाता है, जहां मानक अंतराल पर वर्ण दृश्य रूप से मिल जाते हैं। इसका उपयोग डिस्लेक्सिया वाले उपयोगकर्ताओं के लिए एक्सेसिबिलिटी में भी किया जाता है — बढ़ा हुआ अंतर-वर्ण अंतराल अक्षर पहचान को आसान बनाता है। विशिष्ट मान: iOS के लिए 0.3–1pt, वेब के लिए 0.02–0.05em।
नकारात्मक ट्रैकिंग वर्णों के बीच की दूरी घटाती है। इसका उपयोग शीर्षकों (24pt से) और एक्सेंट टेक्स्ट में किया जाता है, जहां घना टेक्स्ट एकजुट और आधुनिक दिखता है। बड़े आकार संघनन को अच्छी तरह सहन करते हैं क्योंकि अंतर-वर्ण दूरियाँ दृश्य रूप से बड़ी होती हैं। विशिष्ट मान: -0.3 से -1pt तक। सीमा: -1pt से कम ट्रैकिंग पर, वर्ण ओवरलैप हो सकते हैं, विशेष रूप से उभरे हुए तत्वों वाले जोड़ों में (fi, fj, TT)।
अनुभवजन्य नियम: प्रत्येक फ़ॉन्ट आकार के लिए स्वीकार्य ट्रैकिंग की एक सीमा होती है। फ़ॉन्ट जितना बड़ा होगा, इष्टतम पठनीयता के लिए उतनी ही कम ट्रैकिंग आवश्यक होगी। सूत्र: इष्टतम ट्रैकिंग ≈ font-weight × 0.01 − font-size × 0.001। 16pt पर बोल्ड फ़ॉन्ट (weight 700) के लिए: 700 × 0.01 − 16 × 0.001 = 6.84, जो टाइपफ़ेस के अनुसार समायोजित होने पर लगभग 0.5pt सकारात्मक ट्रैकिंग देता है।
बॉडी टेक्स्ट (14–18pt): ट्रैकिंग आवश्यक नहीं है या न्यूनतम सकारात्मक 0.1–0.3pt है। पेशेवर फ़ॉन्ट में पहले से ही बॉडी टेक्स्ट के लिए इष्टतम अंतराल होता है। बॉडी टेक्स्ट ट्रैकिंग में किसी भी हस्तक्षेप को डिज़ाइन या एक्सेसिबिलिटी आवश्यकताओं द्वारा उचित ठहराया जाना चाहिए। शीर्षक (20–36pt): टाइपफ़ेस और वेट के आधार पर -0.3 से -0.8pt तक नकारात्मक ट्रैकिंग स्वीकार्य है। सभी कैप्स (ALL CAPS): 0.5–2pt की सकारात्मक ट्रैकिंग अनुशंसित है, क्योंकि कैप्स में अपरकेस अक्षर अतिरिक्त अंतराल के बिना दृश्य रूप से मिल जाते हैं।
टाइपफ़ेस विशिष्टताएँ: ग्रोटेस्क ज्यामिति वाले फ़ॉन्ट (Helvetica, Inter, SF Pro) सेरिफ़ टाइपफ़ेस (Times, Georgia, PT Serif) की तुलना में नकारात्मक ट्रैकिंग को बेहतर सहन करते हैं। सेरिफ़ फ़ॉन्ट में, सेरिफ़ अक्षरों के बीच अतिरिक्त दृश्य संबंध बनाते हैं, और संघनन टेक्स्ट को अपठनीय बनाता है। सेरिफ़ टाइपफ़ेस के लिए, केवल सकारात्मक ट्रैकिंग अनुशंसित है।
iOS पर, ट्रैकिंग NSAttributedString में उसी .kern विशेषता के माध्यम से कार्यान्वित की जाती है जैसे कर्निंग, एक अंतर के साथ: ट्रैकिंग के लिए, nil से भिन्न एक संख्यात्मक मान निर्दिष्ट किया जाता है। nil का अर्थ डिफ़ॉल्ट कर्निंग (फ़ॉन्ट तालिका से) है, 0 कर्निंग को अक्षम करता है, कोई भी अन्य संख्या कर्निंग तालिका के ऊपर ट्रैकिंग को इंगित करती है। इसका मतलब है कि जब .kern = 2 सेट किया जाता है, तो सभी वर्ण अंतर्निहित कर्निंग जोड़ों के ऊपर +2pt अंतर-वर्ण अंतराल प्राप्त करते हैं।
let text = "Heading with tracking"
let attributedString = NSMutableAttributedString(string: text)
// सकारात्मक ट्रैकिंग +0.8pt
attributedString.addAttribute(
.kern,
value: 0.8,
range: NSRange(
location: 0,
length: text.count
)
)
// ट्रैकिंग के साथ UILabel
label.attributedText = attributedString
SwiftUI Text पर .tracking() मॉडिफ़ायर का उपयोग करता है, जो CGFloat स्वीकार करता है। UIKit के विपरीत, SwiftUI ट्रैकिंग मॉडिफ़ायर के अंदर सभी टेक्स्ट पर लागू होती है और कई Text ब्लॉकों में विभाजित किए बिना आंशिक नहीं हो सकती। SwiftUI स्वचालित रूप से कर्निंग और ट्रैकिंग के संयोजन को संभालता है, फ़ॉन्ट की कर्निंग तालिका के ऊपर ट्रैकिंग लागू करता है।
Android TextView पर letterSpacing प्रॉपर्टी का उपयोग करता है, जो em में निर्दिष्ट होती है (फ़ॉन्ट आकार के सापेक्ष गुणक)। मान 0 का अर्थ डिफ़ॉल्ट ट्रैकिंग है, 0.05 का अर्थ em में 5% की वृद्धि है, -0.02 का अर्थ कमी है। Android में, letterSpacing ट्रैकिंग के रूप में काम करता है (सभी वर्णों के लिए समान), जबकि फ़ॉन्ट की कर्निंग तालिका Minikin रेंडर इंजन स्तर पर स्वचालित रूप से लागू होती है।
// XML लेआउट में
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text with tracking"
android:letterSpacing="0.08"
android:textSize="12sp" />
// Kotlin में प्रोग्रामेटिक रूप से
val textView: TextView = findViewById(R.id.smallText)
textView.letterSpacing = 0.08f
Compose Android में TextStyle में letterSpacing पैरामीटर का उपयोग करता है, जो sp में निर्दिष्ट होता है। उदाहरण के लिए, TextStyle(letterSpacing = 0.5.sp) 0.5 sp की ट्रैकिंग देता है। XML दृष्टिकोण के विपरीत, Compose letterSpacing को एकल TextStyle ऑब्जेक्ट में अन्य टाइपोग्राफ़िक पैरामीटर के साथ संयोजित करने की अनुमति देता है, जो डिज़ाइन सिस्टम के निर्माण को सरल बनाता है।
वेब पर, ट्रैकिंग CSS प्रॉपर्टी letter-spacing के माध्यम से कार्यान्वित की जाती है, जो किसी भी लंबाई इकाई या कीवर्ड normal को स्वीकार करती है। मान normal 0 के अनुरूप है (कोई अतिरिक्त अंतर-वर्ण अंतराल नहीं)। प्रॉपर्टी इनहेरिट होती है, नकारात्मक मानों को समर्थन करती है, और एनिमेट की जा सकती है। CSS Specification के अनुसार, letter-spacing फ़ॉन्ट की कर्निंग तालिका के बाद लागू किया जाता है।
/* Positive tracking for small text */
.caption {
font-size: 11px;
letter-spacing: 0.03em;
}
/* Negative tracking for headings */
h1 {
font-size: 32px;
font-weight: 700;
letter-spacing: -0.02em;
}
/* Tracking for uppercase */
.uppercase-label {
text-transform: uppercase;
letter-spacing: 0.08em;
}
em बनाम px: em में letter-spacing font-size बदलने पर स्केल होता है और एक्सेसिबिलिटी के लिए पसंद किया जाता है। px स्केल नहीं होता और ब्राउज़र द्वारा टेक्स्ट ज़ूम करने पर असंगतता पैदा कर सकता है। अनुशंसा: letter-spacing के लिए हमेशा em का उपयोग करें। अपवाद वे मामले हैं जहां ट्रैकिंग आकार से स्वतंत्र रूप से स्थिर रहनी चाहिए, जैसे लोगो में।
letter-spacing को एनिमेट करना: प्रॉपर्टी CSS ट्रांज़िशन और एनिमेशन को समर्थन करती है, जो टेक्स्ट प्रकट करने के सहज प्रभावों की अनुमति देती है। शीर्षक लोड होने पर letter-spacing: -0.05em से letter-spacing: 0.01em तक एनिमेट करना आधुनिक इंटरफ़ेस में एक लोकप्रिय तकनीक है। प्रदर्शन: letter-spacing को एनिमेट करने से रीफ़्लो (लेआउट पुनर्गणना) होता है क्योंकि यह टेक्स्ट की चौड़ाई बदलता है। जहाँ संभव हो, उच्च-प्रदर्शन एनिमेशन के लिए transform और opacity का उपयोग करें।
ट्रैकिंग सीधे दृश्य हानि और डिस्लेक्सिया वाले उपयोगकर्ताओं के लिए टेक्स्ट पठनीयता को प्रभावित करती है। WCAG 2.2 दिशानिर्देश 1.4.12 (टेक्स्ट स्पेसिंग) आवश्यक करता है कि अंतर-वर्ण, अंतर-पंक्ति और अंतर-अनुच्छेद अंतराल को निश्चित मानों तक बढ़ाने पर टेक्स्ट सामग्री न खोए। letter-spacing को सामग्री क्रॉपिंग या एलिमेंट ओवरलैप के बिना 0.12em तक की वृद्धि सहन करनी चाहिए।
डिस्लेक्सिया: British Dyslexia Association के शोध से पता चलता है कि letter-spacing को 0.12em तक बढ़ाने से डिस्लेक्सिया वाले उपयोगकर्ताओं की पढ़ने की गति में 10–15% सुधार होता है। हालाँकि, यह व्यक्तिगत है — कुछ उपयोगकर्ता मानक अंतराल पसंद करते हैं। iOS और Android अंतर-वर्ण अंतराल बढ़ाने के लिए सिस्टम एक्सेसिबिलिटी सेटिंग्स प्रदान करते हैं जिनका एप्लिकेशन को सम्मान करना चाहिए।
डेवलपर के लिए नियम: फिक्स्ड चौड़ाई/ऊँचाई का उपयोग न करें जो letter-spacing बढ़ने पर टूट सकती हैं। एक्सेसिबिलिटी सत्यापन के बिना टेक्स्ट कंटेनर पर overflow: hidden से बचें। सभी स्क्रीन पर 0.12em तक बढ़े हुए letter-spacing के साथ इंटरफ़ेस का परीक्षण करें। यदि डिज़ाइन टूटता है, तो एक्सेसिबिलिटी को अनदेखा करने के बजाय लेआउट पर पुनर्विचार करें।
प्लेटफ़ॉर्म समर्थन: iOS स्वचालित रूप से letter-spacing बढ़ाता है जब एक्सेसिबिलिटी सेटिंग्स में Larger Text सुविधा सक्षम होती है, यदि UIFont.preferredFont का उपयोग किया जाता है। Android FontScale के माध्यम से समान विकल्प प्रदान करता है। डेवलपर को इन सेटिंग्स को अक्षम नहीं करना चाहिए। परीक्षण परिदृश्य: डिवाइस सेटिंग्स में अधिकतम टेक्स्ट आकार सक्षम करें और सत्यापित करें कि ट्रैकिंग इंटरफ़ेस लेआउट को नहीं तोड़ती है।
अक्सर पूछे जाने वाले प्रश्न
iOS में, .kern = nil का अर्थ फ़ॉन्ट तालिका से डिफ़ॉल्ट कर्निंग है। .kern = 0 कर्निंग को अक्षम करता है। .kern = कोई भी संख्या ट्रैकिंग है, जो कर्निंग तालिका के ऊपर जोड़ी जाती है। Android में, letterSpacing हमेशा ट्रैकिंग है।
अपरकेस (ALL CAPS) टेक्स्ट के लिए, 0.05–0.15em की सकारात्मक ट्रैकिंग का उपयोग करें। अपरकेस अक्षरों में आरोही और अवरोही का अभाव होता है और वे दृश्य रूप से मिल जाते हैं। iOS पर: 14–18pt कैप्स के लिए .kern = 1–2pt।
हाँ। CSS प्रॉपर्टी letter-spacing नकारात्मक मानों को समर्थन करती है। न्यूनतम मान ब्राउज़र-सीमित है — आमतौर पर -0.1em, जिसके बाद वर्ण ओवरलैप होने लगते हैं। नकारात्मक ट्रैकिंग का उपयोग केवल 24pt से शीर्षकों के लिए करें।
ट्रैकिंग स्क्रॉल करते समय सीधे FPS प्रभावित नहीं करती। हालाँकि, CSS में letter-spacing बदलने से रीफ़्लो होता है क्योंकि यह टेक्स्ट ब्लॉक की चौड़ाई बदलता है। ट्रैकिंग एनिमेशन के लिए, जहाँ संभव हो, सीधे letter-spacing बदलने के बजाय transform का उपयोग करें।
ब्राउज़र टूल या एक्सेसिबिलिटी सेटिंग्स के माध्यम से letter-spacing को 0.12em तक बढ़ाएँ। सत्यापित करें कि टेक्स्ट क्रॉप नहीं हुआ है, पड़ोसी एलिमेंट पर ओवरलैप नहीं करता है, और कंटेनर से बाहर नहीं निकलता है। किसी भी सेटिंग में सामग्री गायब नहीं होनी चाहिए।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें