आइए पहले समीक्षा करें कि दस्तावेज़ क्या कहता है :
- शीर्ष - किसी दिए गए पाठ आकार में फ़ॉन्ट में सबसे लंबे ग्लिफ़ के लिए आधार रेखा के ऊपर की अधिकतम दूरी।
- एसेंट - एकल स्पेल्ड टेक्स्ट के लिए बेसलाइन के ऊपर अनुशंसित दूरी।
- उतर - एकल स्थानिक पाठ के लिए आधार रेखा के नीचे अनुशंसित दूरी।
- निचला - किसी दिए गए पाठ आकार में फ़ॉन्ट में सबसे कम ग्लिफ़ के लिए आधार रेखा के नीचे की अधिकतम दूरी।
- अग्रणी - पाठ की पंक्तियों के बीच जोड़ने के लिए अनुशंसित अतिरिक्त स्थान।
ध्यान दें कि बेसलाइन वह है जिसे पहले चार से मापा जाता है। यह वह रेखा है, जो आधार बनाती है, जिस पर पाठ बैठता है, भले ही कुछ अक्षर (जैसे जी, वाई, जे, आदि) के कुछ हिस्से हो सकते हैं जो लाइन के नीचे जाते हैं। यह पंक्तिबद्ध नोटबुक में आपके द्वारा लिखी गई लाइनों के बराबर है।
इन चीजों की कल्पना करने में मदद करने के लिए यहां एक तस्वीर है:
याद रखें कि जब जावा और एंड्रॉइड में एक कैनवास पर ड्राइंग किया जाता है, तो नीचे जाना y में वृद्धि है और ऊपर जाना y में कमी है। इसका मतलब है कि फॉन्टमेट्रिक्स ' top
और ascent
नकारात्मक संख्याएं हैं क्योंकि उन्हें आधार रेखा से मापा जाता है (जबकि नीचे और नीचे सकारात्मक संख्या होती है)। इस प्रकार, से दूरी प्राप्त करने के लिए top
करने के लिए bottom
(तुम क्या करने की आवश्यकता होगी bottom
- top
)।
अग्रणी एक लाइन के नीचे और अगली पंक्ति के शीर्ष के बीच की दूरी है। ऊपर दी गई तस्वीर में, यह लाइन 1 के नारंगी और लाइन 2 के बैंगनी के बीच का स्थान है। जैसा कि @MajorTom ने नीचे लिखा है , टाइपोग्राफी में यह शब्द "सही प्रकार की आधारभूत रेखाओं के आधार के बीच की दूरी" के रूप में अधिक ठीक से परिभाषित किया गया है। * हालांकि, एंड्रॉइड शब्द का उपयोग अधिक ऐतिहासिक अर्थों में किया गया है। शब्द (उच्चारण "लैडिंग") लीड स्ट्रिप से आता है जो पुराने टाइपसेटर्स टाइप की लाइनों के बीच डालते थे। यह मूल रूप से लाइन रिक्ति को समायोजित करने का एक तरीका था। एंड्रॉइड में मैंने वास्तव में कभी भी अग्रणी को इसके अलावा और कुछ नहीं देखा है0
और मैंने इसे स्रोत कोड में किसी भी चीज़ के लिए उपयोग नहीं किया है। (सही मुझे यदि आप जानते हैं, जहां यह calculate कुछ भी करने के लिए प्रयोग किया जाता है।) आप एक में पंक्ति रिक्ति को बदल सकते हैं TextView
के साथ setLineSpacing
कोड या में android:lineSpacingExtra
और android:lineSpacingMultiplier
एक्सएमएल में। हालाँकि, ये विधियाँ अग्रणी का उपयोग नहीं करती हैं या संशोधित नहीं करती हैं।
अधिक जानकारी के लिए ये लिंक देखें:
और ज्यादा खोजें
फ़ॉन्ट मेट्रिक्स का अधिक पता लगाने के लिए, मैंने एक सरल परियोजना बनाई।
यहां सभी कोड सूचीबद्ध करने के बजाय। मैंने प्रोजेक्ट को GitHub में जोड़ा । आप या तो प्रोजेक्ट को क्लोन कर सकते हैं, या निम्न फ़ाइलों को एक नए प्रोजेक्ट में कॉपी कर सकते हैं।
क्या पत्र कभी ऊपर top
या नीचे जाते हैं bottom
?
आमतौर पर नहीं, लेकिन वे कर सकते थे। ऊपर और नीचे, जैसा कि मैं उन्हें समझता हूं, फ़ॉन्ट द्वारा निर्धारित किया जाता है (इसलिए "FontMetrics"), इसलिए एक फ़ॉन्ट निर्माता एक ग्लिफ़ को ऊपर जाने की तुलना में उच्चतर बना सकता है जो वे कहते हैं कि (या नीचे से कम है)। इसके अलावा, यूनिकोड में diacritical मार्क्स के संयोजन के साथ यह बहुत आसानी से हो सकता है। यहाँ एक अतिवादी उदाहरण है ( यहाँ से लिया गया है)): M̵ͯͪ̿̿̂̄ͫ̃҉͏͎̣̹̱̜͉̦̞̪̘̠̝̝͍̼̜̖̥̭͟a :y̵̴̢͕̝̩̱͈͕̼̣͕̟̌͗̾ͤ̎͌̄ͣͨ͊ͬb̡̯̰̪̜͙̟̝̠͚̜̥̙̤̃ͨ̋̒̒̊ͧͤ͐̓͋̌̾̇̔̈́̀́͡͠e̵̳̙͔̟̱͕̓̀̄̉̅ͧ̋͊͌͑́͌ͪ̒̿̀̚ ̛͋̏̍̆ͤ͛͐ͨ̌̋ͤ̎̂ͨ̂̓̑̚̕͟͏̻̣͖̖͚͚͓̲̼̪ȁ̔̅̿͐̑͡͏̝͓̮͚̘̦̰͚͎͔͉͚̮̠̕͜ͅṱ̱̼̖̓̂ͭ̏̅͂ͥ͌ͯ͌͠hͪ̓ͪ̄̌̓ͧ͋͐ͬ̅̑҉̨̪̬͎͍̥̬s̡̮̳͙͓͔̹̘̹͓̘̻̦̣͎̫̐ͤ̐͛́͝? ̧̦̼̘͕̪̠̙͖̦̯̦̘͉͈͕͔̘̻̲͑ͨ̊̈́̐ͫ͐̌ͯ̀͘͝Ḩ̷̸̸̹͉̩̜̹̞ͯ̃̃ͧͬͨ̌̀̾̐̈̇ͧ͛̃͐̀ͦ͞ ̵̳̙͔̟̱͕̓̀̄̉̅ͧ̋͊͌͑́͌ͪ̒̿̀̚A̴̦̗̬̠͙̭͉̟̺͇̭̰͔͕̯̅̃͋ͪ̈́̉̓̌ͯ̈́͆̋̀ͤ̇̂̿̈́̂͡͡Ṱ̲͎͉̣̳̺̱̜̦̬͕̣͉͇͊̌ͥ͐͒̈́̓́ͥ́́̋͂̅ͬ̆͗ͥ̕͢͡S̍ͧ͗̒͗̂̈ͬ͊̚̚͢͏̗̣̳ͅ ͔̟̝͔ͥ̈́̏ͮͯ̇͆̊̒ͦͦ͘͢͜ !!!
एंड्रॉइड में उस स्ट्रिंग को प्लग करना हमें मिलता है:
top
नीचे और नीचे के ऊपर विशेषांक मिलते हैं bottom
। यह ध्यान रखना दिलचस्प है कि कुल चौड़ाई और ऊंचाई को सही ढंग से पाठ सीमा द्वारा मापा जाता है, हालांकि।
वैसे भी, आपके प्रोग्रामिंग में सभी व्यावहारिक उद्देश्यों के लिए, आप बस मान सकते हैं कि ग्लिफ़ अक्षरों के लिए अधिकतम और न्यूनतम हैं top
और bottom
। और आम तौर पर वे अंदर रहना होगा ascent
और decent
। यदि आपको जिस भी कारण से जानने की आवश्यकता है, यदि पत्र उससे परे हैं top
या bottom
आप उपयोग कर सकते हैं TextPaint.getTextBounds
।