Path: csiph.com!usenet.pasdenom.info!aioe.org!.POSTED!not-for-mail From: Cecil Westerhof Newsgroups: comp.lang.postscript Subject: Re: Why do I not see the characters Date: Sat, 09 Jun 2012 22:16:59 +0200 Organization: Decebal Computing Lines: 271 Message-ID: <87bokss0jo.fsf@Compaq.site> References: <87r4to6ddr.fsf@Compaq.site> <878vfw66a3.fsf@Compaq.site> NNTP-Posting-Host: lYLrXPFpjyZ8237ODaoN+w.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) X-Notice: Filtered by postfilter v. 0.8.2 Cancel-Lock: sha1:WFIaA5p8GEhw8iPM8wHj5LRN8x0= X-Homepage: http://www.decebal.nl/ Xref: csiph.com comp.lang.postscript:717 Thanks for the input. Op zaterdag 9 jun 2012 19:14 CEST schreef luser: >>> I also started making a library. But I am working with epstopdf to >>> make a pdf and then convert to create a png. Ideally I would not have >>> to have the library in the program itself, but could use an include. >>> But that is not possible with epstopdf. I tried to use the command >>> that epstopdf generates without the -dSAFER, but to no avail. Anyone >>> an idea how to solve this? > > > There's some useful stuff on this page: > http://stackoverflow.com/questions/9820646/overlay-two-postscript-files-command-line-approach/9833901#9833901 The problem is that epstopdf makes the run illegal. Maybe I should use bash to do the include myself. >>     %% Library functions >>     /grayBackground { % gray >>       newpath >>       gsave >>       setgray >>       newpath >>       pageLeft pageBottom pageRight pageTop rectangle >>       fill >>       stroke > > 'fill' just ate the path! 'stroke' has nothing to do. > You can do 'gsave fill grestore stroke' if you really > want to. Since you're not changing colors, it'll just > make the box a little bigger. But it would give you > the linejoin effect at the corners. I did not know what I was doing. Changed. Now I need to do it in all the others also. :-{ >>     % Library init >>     /authorFont     10 def >>     /backgroundGray .6 def >>     /usedFont       /Bookman findfont def > > Your font handling is a little hard to follow. In the first program I used several different font sizes. In this way I need only to make a change at one place. But I will look into your suggestions. Also what are good fonts to use? And in which situation? > It mostly looks good. Thank you. ;-} > But I'd recommend more indentation levels. > Treat 'gsave' like '{' and 'grestore' like '}'. Sometimes I'll In some places I did this, but I will do it more consequent. > indent all 'lineto' and 'moveto's and come back out for the > 'stroke', since they are all "functionally subordinate". That could be a good idea also. I also changed string to msg. I used the program to write a logo program. It is given below. I only have one problem. I now have a compleet rosetta. The letters in de lower part have te be placed differently. I have a function textheight, which does what it should in other places, but here it does not. Because of the I now use textwidth. It is better as nothing, but for example the m is not placed very good. What is going wrong here? The program: %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 600 600 /pageBottom 0 def /pageLeft 0 def /pageRight 600 def /pageTop 600 def %% Library functions /colorBlack { 0 0 0 } /colorBlue { 0 0 1 } def /colorGreen { 0 .5 0 } def /colorIndigo { .3125 0 .5 } def /colorOrange { 1 .5625 0 } def /colorRed { 1 0 0 } def /colorViolet { .9375 .5 .9375 } def /colorWhite { 1 1 1 } /colorYellow { 1 1 0 } def /grayBackground { % gray newpath gsave setgray newpath pageLeft pageBottom pageRight pageTop rectangle fill .4 setgray usedFont authorFont scalefont setfont ((c) Cecil Westerhof - Decebal Computing) 550 5 rightString grestore } def /rectangle { % left bottom right top 4 dict begin /top exch def /right exch def /bottom exch def /left exch def left bottom moveto right bottom lineto right top lineto left top lineto left bottom lineto closepath end } def /rightString { % msg x y 3 dict begin /y exch def /x exch def /msg exch def x y moveto msg stringwidth pop neg 0 rmoveto msg show end } def /textheight { gsave { newpath 100 100 moveto (HÍpg) true charpath pathbbox % gets text path bounding box (LLx LLy URx URy) exch pop 3 -1 roll pop % keeps LLy and URy exch sub % URy - LLy } stopped % did the last block fail? { pop pop % get rid of "stopped" junk currentfont /FontMatrix get 3 get % gets alternative text height } if grestore } def %% Normal functions /createWedgeValues { /steps msg length def /turn 360 steps 2 mul div neg def /halfTurn turn 2 div def } def /wedge { % msg downward gsave newpath 0 0 moveto 1 0 translate halfTurn rotate 0 halfTurn sin translate gsave 0 0 halfTurn sin 90 -90 arc closepath gsave fill grestore 0 setgray stroke grestore 0 setgray dup { 90 rotate } { -90 rotate } ifelse exch dup stringwidth pop 2 div neg 3 -1 roll { dup moveto } { 0 moveto } ifelse show grestore } def % Library init /authorFont 10 def /backgroundGray .6 def /usedFont /Bookman findfont def % Program init %backgroundGray grayBackground gsave 300 300 translate 0 0 moveto 245 245 scale usedFont .25 scalefont setfont 0.02 setlinewidth 180 rotate colorBlue setrgbcolor /msg (Decebal) def createWedgeValues 0 1 steps 1 sub { msg exch 1 getinterval false wedge turn rotate } for colorGreen setrgbcolor /msg (Computing) def createWedgeValues 180 turn sub rotate 0 1 steps 1 sub { msg exch 1 getinterval true wedge turn neg rotate } for grestore showpage -- Cecil Westerhof Senior Software Engineer LinkedIn: http://www.linkedin.com/in/cecilwesterhof