टेक्स्ट के साथ काम करना आधुनिक मोबाइल ऐप्लिकेशन के इंटरफ़ेस बनाते समय एक मुख्य कार्य है। फ़ॉन्ट चयन से लेकर अक्षरों के बीच के अंतर को समायोजित करने तक — हर पहलू उत्पाद की धारणा को प्रभावित करता है। Apple NSAttributedString दस्तावेज़ीकरण के अनुसार, उचित टेक्स्ट फ़ॉर्मेटिंग सीधे पठनीयता और इंटरफ़ेस की पहुँच से संबंधित है।
मुख्य बिंदु
NSAttributedString फ़ॉर्मेटेड टेक्स्ट के साथ काम करने के लिए मौलिक iOS क्लास है। यह अलग-अलग अक्षरों या श्रेणियों पर विशेषताएँ लागू करने की अनुमति देता है: UIFont के माध्यम से फ़ॉन्ट, UIColor के माध्यम से रंग, kern के माध्यम से अक्षर अंतराल, और NSMutableParagraphStyle के माध्यम से पंक्ति अंतराल। मोबाइल ऐप्स में, NSAttributedString का हर जगह उपयोग किया जाता है — UILabel से लेकर संपादन समर्थन के साथ जटिल UITextView तक।
UIFont iOS पर फ़ॉन्ट के साथ काम करने के लिए मुख्य क्लास है। यह सिस्टम टाइपफ़ेस, कस्टम फ़ॉन्ट और Dynamic Type का समर्थन करता है। UIFont(name:size:) नाम से फ़ॉन्ट लोड करता है, UIFont.systemFont(ofSize:weight:) सिस्टम फ़ॉन्ट लोड करता है। UIFontDescriptor मौजूदा फ़ॉन्ट को संशोधित करने की अनुमति देता है: आकार, वज़न बदलना या ट्रांसफ़ॉर्मेशन मैट्रिक्स जोड़ना। कस्टम फ़ॉन्ट के लिए, .ttf फ़ाइल प्रोजेक्ट में जोड़ी जाती है और Info.plist में Fonts provided by application कुंजी के तहत पंजीकृत की जाती है।
let attributes: [NSAttributedString.Key: Any] = [
.font: UIFont(name: "HelveticaNeue-Bold", size: 18) as Any,
.foregroundColor: UIColor.darkGray as Any,
.kern: 1.5 as Any
]
let attributedString = NSAttributedString(
string: "Форматированный текст",
attributes: attributes
)
label.attributedText = attributedString
NSMutableParagraphStyle पैराग्राफ़ प्रदर्शन को कॉन्फ़िगर करने के लिए ParagraphStyle का एक परिवर्तनीय संस्करण है। यह संरेखण (alignment), पंक्ति अंतराल (lineSpacing), इंडेंट (headIndent, tailIndent) और काट-छाँट मोड (lineBreakMode) को नियंत्रित करता है। ParagraphStyle मोबाइल उपकरणों पर लंबे टेक्स्ट की पठनीयता के लिए महत्वपूर्ण है: उचित lineSpacing पंक्तियों के विलय को रोकता है, और lineBreakMode शब्द क्लिपिंग को रोकता है। paragraphSpacing सेटिंग पैराग्राफ़ के बीच के स्थान को परिभाषित करती है।
SpannableString Android पर टेक्स्ट फ़ॉर्मेटिंग के लिए मुख्य उपकरण है। यह Span ऑब्जेक्ट के तंत्र के माध्यम से काम करता है, प्रत्येक एक पहलू के लिए ज़िम्मेदार है: StyleSpan बोल्ड या इटैलिक के लिए, ForegroundColorSpan रंग के लिए, URLSpan लिंक के लिए, UnderlineSpan रेखांकन के लिए। SpannableStringBuilder NSMutableAttributedString के समतुल्य है, जो कई टुकड़ों से टेक्स्ट बनाने की अनुमति देता है। मोबाइल ऐप्स में फ़ॉर्मेटेड टेक्स्ट के साथ लचीले इंटरफ़ेस बनाने के लिए SpannableString को समझना आवश्यक है।
Typeface Android पर फ़ॉन्ट के साथ काम करने के लिए क्लास है। यह सिस्टम टाइपफ़ेस Roboto और Noto, साथ ही कस्टम फ़ॉन्ट का समर्थन करता है। Typeface.createFromResource() res/font/ से फ़ॉन्ट लोड करता है, Typeface.createFromAsset() assets फ़ोल्डर से लोड करता है। Android 8.0+ XML में फ़ॉन्ट परिवारों का समर्थन करता है, कई फ़ॉन्ट फ़ाइलों को एक संसाधन में जोड़ता है। Android पर मोबाइल ऐप्स में टेक्स्ट के लिए एक कस्टम फ़ॉन्ट android:fontFamily विशेषता के माध्यम से या प्रोग्रामेटिक रूप से setTypeface() का उपयोग करके सेट किया जाता है।
TextMeasurer (API 29+) एक View से बंधे बिना टेक्स्ट मापने के लिए एक आधुनिक उपकरण है। यह रेंडरिंग से पहले चौड़ाई, ऊँचाई और अक्षर स्थितियों की गणना करता है। पुराने API पर, एकल-पंक्ति टेक्स्ट के लिए Paint.measureText() या बहु-पंक्ति टेक्स्ट के लिए StaticLayout का उपयोग किया जाता है। TextMeasurer विशेष रूप से कस्टम Views में उपयोगी है जहाँ Canvas.drawText() के माध्यम से टेक्स्ट खींचा जाता है। सही मापन इंटरफ़ेस में अक्षर क्लिपिंग को रोकता है।
val spannable = SpannableString("Жирный текст с цветом")
spannable.setSpan(
StyleSpan(Typeface.BOLD),
0, 6,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
spannable.setSpan(
ForegroundColorSpan(Color.RED),
14, 19,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
textView.text = spannable
मोबाइल ऐप्स में टाइपोग्राफी फ़ॉन्ट, अक्षर अंतराल और पंक्ति अंतराल का एक व्यापक कॉन्फ़िगरेशन है। मोबाइल डेवलपमेंट में उचित टाइपोग्राफी सीधे टेक्स्ट पठनीयता और इंटरफ़ेस की दृश्य धारणा को प्रभावित करती है। आइए दोनों प्लेटफ़ॉर्म पर उपलब्ध मुख्य पैरामीटर देखें।
कर्निंग विशिष्ट अक्षर जोड़ियों (AV, To, Wa) के बीच के स्थान का समायोजन है। ट्रैकिंग पूरे टेक्स्ट या उसके एक भाग के लिए एकसमान अक्षर अंतराल है। iOS पर, कर्निंग NSKernAttributeName के माध्यम से सेट किया जाता है, Android पर — TextView के letterSpacing गुण के माध्यम से। नकारात्मक मान अक्षरों को करीब लाते हैं, सकारात्मक मान उन्हें फैलाते हैं। मोबाइल डेवलपमेंट में टाइपोग्राफी के लिए इन पैरामीटर के सावधानीपूर्वक समायोजन की आवश्यकता होती है: बड़े शीर्षकों के लिए, अक्षर अंतराल आमतौर पर बढ़ाया जाता है, मुख्य टेक्स्ट के लिए यह मानक रहता है।
| पैरामीटर | iOS | Android |
|---|---|---|
| स्टाइलिज़्ड स्ट्रिंग | NSAttributedString | SpannableString |
| फ़ॉन्ट | UIFont / CTFont | Typeface |
| अक्षर अंतराल | NSKernAttributeName | letterSpacing |
| पंक्ति अंतराल | lineSpacing | lineSpacingExtra |
| लिगेचर | NSLigatureAttributeName | OpenType सुविधाएँ |
| इलिप्सिस | lineBreakMode .byTruncatingTail | android:ellipsize |
लिगेचर विशेष ग्लिफ़ हैं जो दो या अधिक अक्षरों के संयोजन को बदलते हैं: fi, fl, ffi। iOS पर, लिगेचर NSLigatureAttributeName के माध्यम से नियंत्रित किए जाते हैं: 0 — अक्षम, 1 — मानक, 2 — सभी उपलब्ध। Android पर, लिगेचर OpenType सुविधाओं के माध्यम से फ़ॉन्ट स्तर पर नियंत्रित किए जाते हैं। लिगेचर सक्षम करने से टेक्स्ट की उपस्थिति में सुधार होता है, विशेष रूप से सेरिफ़ टाइपफ़ेस में। मोबाइल डेवलपमेंट में टाइपोग्राफी मुख्य रूप से शीर्षकों और लोगो के लिए लिगेचर का उपयोग करती है।
कस्टम फ़ॉन्ट ऐप के लिए एक अद्वितीय दृश्य शैली बनाने के मुख्य उपकरणों में से एक हैं। वे ब्रांड को उजागर करने और उपयोगकर्ता अनुभव को बेहतर बनाने में मदद करते हैं। मोबाइल ऐप्स में, कस्टम फ़ॉन्ट का उपयोग शीर्षकों, लोगो, एक्सेंट तत्वों और कॉर्पोरेट पहचान के लिए किया जाता है।
वेरिएबल फ़ॉन्ट एक आधुनिक फ़ॉन्ट तकनीक है जहाँ एक फ़ाइल में कई शैलियाँ होती हैं: पतले से अतिरिक्त बोल्ड तक, संकीर्ण से चौड़े तक। यह कई फ़ॉन्ट फ़ाइलों को एक से बदलकर ऐप का आकार कम करता है। iOS पर, वेरिएबल फ़ॉन्ट weight पैरामीटर के साथ UIFont के माध्यम से समर्थित हैं। Android पर — Typeface.Builder के माध्यम से परिवर्तनशीलता अक्ष wght, wdth, slnt निर्दिष्ट करके। वेरिएबल फ़ॉन्ट का उपयोग मोबाइल ऐप्स में टाइपोग्राफी को सरल बनाता है: डेवलपर को प्रत्येक शैली के लिए अलग-अलग फ़ाइलें लोड करने की आवश्यकता नहीं होती है।
let customFont = UIFont(name: "CustomFont-Regular", size: 16)
let scaledFont = UIFontMetrics.default
.scaledFont(for: customFont)
label.font = scaledFont
label.adjustsFontForContentSizeCategory(true)
NSTextAttachment iOS पर NSAttributedString के अंदर UIImage को एम्बेड करने की अनुमति देता है — छवि बेसलाइन के साथ संरेखित होती है और टेक्स्ट के साथ चलती है। Android पर, समकक्ष SpannableString के अंदर ImageSpan है। दोनों दृष्टिकोण इमोजी के साथ चैट, आइकन के साथ समाचार फ़ीड और कस्टम चेकबॉक्स वाले फ़ॉर्म के लिए उपयोगी हैं। छवि को फ़ॉन्ट ऊँचाई से मेल खाने के लिए ठीक से स्केल करना महत्वपूर्ण है ताकि टेक्स्ट और ग्राफ़िक्स सामंजस्यपूर्ण दिखें।
मूल फ़ॉर्मेटिंग के अलावा, मोबाइल ऐप्स में टेक्स्ट अतिरिक्त दृश्य प्रभावों का समर्थन करता है: छाया, आउटलाइन, स्ट्राइकथ्रू और रेखांकन। ये उपकरण टाइपोग्राफी की संभावनाओं का विस्तार करते हैं लेकिन पठनीयता बनाए रखने के लिए सावधानीपूर्वक अनुप्रयोग की आवश्यकता होती है।
टेक्स्ट छाया iOS पर NSShadow के माध्यम से offset, blurRadius और color के साथ सेट की जाती है। आउटलाइन — NSStrokeWidthAttributeName के माध्यम से: नकारात्मक मान आउटलाइन के साथ भरण बनाते हैं, सकारात्मक मान केवल रूपरेखा बनाते हैं। स्ट्राइकथ्रू — NSUnderlineStyle (.single, .thick, .double)। Android पर, TextView छाया android:shadowRadius, android:shadowDx, android:shadowDy के माध्यम से कॉन्फ़िगर की जाती है। SpannableString StrikethroughSpan और UnderlineSpan का समर्थन करता है। Android पर टेक्स्ट आउटलाइन OutlineSpan या कस्टम फ़ॉन्ट के माध्यम से कार्यान्वित की जाती है।
इलिप्सिस कंटेनर के ओवरफ़्लो होने पर इलिप्सिस के साथ टेक्स्ट काट-छाँट है। iOS पर, यह lineBreakMode .byTruncatingTail और numberOfLines के माध्यम से कॉन्फ़िगर किया जाता है। Android पर — android:ellipsize="end" और android:maxLines के माध्यम से। मार्की एक स्क्रॉलिंग टेक्स्ट एनिमेशन है जो Android पर android:ellipsize="marquee" के माध्यम से उपलब्ध है। iOS पर, कोई अंतर्निहित समकक्ष नहीं है — MarqueeLabel लाइब्रेरी का उपयोग किया जाता है। सामग्री क्लिपिंग से बचने के लिए मोबाइल ऐप्स में सभी एकल-पंक्ति टेक्स्ट के लिए इलिप्सिस अनिवार्य है।
Dynamic Type iOS में एक अनुकूली टेक्स्ट सिस्टम है जो उपयोगकर्ता की एक्सेसिबिलिटी सेटिंग के आधार पर फ़ॉन्ट आकार को समायोजित करता है। कस्टम फ़ॉन्ट को स्केल करने के लिए UIFontMetrics का उपयोग करें। Dynamic Type एक्सेसिबिलिटी-अनुपालक ऐप्स के लिए अनिवार्य है। Android पर, समकक्ष sp इकाइयाँ और scaledPixels हैं, जो सिस्टम टेक्स्ट आकार सेटिंग के अनुसार स्केल होते हैं।
अक्सर पूछे जाने वाले प्रश्न
NSAttributedString एक iOS क्लास है जो अक्षर और श्रेणी स्तर पर फ़ॉन्ट, रंग और शैली विशेषताओं के साथ फ़ॉर्मेटेड टेक्स्ट बनाने के लिए है।
SpannableString Span ऑब्जेक्ट के माध्यम से टेक्स्ट मार्कअप के लिए एक Android क्लास है: ForegroundColorSpan, StyleSpan, URLSpan, UnderlineSpan।
.ttf फ़ाइल को प्रोजेक्ट में जोड़ें, इसे Info.plist में Fonts provided by application कुंजी के तहत निर्दिष्ट करें, फिर UIFont(name:) का उपयोग करें।
.ttf फ़ाइल को res/font/ में रखें, एक XML फ़ॉन्ट परिवार बनाएँ, और android:fontFamily निर्दिष्ट करें या Typeface.createFromAsset() का उपयोग करें।
कर्निंग अक्षर जोड़ियों के बीच का स्थान है। लिगेचर अक्षर संयोजनों के लिए विशेष ग्लिफ़ हैं। वे NSKernAttributeName और NSLigatureAttributeName के माध्यम से नियंत्रित होते हैं।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।