2009-10-29 19 views
19

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

धन्यवाद

उत्तर

16

दिया स्ट्रिंग के लिए बाउंडिंग बॉक्स के आकार पाने के लिए PHP समारोह imagettfbbox का प्रयोग करें।

दूसरी तरफ भी javascript to manipulate SVG images का उपयोग कर सकते हैं यदि आप इसे क्लाइंट साइड पर संभालना चाहते हैं। यही कारण है कि जिस तरह से यह भले ही ग्राहक निर्दिष्ट फ़ॉन्ट या नहीं था कोई फर्क नहीं होता ...

+1

में एक टाइपो वह फ़ंक्शन था जिसे मैं सोच रहा था जब मैंने अपना जवाब दिया ... मेरी याददाश्त उतनी अच्छी नहीं है जितनी यह थी ... – jsnfwlr

3

आपका शीर्षक और वास्तविक पोस्ट थोड़ा अलग बातें कहता है। मैं अनुमान लगा रहा हूं कि आप वास्तव में क्या पूछ रहे हैं कि क्या आपके PHP कोड (वेब ​​पेज को प्रस्तुत करने से पहले) में वेब पेज पर दिए गए पाठ के पिक्सेल में चौड़ाई निर्धारित करना संभव है।

यदि ऐसा है, तो उत्तर "नहीं" है। कहा गया है कि उपयोगकर्ता के कंप्यूटर पर फ़ॉन्ट उपलब्ध नहीं हो सकता है; एस/उसके पास कस्टम स्टाइलशीट लागू हो सकती है; बड़े फ़ॉन्ट आकार का उपयोग करें; आदि ...

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

जावास्क्रिप्ट में इसे कैसे करें इस पर विवरण के लिए this question पर एक नज़र डालें।

+1

कृपया मेरा संपादन देखें। लिंक के लिए +1 लेकिन यह मेरे उद्देश्य को हल नहीं करता है :( –

+1

@ ChssPly76 - मैं असहमत हूं। क्रिमसन एक छवि उत्पन्न करने के लिए PHP का उपयोग कर रहा है। यह सर्वर की ओर से किया जाता है, इसलिए फ़ॉन्ट निश्चित रूप से उपलब्ध होगा। – Abinadi

+0

@Abinadi - क्रिमसन पूछ रहा है कि ब्राउजर ** में ** स्ट्रिंग किए जाने पर स्ट्रिंग कितनी पिक्सेल होगी, न कि उस छवि में जो वह प्रतिपादन कर रहा है। या, कम से कम, जिस तरह से मैंने इसे समझ लिया। – ChssPly76

13

आप छवि के रूप में स्ट्रिंग को प्रस्तुत करने और परिणामी छवि के आकार को प्राप्त करने के लिए PHP जीडी का उपयोग कर सकते हैं।

आप इस का उपयोग करते हैं, यह काम करना चाहिए:

list($left,, $right) = imageftbbox(12, 0, "arial.ttf", "Hello World"); 

    $width = $right - $left; 
+0

ऐसा लगता है कि क्रिमसन स्ट्रिंग को एक छवि के रूप में प्रस्तुत कर रहा है, लेकिन सवाल यह है कि छवि को आकार देने का आकार इतना है कि स्ट्रिंग सही ढंग से फिट हो जाएगी। क्या यह जीडी पुस्तकालय के साथ किया जा सकता है? मुझे नहीं लगता था कि जीडी के साथ एक शब्द रैप विकल्प था। – Abinadi

+0

+1 जीडी सहायक प्रतीत होता है –

+0

फाल्सी, मैं स्ट्रिंग चौड़ाई निर्धारित करने के लिए जीडी में कोई रास्ता नहीं ढूंढ पा रहा हूं। ऐसा लगता है कि मुझे छवि चौड़ाई और ऊंचाई पैराम के साथ छवि स्ट्रिंग और ऊंचाई पैराम के साथ कॉल करना चाहिए, इससे पहले कि एक स्ट्रिंग को लिखा जा सके, इस प्रकार व्यायाम को एक व्यर्थ दौर यात्रा करना :( –

3

उपयोग jQuery,

$("text").each(function(){alert(this.innerHTML+" is "+$(this).width()+" pixels.");}); 
2

आप पाठ के स्ट्रिंग की लंबाई निर्धारित करने के लिए, पीएचपी का उपयोग करना चाहते हैं बिल्ड-इन -Fonts (जैसे अगर आप imagestring उपयोग कर रहे हैं()), आप का उपयोग कर सकते हैं:

imagefontwidth() 


$text = "Your text here" 
$fontSize = 5; 

$textLength = imagefontwidth($fontSize) * strlen($text); 

आप बिल्ड-इन-फ़ॉन्ट्स, उपयोग imagettfbbox (उपयोग नहीं करते हैं), जैसा कि ऊपर उल्लेख की तरह।

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