Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 1056225
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 16, 20262026-05-16T17:41:09+00:00 2026-05-16T17:41:09+00:00

I need to determine the height of a string (in given scale and font)

  • 0

I need to determine the height of a string (in given scale and font) in postscript.

/Helvetic-Oblique findfont
10 scalefont
setfont
10 10 1 0 360 arc fill
10 10 moveto (test) dup stringwidth pop 2 div neg 0 rmoveto show

will print test centered horizontally (but not yet vertically) at (10,10). (to see this, I also show a small circle at 10,10). I also need to determine the string height to center the text vertically as well, but I cant find a function for it.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-16T17:41:09+00:00Added an answer on May 16, 2026 at 5:41 pm

    Are you familiar with the PostScript code you’re using? Or is it just blindly copied and pasted from someplace? If you want to understand it, you should google for “PostScript Language Reference” or “Red Book” or “PLRM”. These resources are available as PDFs from Adobe.

    Your PostScript snippet uses the following steps:

    1. (test) places the string “test” on the top of the stack.
    2. dup duplicates the topmost item on the stack. (You’ll now have the string twice on the stack.)
    3. stringwidth. After this operator is executed, the topmost “test” string will have been consumed, and two values will have been added to the stack instead: the string’s height (topmost) and the string’s width (second from top). [Update: Actually, “string’s height” isn’t entirely correct — it’s rather the vertical offset of the current point after finishing to draw the string…]
    4. Next, you use pop. This simply deletes the topmost value on the stack. Now only string’s width remains on the top of the stack.
    5. 2 div divides that value by 2 and leaves the result (half the stringwidth).
    6. neg negates the topmost value on the stack. Now that negative value is topmost on the stack.
    7. 0 places the value “0” on top of the stack.
    8. rmoveto then consumes the two topmost values on the stack and moves the current point by that distance (half the string’s width) to the left.
    9. show consumes the first “test” string that remained all the time at the bottom of the stack and “shows” it.

    So what would work to take into account the string’s height? Try as your last line:

    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"
    

    To understand my changes look up the meaning of charpath, div, exch, pathbbox, roll and sub operators in The Red Book.

    This command uses Ghostscript to create a PDF file on Windows from the code (easier to view and check results):

     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"
    

    On Linux use:

     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"
    

    Better readable forms are:

      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"
    

    and

      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"
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I need to measure or somehow determine the maximum height for a given font.
I need to determine if a given selection is in between a start line
I need to determine the width and height of the current mouse cursor used
i need to get a string in jQuery to determine an integer value, then
My winform application is launched by another application (the parent), I need determine the
I need to determine in 80% if a file is binary or text, is
I need to determine file type (i.e., MimeType) of stored data in the SQL
I need to determine whether or not two sets contains exactly the same elements.
I need to determine the clients .NET framework version in my web application. I'm
I need to determine whether a selected UIColor (picked by the user) is dark

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.