2010-07-22 15 views
13

क्या एसवीजी में फ़ॉन्ट मेट्रिक्स प्राप्त करने का कोई माध्यम है? मैं प्राप्त करना चाहता हूं: वंश, चढ़ाई, अधिकतम ऊंचाई, अग्रिम।एसवीजी और फ़ॉन्ट मेट्रिक्स

मुझे फ्लोचार्ट्स जैसे टेक्स्ट & ग्राफिक्स ड्राइंग के लिए इसकी आवश्यकता है।

उदाहरण के लिए, मुझे पाठ के चारों ओर एक बॉक्स खींचने की आवश्यकता है, और पूर्व आकार के आकार (अक्षर 'एक्स' के आकार) से कनेक्टर लाइन खींचने की आवश्यकता है, और बॉक्स पक्ष के केंद्र से नहीं।

उत्तर

3

यदि आपके पास डोम पहुंच है तो SVG DOM methods for text elements कई हैं। फिर getBBox विधि है जो अधिकांश svg तत्वों पर उपलब्ध है।

आप SVGFonts के साथ काम कर रहे हैं, तो डेटा पहले से ही सामान्य गुण, के रूप में xml प्रारूप में उपलब्ध है जैसे ascent, descent आदि

अपने यूज-केस के लिए मैं getBBox की सलाह देते हैं, क्योंकि यह ग्राफिक के साथ सौदा कर सकते हैं तत्व भी (यदि आप कभी चार्ट में टेक्स्ट की तुलना में अधिक चीजें जोड़ना चाहते हैं)।

+2

मैं निश्चित रूप से 'getBBox' का उपयोग करके अनुशंसा करता हूं, क्योंकि यह केवल टेक्स्ट की पूर्ण सीमाओं का सम्मान करता है। हालांकि, टेक्स्ट को सही तरीके से रखने के लिए, एक बार चढ़ाई और वंश का सम्मान करना होगा। एक SVGTextElement की 'y' विशेषता _baseline_ की ऊर्ध्वाधर स्थिति निर्दिष्ट करती है। इसलिए केवल 'बीबीओक्स' का उपयोग करने से ज्यादा मदद नहीं मिलेगी। समस्या यह है कि एसवीजी डोम विधियों को चढ़ाई और मूल जानकारी पूछने की अनुमति नहीं है! मुझे नहीं पता कि यह स्पेक में क्यों कमी है। – radlan

+2

वंश की गणना करने के लिए, मैंने यहां किया है। एसवीजी में पाठ तत्व के लिए शून्य में "y" सेट करें। अब आपकी आधार रेखा शून्य पर है। फिर GetBBox से "y2" प्रॉपर्टी प्राप्त करें और यह आपके "मूल" की ऊंचाई होगी। – Chad

संबंधित मुद्दे