1. NAME

pbmtext - render text into a bitmap

2. SYNOPSIS

pbmtext [ -font fontfile ] [ -builtin fontname ] [ -space pixels ] [ -lspace pixels ] [ text ]

3. DESCRIPTION

Takes the specified text, either a single line from the command line or multiple lines from standard input, and renders it into a bitmap. In the bitmap, each line of input is a line of output. Formatting characters such as newline have no effect on the formatting; like any unprintable character, they turn into spaces. The bitmap is just wide enough for the longest line of text, plus margins, and just high enough to contain the lines of text, plus margins. The left and right margins are twice the width of the widest character in the font; the top and bottom margins are the height of the tallest character in the font. But if the text is only one line, all the margins are half of this.

4. OPTIONS

R -font , -builtin

    By default, pbmtext uses a built-in font called bdf (about a 10 point Times-Roman font). You can use a fixed width font by specifying

R You can also specify your own font with the

-font flag. The fontfileis either a BDF file from the X window system or a PBM file. If the fontfileis a PBM file, it is created in a very specific way. In your window system of choice, display the following text in the desired (fixed-width) font:

 
Sélectionnez
    M ",/^_[`jpqy| M
    /  !"#$%&'()*+ /
    < ,-./01234567 <
    > 89:;<=>?@ABC >
    @ DEFGHIJKLMNO @
    _ PQRSTUVWXYZ[ _
    { \\]^_`abcdefg {
    } hijklmnopqrs }
    ~ tuvwxyz{|}~  ~
    M ",/^_[`jpqy| M

Do a screen grab or window dump of that text, using for instance

R xwd ,

R xgrabsc , or

R screendump . Convert the result into a pbm file. If necessary, use

pnmcut to remove everything except the text. Finally, run it through

pnmcrop to make sure the edges are right up against the text.

pbmtext can figure out the sizes and spacings from that.

-space \fIpixels
    Add pixelspixels of space between characters. This is in addition to whatever space surrounding characters is built into the font, which is usually enough to produce a reasonable string of text. pixelsmay be negative to crowd text together, but the author has not put much thought or testing into how this works in every possible case, so it might cause disastrous results.

  • -B -lspace \fIpixels
        Add pixelspixels of space between lines. This is in addition to whatever space above and below characters is built into the font, which is usually enough to produce a reasonable line spacing. pixelsmust be a whole number. pixelsmay be negative to crowd lines together, but the author has not put much thought or testing into how this works in every possible case, so it might cause disastrous results.

5. USAGE

Often, you want to place text over another image. One way to do this is with

R ppmlabel .

ppmlabel does not give you the font options that

pbmtext does, though. Another way is to use

pbmtext to create an image containing the text, then use

pnmcomp to overlay the text image onto your base image. To make only the text (and not the entire rectangle containing it) cover the base image, you will need to give

pnmcomp a mask, via its

-alpha option. You can just use the text image itself as the mask, as long as you also specify the

-invert option to

R pnmcomp . If you want to overlay colored text instead of black, just use

ppmchange to change all black pixels to the color of your choice before overlaying the text image. But still use the original black and white image for the alpha mask. If you want the text at an angle, use

pnmrotate on the text image (and alpha mask) before overlaying.

6. SEE ALSO

R pnmcut (1),

R pnmcrop (1),

R pnmcomp (1),

R ppmchange (1),

R pnmrotate (1),

R pbmtextps (1),

R ppmlabel (1),

R pbm (5)

7. AUTHOR

Copyright (C) 1993 by Jef Poskanzer and George Phillips