फ़ॉन्ट रेंडरिंग वास्तव में कैसे काम करता है?


11

मुझे एहसास है कि मैं अनिवार्य रूप से जानता हूं कि मेरे कंप्यूटर में जिस तरह से फोंट का प्रतिपादन किया गया है उसके बारे में कुछ भी नहीं है।

मैं जो कुछ भी देख सकता हूं, उससे आम तौर पर फ़ॉन्ट रेंडरिंग पूरे सिस्टम में एक सुसंगत तरीके से किया जाता है। उदाहरण के लिए, मैं अपने डे कंट्रोल पैनल में कॉन्फ़िगर करने वाली सबपिक्सल फ़ॉन्ट हिंटिंग सेटिंग का पाठ पर प्रभाव पड़ता है जो विंडो बॉर्डर पर, मेरे ब्राउज़र में, मेरे पाठ संपादक में और इसी तरह दिखाई देता है। (मुझे यह देखना चाहिए कि कुछ जावा एप्लिकेशन ध्यान देने योग्य अंतर दिखाते हैं, इसलिए मुझे लगता है कि वे एक अलग फ़ॉन्ट रेंडरिंग तंत्र का उपयोग कर रहे हैं)।

मुझे ऊपर से जो मिलता है वह यह है कि संभवतः सभी अनुप्रयोगों को फ़ॉन्ट रेंडरिंग की आवश्यकता होती है जो कुछ ओएस (या डीई)-लाइब्रेरी का उपयोग करते हैं।

दूसरी ओर, ब्राउज़र आमतौर पर एक रेंडरिंग इंजन के माध्यम से अपने स्वयं के रेंडरिंग का प्रबंधन करते हैं, जो विभिन्न वस्तुओं की स्थिति का ध्यान रखता है - पाठ सहित - विशिष्ट प्रवाह नियमों के अनुसार।

मुझे यकीन नहीं है कि ये दोनों तथ्य कैसे संगत हैं। मैं यह मानूंगा कि ब्राउज़र को ओएस को किसी दिए गए स्थान पर ग्लिफ़ खींचने के लिए कहना होगा, लेकिन यह पहले से जाने बिना पाठ के प्रवाह को कैसे प्रबंधित कर सकता है कि ग्लिफ़ को कितना स्थान मिलेगा? क्या ग्लिफ़ आकारों को निर्धारित करने के लिए अलग-अलग कॉल हैं, ताकि ब्राउज़र प्रवाह का प्रबंधन कर सके जैसे कि कुछ बक्से थे जो बाद में ओएस द्वारा भरे गए थे? (हालांकि यह कर्लिंग का ध्यान नहीं रखता है)। या पाठ प्रवाह सहित पूरे पाठ क्षेत्र को खींचने के लिए ओएस जिम्मेदार है? क्या ओएस प्रदान किए गए ग्लिफ़ को एक बिटमैप के रूप में वापस करता है और इसे स्क्रीन पर खींचने के लिए एप्लिकेशन पर छोड़ देता है?


1
छोटा जवाब हां है"।
ग्राहम बोरलैंड

@GrahamBorland ...: - / जिन तीन विकल्पों में से एक का मैंने चित्रण किया है, वह है उत्तर "हाँ"?
एंड्रिया

परिस्थितियों के आधार पर वे सब। मैं एक उचित जवाब लिखने की कोशिश करूँगा।
ग्राहम बोरलैंड

जवाबों:


9

आप सही हैं कि, सामान्य रूप से, एप्लिकेशन ओएस या जीयूआई टूलकिट द्वारा प्रदान किए गए पुस्तकालयों का उपयोग फ़ॉन्ट रेंडरिंग करने के लिए करते हैं।

विशिष्ट फ़ॉन्ट इंजन ऑपरेशन के कई मोड की अनुमति देते हैं। साधारण मामले के लिए, एक एप्लिकेशन एक निश्चित स्थिति में खींची जाने वाली पाठ की एक स्ट्रिंग के लिए पूछ सकता है, और इंजन सब कुछ (माप, स्थिति, प्रदर्शन को पिक्सेल ड्राइंग, आदि) का ख्याल रखता है।

उन अनुप्रयोगों के लिए जिन्हें नियंत्रण की एक महीन डिग्री की आवश्यकता होती है - ब्राउज़र या वर्ड प्रोसेसर, उदाहरण के लिए - इंजन उन इंटरफेस को उजागर करेगा जहां ऐप पहले से दिए गए पाठ के दिए गए टुकड़े के लिए पूछ सकता है। ऐप फिर इस ज्ञान का उपयोग यह जानने के लिए कर सकता है कि यह एक पंक्ति में कितना पाठ फिट कर सकता है, जहां लाइन-ब्रेक होना चाहिए, एक पैरा कितना कमरा लेगा आदि। ऐप अभी भी इंजन को वास्तविक रेंडरिंग करने के लिए कह सकता है। पिक्सल के।

(एक अंदर का परिदृश्य हो सकता है जहां इंजन अधिकतम-चौड़ाई पैरामीटर ले सकता है, और संभवतः कुछ कर्निंग / पैडिंग पैरामीटर, और स्वचालित रूप से उतना ही पाठ प्रस्तुत कर सकता है जितना यह फिट हो सकता है।)

अंत में, फ़ॉन्ट इंजन एप्लिकेशन को पाठ के अंतिम प्रतिपादन को लेने की अनुमति दे सकता है, ग्लिफ़ के बिटमैप्स को एक निश्चित आकार में पहले से रेंडर करके, ऐप को अंतिम प्रदर्शन पर स्थिति और समग्र करने की अनुमति देता है। या इंजन कुछ वेक्टर टूलकिट के साथ प्रतिपादन के लिए कच्चे ग्लिफ़ रूपरेखा डेटा को वापस करने की पेशकश भी कर सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.