क्या आप पोस्टस्क्रिप्ट कोड से परिचित हैं? या क्या यह सिर्फ अंधेरे से कॉपी और चिपकाया गया है? यदि आप इसे समझना चाहते हैं, तो आपको "पोस्टस्क्रिप्ट भाषा संदर्भ" या "लाल पुस्तक" या "पीएलआरएम" के लिए Google होना चाहिए। ये संसाधन एडोब से पीडीएफ के रूप में उपलब्ध हैं।
आपका पोस्टस्क्रिप्ट टुकड़ा निम्नलिखित चरणों का उपयोग करता है: ढेर के शीर्ष पर
(test)
स्थानों स्ट्रिंग "परीक्षण"।
dup
ढेर पर सबसे ऊपर आइटम डुप्लिकेट करता है। (अब आपके पास स्टैक पर दो बार स्ट्रिंग होगी।)
stringwidth
। इस ऑपरेटर को निष्पादित करने के बाद, शीर्ष "परीक्षण" स्ट्रिंग का उपभोग किया जाएगा, और इसके बजाय दो मानों को स्टैक में जोड़ा जाएगा: स्ट्रिंग की ऊंचाई (शीर्ष) और स्ट्रिंग की चौड़ाई (शीर्ष से दूसरी)। [अद्यतन:वास्तव में, "स्ट्रिंग की ऊंचाई" नहीं पूरी तरह से सही है - यह बजाय खड़ी वर्तमान बिंदु के ऑफसेट स्ट्रिंग आकर्षित करने के लिए खत्म करने के बाद है ...]
- इसके बाद, आप
pop
का उपयोग करें। यह बस ढेर पर सबसे ऊपर मूल्य हटा देता है। अब केवल स्ट्रिंग की चौड़ाई स्टैक के शीर्ष पर बनी हुई है।
2 div
उस मान को 2 से विभाजित करता है और परिणाम (आधा स्ट्रिंगविड्थ) छोड़ देता है।
neg
ढेर पर सबसे ऊपर मूल्य को अस्वीकार करता है। अब वह नकारात्मक मूल्य ढेर पर सबसे ऊपर है।
0
स्टैक के शीर्ष पर "0" मान रखता है।
rmoveto
तब ढेर पर दो शीर्ष मूल्यों का उपभोग करता है और उस बिंदु से वर्तमान बिंदु (आधा स्ट्रिंग की चौड़ाई) को बाईं ओर ले जाता है।
show
पहली "टेस्ट" स्ट्रिंग का उपभोग करता है जो ढेर के नीचे हर समय बना रहता है और इसे "दिखाता है"।
तो स्ट्रिंग की ऊंचाई को ध्यान में रखने के लिए क्या काम करेगा? अपने अंतिम पंक्ति के रूप का प्रयास करें:
200 700 moveto (test) dup true charpath pathbbox 3 -1 roll sub 2 div neg 3 1 roll sub 2 div exch 200 700 moveto rmoveto show"
को समझने के लिए मेरे परिवर्तन में लाल किताब charpath
, div
, exch
, pathbbox
, roll
और sub
ऑपरेटरों के अर्थ को देखने।
यह आदेश (आसान देख सकते हैं और परिणामों की जांच करने के लिए) कोड से विंडोज पर एक पीडीएफ फाइल बनाने के लिए Ghostscript का उपयोग करता है:
gs \
-o my.pdf \
-sDEVICE=pdfwrite \
-c "/Helvetic-Oblique findfont 10 scalefont setfont 200 700 1 0 360 arc fill 0 0 moveto (test test) dup true charpath pathbbox 3 -1 roll sub 2 div neg 3 1 roll sub 2 div exch 200 700 moveto rmoveto show"
बेहतर पठनीय प्रकार हैं:
gswin32c.exe^
-o my.pdf^
-sDEVICE=pdfwrite^
-c "/Helvetic-Oblique findfont 10 scalefont setfont 200 700 1 0 360 arc fill 0 0 moveto (test test) dup true charpath pathbbox 3 -1 roll sub 2 div neg 3 1 roll sub 2 div exch 200 700 moveto rmoveto show"
लिनक्स उपयोग पर:
gswin32c^
-o my.pdf^
-sDEVICE=pdfwrite^
-c "/Helvetic-Oblique findfont 10 scalefont setfont"^
-c "200 700 1 0 360 arc fill 0 0 moveto (test test) dup"^
-c "true charpath pathbbox 3 -1 roll sub 2 div neg 3 1 roll"^
-c "sub 2 div exch 200 700 moveto rmoveto show"
और
+०१२३५१६४१०६
gs \
-o my.pdf \
-sDEVICE=pdfwrite \
-c "/Helvetic-Oblique findfont 10 scalefont setfont" \
-c "200 700 1 0 360 arc fill 0 0 moveto (test test) dup" \
-c "true charpath pathbbox 3 -1 roll sub 2 div neg 3 1 roll" \
-c "sub 2 div exch 200 700 moveto rmoveto show"
स्रोत
2010-09-06 23:23:17
+1 पोस्टस्क्रिप्ट के आपके अच्छे स्पष्टीकरण के लिए +1। – DaveB