[Date Prev][Date Next][Thread Prev][Thread Next]
[Author Index]
[Date Index]
[Thread Index]
[SQR-USERS Info]
[SQRUG Home Page]
Re: Proportion fonts and page counting
Dan,
I don't have access to the SQR internals, of course, but my
understanding is that SQR generates all the output to an
SPF file. If last-page is used, a second pass is made over
the SPF file to resolve the last-page references.
Ray
[Charset iso-8859-1 unsupported, filtering to ASCII...]
> Is it true that when you use the last-page command your program essentially
> runs twice. I was told that this is because SQR uses the first run to
> calculate the number of pages necessary and then uses the second to actually
> produce the reports. Can anyone confirm this?
>
> Dan.
>
> Ray said
>
> Paul,
>
> Here's a slight improvement overy my previous program.
> In addition to all the other monkey business, this one
> also shifts the "Page x of" to the _right_ a little
> by left padding it with a space if the page number is
> greater than 9. This adjusts the space between the
> "of" and the number of pages to adjust for the narrow
> width of the additional digits in the proportional font.
>
>
> #define DEFAULT_FONT 3
>
> begin-program
> do main
> end-program
>
> begin-footing 3
> alter-printer font=5
> let $s = 'Page ' || edit(#page-count,'888') || ' of'
> if #page-count > 9
> let $s = ' ' || $s
> end-if
> print $s (2,30)
> if #page-count > 99
> last-page (,39) '' ''
> else
> if #page-count > 9
> last-page (,38) '' ''
> else
> last-page (,37) '' ''
> end-if
> end-if
> alter-printer font={DEFAULT_FONT}
> end-footing
>
> begin-procedure main
> move 872 to #last-page
> alter-printer font={DEFAULT_FONT}
> print 'Hey' (10,10)
> new-page
> move 63 to #page-count
> print 'Howdy' (10,10)
> new-page
> move 321 to #page-count
> print 'Hey' (10,10)
> end-procedure
>
> Ray
> > Paul,
> >
> > This is a bit of a hack, but it's the only way I can think of
> > solving the problem of incorrect spacing when using proportional
> > fonts with the sequence:
> >
> > page-number (2,30) 'Page '
> > last-page () ' of ' '.'
> >
> > The problem is that there is extra space before the numbers,
> > and if the font is a narrow font, there may be extra space
> > after the numbers as well. The result is that things look
> > a little like this
> >
> > Page 246 of 398 .
> >
> > instead of this
> >
> > Page 246 of 398.
> >
> > My solution is to format as much as I can using a single
> > string. For this I use
> >
> > let $s = 'Page ' || edit(#page-count,'888') || ' of'
> >
> > to get "Page 246 of" as a string, which I print at
> > the desired location. Then, I use LAST-PAGE to print
> > the rest of the string, but I shift it to the right an
> > amount that depends on length of the current page number.
> > Finally, I simply omit the trailing period since I can't
> > quite control it's placement (without going to a very
> > small grid size).
> >
> > Here's a simple program which demonstrates the solution:
> >
> > #define DEFAULT_FONT 3
> >
> > begin-program
> > do main
> > end-program
> >
> > begin-footing 3
> > alter-printer font=5
> > let $s = 'Page ' || edit(#page-count,'888') || ' of'
> > print $s (2,30)
> > if #page-count > 99
> > last-page (,39) '' ''
> > else
> > if #page-count > 9
> > last-page (,38) '' ''
> > else
> > last-page (,37) '' ''
> > end-if
> > end-if
> > alter-printer font={DEFAULT_FONT}
> > end-footing
> >
> > begin-procedure main
> > alter-printer font={DEFAULT_FONT}
> > print 'Hey' (10,10)
> > new-page
> > move 63 to #page-count
> > print 'Howdy' (10,10)
> > new-page
> > move 321 to #page-count
> > print 'Hey' (10,10)
> > end-procedure
> >
> > Hope this helps.
> >
> > Ray
> >
> > > I am trying to produce the text "Page x of y." as part of a
> footing.
> > > However, as this forms part of a customer invoice, I also wish
> to use a
> > > proportional font "to make it look pretty".
> > >
> > > I'm aware that the normal advice when using proportional fonts
> is to build
> > > the full string before printing, but this does not seem possible
> if using
> > > the internal last-page() function to determine 'y' above ('x' is
> OK as I can
> > > use #page-count instead of the page-number() function).
> > >
> > > It would seem to me that the only solution is to avoid using
> last-page() and
> > > do the work myself by printing a placeholder which I replace in
> a
> > > post-processing phase.
> > >
> > > As you can imagine, I would rather do not do this, so if I'm
> missing a trick
> > > somewhere, please let me know.
> > >
> > > TIA.
> > >
> > > Paul.
> > >
> >
> >
> ----------------------------------------------------------------------
> > Ray Ontko rayo@ontko.com Phone 1.765.935.4283 Fax
> 1.765.962.9788
> > Ray Ontko & Co. Software Consulting Services
> http://www.ontko.com/
> >
>
>
> ----------------------------------------------------------------------
> Ray Ontko rayo@ontko.com Phone 1.765.935.4283 Fax
> 1.765.962.9788
> Ray Ontko & Co. Software Consulting Services
> http://www.ontko.com/
>
----------------------------------------------------------------------
Ray Ontko rayo@ontko.com Phone 1.765.935.4283 Fax 1.765.962.9788
Ray Ontko & Co. Software Consulting Services http://www.ontko.com/