`text-wrap: pretty` के साथ बेहतर टाइपोग्राफी पाना
(webkit.org)- वेब टाइपोग्राफी को और सुंदर बनाने वाला
text-wrap: prettyपेश किया गया - Safari Technology Preview 216 में नया जोड़ा गया यह फीचर वेब टाइपोग्राफी को अधिक परिष्कृत और पढ़ने में आसान बनाता है
- पहले वेब टेक्स्ट लेआउट हर पंक्ति को अलग-अलग प्रोसेस करता था, लेकिन
prettyपूरे पैराग्राफ को ध्यान में रखकर लाइन ब्रेक की जगह तय करता है - यह फीचर पठनीयता और accessibility को बेहतर बनाता है, और पारंपरिक typesetting तरीकों से प्रेरित है
पारंपरिक टाइपोग्राफी से अच्छे लाइन ब्रेक सीखना
- बहुत छोटी आखिरी पंक्ति से बचना: आखिरी पंक्ति में सिर्फ एक शब्द रह जाना सौंदर्य की दृष्टि से अच्छा नहीं माना जाता
- पैराग्राफ के खुरदरे किनारे सुधारना: जब पंक्तियों के अंत बहुत असमान दिखते हैं तो पठनीयता घटती है, इसलिए उन्हें जितना संभव हो संतुलित रखना चाहिए
- खराब hyphen के उपयोग से बचना: लगातार दो पंक्तियों में hyphen आना या शब्दों को जरूरत से ज्यादा तोड़ना पढ़ने में कठिन बनाता है
- टाइपोग्राफी river को रोकना: पंक्तियों के बीच खाली जगह का लंबवत जुड़ जाना, जो नज़र को भटका देता है, उससे बचना चाहिए
वेब लाइन ब्रेकिंग का इतिहास
- वेब 1991 से "पहली पंक्ति से एक-एक पंक्ति करके प्रोसेस करने" वाली पद्धति का उपयोग करता आया है
- इस तरीके में हर पंक्ति की टेक्स्ट लंबाई अलग से गिनी जाती है और पंक्तियों के बीच सामंजस्य पर ध्यान नहीं दिया जाता
- InDesign या LaTeX जैसे टूल पूरे पैराग्राफ को देखकर लाइनें सेट करते हैं, लेकिन वेब हाल तक ऐसा नहीं कर पाता था
- Safari Technology Preview 216 में पहली बार पूरे पैराग्राफ को ध्यान में रखने वाली लाइन ब्रेकिंग पद्धति लाई गई है
text-wrap: pretty किन समस्याओं को हल करता है
- यह पूरे पैराग्राफ का मूल्यांकन करके सबसे उपयुक्त लाइन ब्रेक चुनता है
- यह छोटी आखिरी पंक्ति को रोकता है, पंक्तियों के अंत के आकार (rag) को सुधारता है, और अनावश्यक hyphen को कम करता है
- Chromium आधारित ब्राउज़र पैराग्राफ की सिर्फ आखिरी 4 पंक्तियों को सुधारते हैं, जबकि WebKit पूरे पैराग्राफ पर इसे लागू करता है
- river प्रभाव को यह अभी तक नहीं सुधारता, लेकिन आगे इसे जोड़ने की योजना है
अलग-अलग ब्राउज़रों में implementation का अंतर
prettyCSS Working Group की परिभाषा के अनुसार ब्राउज़र दर ब्राउज़र अलग तरह से काम कर सकता है- WebKit इसे पूरे पैराग्राफ पर लागू करता है, जबकि Chromium केवल आखिरी 4 पंक्तियों पर
- इसलिए डेवलपर इसे सिर्फ आखिरी पंक्ति सुधारने के लिए नहीं, बल्कि पूरी टाइपोग्राफी बेहतर करने के लिए उपयोग कर सकते हैं
डेमो देखें
- CodePen डेमो में
pretty,balance, hyphen, alignment आदि के संयोजन को आज़माया जा सकता है - "show guides" और "show ghosts" चालू करके बदलाव से पहले और बाद की तुलना की जा सकती है
- अलग-अलग भाषाओं (अंग्रेज़ी, अरबी, जर्मन, चीनी, जापानी) में इसका असर देखा जा सकता है
प्रदर्शन को लेकर चिंता दूर करना
- बहुत अधिक पंक्तियों वाले कंटेंट में प्रदर्शन पर असर पड़ सकता है, लेकिन सामान्य पैराग्राफ में कोई प्रदर्शन समस्या नहीं है
- जब तक पैराग्राफ सैकड़ों या हजारों पंक्तियों का न हो, इसे आराम से इस्तेमाल किया जा सकता है
- जरूरत पड़ने पर WebKit लंबे पैराग्राफ को हिस्सों में बाँटकर प्रोसेस करेगा ताकि प्रदर्शन बना रहे
pretty और balance में अंतर
prettyटेक्स्ट को कंटेनर की चौड़ाई भरने देता है, लेकिन लाइन ब्रेक को अधिक स्वाभाविक बनाता हैbalanceका ध्यान सभी पंक्तियों की लंबाई समान करने पर होता है, इसलिए कंटेनर कम भरता है- आम तौर पर
prettyमुख्य लेखन के लिए उपयुक्त है, जबकिbalanceशीर्षक, caption और teaser टेक्स्ट के लिए बेहतर है - दोनों का उपयोग छोटे टेक्स्ट पर किया जा सकता है, लेकिन लंबे मुख्य टेक्स्ट में
balanceसे बचना बेहतर है
text-wrap के दूसरे property values
text-wrap: avoid-short-last-lines
- यह नया जोड़ा गया value है, जो केवल बहुत छोटी आखिरी पंक्ति से बचने पर केंद्रित है
- अभी तक किसी भी ब्राउज़र में इसे implement नहीं किया गया है
text-wrap: auto
- यह default value है, जो 1991 से इस्तेमाल हो रहे लाइन-आधारित "greedy line breaking" algorithm का उपयोग करती है
- भविष्य में ब्राउज़र इस default behavior को भी बेहतर बना सकते हैं
text-wrap: stable
- फिलहाल यह
autoकी तरह ही काम करता है, लेकिन editable टेक्स्ट के लिए स्थिर line breaking देता है - यह सुनिश्चित करता है कि animation या टेक्स्ट इनपुट के दौरान line break न बदलें
text-wrap की विस्तृत properties
-
text-wrapवास्तव मेंtext-wrap-modeऔरtext-wrap-styleनाम की दो properties का shorthand है -
text-wrap-mode: लाइन ब्रेक की अनुमति तय करता है (wrap/nowrap) -
text-wrap-style: line breaking algorithm चुनता है (auto,stable,balance,pretty,avoid-short-last-lines)text-wrap-style: pretty; text-wrap-mode: wrap; -
white-spaceproperty के साथ उपयोग करते समय whitespace handling भी देखनी चाहिए
संक्षिप्त सार
text-wrap: prettyवेब टेक्स्ट line breaking को पहले की तुलना में कहीं अधिक परिष्कृत बनाता है- Safari Technology Preview 216 में इसे पूरे पैराग्राफ के मूल्यांकन वाले तरीके से लागू किया गया है
- लंबे मुख्य टेक्स्ट पर भी इसका प्रदर्शन प्रभाव लगभग नहीं के बराबर है, जबकि पठनीयता और दृश्य गुणवत्ता में बड़ा सुधार मिलता है
balanceसे इसका अंतर समझकर, कंटेंट के प्रकार के अनुसार सही विकल्प चुनना ज़रूरी है
1 टिप्पणियां
Hacker News राय
"text-wrap: pretty"के performance को लेकर चिंतित हैं। यह मानना मुश्किल है कि इतने सारे डेवलपर वास्तव में text wrapping के performance के बारे में सोचते हैं"text-wrap: pretty"support जोड़ा गया है, जिससे web typography में अभूतपूर्व स्तर की refinement आती है। caniuse.com के अनुसार Chrome सितंबर 2023 से इस feature को support कर रहा है। यह समझना कठिन है कि इसमें "अभूतपूर्व" क्या है"text-align: justify"और"text-wrap: pretty"के बीच का अंतर जानता है? Chrome में"text-wrap: pretty"कहीं अधिक smooth effect देता है। मैंने देखा कि औसत blog के body text में दोनों का उपयोग करना अच्छा होगा या नहीं, और लगता है कि दोनों अलग-अलग तरह के बदलाव लाते हैं"large"शब्द को अकेला छोड़ देता है।"text-wrap: pretty"लागू करने पर यह ठीक हो जाता है"pretty"का उद्देश्य यह रखा है कि हर browser text wrapping को बेहतर बनाने के लिए जो कर सकता है, वह करे। इसका मतलब यह नहीं कि सभी browser को बिल्कुल एक जैसा चयन करना होगा। Chrome के implementation की वजह से कई web developer यह उम्मीद करते हैं that this value is for preventing short last lines. लेकिन यही इसका इरादा नहीं है"text-wrap: balance"इस्तेमाल कर रहा हूँ। खराब wrapping से बचने के लिए कुछ खास शब्दों को जोड़ने की कोशिश की थी।"text-wrap: pretty"body text में इसी तरह की समस्याएँ हल करेगा