PPLA language manual में शब्द लपेटने के लिए लंबे समय तक कोई फ़ंक्शन नहीं है, इसलिए आपको प्रिंटर पर आदेश भेजने से पहले लाइन ब्रेक डालने के लिए स्वयं को गणना करना होगा।
यह कैसे करें प्रोग्रामिंग भाषा द्वारा निर्भर करता है जिसका आप उपयोग कर रहे हैं; उदाहरण के लिए PHP भाषा में wordwrap function है जो आपके लिए यह कर सकता है (वर्डवाप फ़ंक्शन का सी स्रोत कोड here है, लाइन 803 पर)।
एक शब्द रैपिंग एल्गोरिथ्म का एक सरल विवरण wikipedia पर पाया जा सकता:
SpaceLeft := LineWidth
for each Word in Text
if (Width(Word) + SpaceWidth) > SpaceLeft
insert line break before Word in Text
SpaceLeft := LineWidth - Width(Word)
else
SpaceLeft := SpaceLeft - (Width(Word) + SpaceWidth)
सबसे पहले, आप शब्दों में पाठ विभाजित करने के लिए है, लेकिन मुझे लगता है कि यह आपके लिए एक समस्या नहीं है, इसलिए मैं आगे विस्तार नहीं करूंगा।
LineWidth
लेबल चौड़ाई के रूप में गणना की जानी चाहिए बाएं और दाएं मार्जिन चौड़ाई।
मान लीजिए कि आपके टेक्स्ट के लिए आप एक निश्चित-चौड़ाई (गैर आनुपातिक) फ़ॉन्ट का उपयोग कर रहे हैं, तो आप LineWidth
को वर्णों की चौड़ाई से विभाजित करके कई वर्णों में परिवर्तित कर सकते हैं (या बस टेक्स्ट की एक लंबी पंक्ति प्रिंट करके और फिर मुद्रित होने वाले वर्णों की संख्या गिनती है); इस तरह प्रत्येक शब्द की लंबाई इसके पात्रों की संख्या से मेल खाती है।
अन्यथा, यदि आप आनुपातिक फ़ॉन्ट का उपयोग कर रहे हैं, तो प्रत्येक शब्द चौड़ाई की गणना करना अधिक कठिन होता है, जब तक कि आप प्रत्येक वर्ण की चौड़ाई को नहीं जानते।
एक विचार लेबल के उसी पिक्सेल आकार के साथ एक छवि का उपयोग कर सकता है, केवल प्रिंटिंग अनुकरण करने के लिए और लाइन ब्रेक डालने के लिए गणना करने के लिए, लेकिन इसके लिए प्रत्येक शब्द की पिक्सेल चौड़ाई की गणना करने के लिए एक फ़ंक्शन होना आवश्यक है (इसके लिए PHP में उदाहरण imagettfbbox function है), और प्रिंटर और पीसी पर बिल्कुल वही फ़ॉन्ट का उपयोग करने के लिए।
ध्यान रखें कि आपको लेबल चौड़ाई से अधिक लंबे शब्दों को संभालना भी पड़ सकता है; इस मामले में आपको बस LineWidth
पर शब्द को विभाजित करना होगा और अगली पंक्ति पर जारी रखना होगा।
स्रोत
2013-03-16 21:27:14