Provided by: netpbm_11.05.02-1.1build1_amd64 bug

NAME

       pbmtext - render text into a PBM image

SYNOPSIS

       pbmtext  [-wchar]  [-font  fontfile]  [-builtin  fontname]  [-space pixels] [-lspace pixels] [-nomargins]
       [-width pixels] [-load-entire-font] [-verbose] [-dry-run] [-text-dump] [text]

       Minimum unique abbreviation of option is acceptable.  You may use double hyphens instead of single hyphen
       to denote options.  You may use white space in place of the equals sign to separate an option  name  from
       its value.

DESCRIPTION

       This program is part of Netpbm(1).

       pbmtext  takes  the  specified  text,  either  a single line from the command line or multiple lines from
       standard input, and renders it into a PBM graphical image.

       The text rendered is all the non-option command line arguments, separated by spaces, except that if there
       are no non-option command line arguments, it is Standard Input.

       In the image, each line of input is a line of output.  Lines are
         delimited by newline characters.

       The program renders any character in an input line that is not in the font
         as a space.  Note that control characters usually aren't in the font, but
         some fonts have glyphs for them.  The newline characters that delimit lines
         in of Standard Input are not in any line.

       Tab characters are rendered as a number of spaces; any entry in the font
         for the tab code point is irrelevant.  The number of spaces is such as to
         create tab stops every 8 characters.  Note that this is not useful if the
         font is proportional.

       The image 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.  You can use the -nomargins option to eliminate the margins.

       pbmtext renders left to right.  It cannot render vertically or right to left.

       pbmtextps does the same thing as pbmtext, but uses Ghostscript to generate the  characters,  which  means
       you  can  use Postscript fonts.  But it also means you have to have Ghostscript installed and it isn't as
       fast.  Also, pbmtextps generates only one line of text, whereas pbmtext can create multiple lines.

       pbmtext is meant for simple text.  If you're working with a document, you would be  better  off  using  a
       document formatting program to "print" to a Postscript file, then feeding that Postscript to pstopnm.

OPTIONS

       In  addition  to  the options common to all programs based on libnetpbm (most notably -quiet, see  Common
       Options ), pbmtext recognizes the following command line options:

       -wchar

              By default, pbmtext takes a single-byte character stream as input.  When you  specify  -wchar,  it
              treats  input  text  as  a  multibyte  character  stream  encoded according to the current locale.
              Normally, the user would supply a BDF font file encoded in ISO-10646-1 with a -font option.

              With -wchar, you cannot supply the text on the command line; it must be fed from standard input.

              This option was new in Netpbm 10.82 (March 2018).

       -font

       -builtin
              -builtin selects a font among those built into Netpbm.

              -font selects a font  that  you  supply  yourself  either  as  an  X  Window  System  BDF  (Bitmap
              Distribution Format) file or as a PBM file in a special form.

              The default is the built in font "bdf."

              "bdf" is Times-Roman 15 pixels high.  (That's about 14 point type printed at 75 dpi).

              "fixed" is a built in fixed width font.

              For information about other fonts, and how to make one of your own, see Fonts  below.

       -space pixels
               Add pixels pixels 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.

              pixels  may  be  fractional,  in which case the number of pixels added varies so as to achieve the
              specified average.  For example -space=1.5 causes half the spaces to be 1 pixel and half to  be  2
              pixels.

              pixels  may 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.

       -lspace pixels
               Add pixels pixels 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.

              pixels must be a whole number.

              pixels may 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.

       -nomargins
              By  default,  pbmtext  adds  margins  all around the image as described above.  This option causes
              pbmtext not to add any margins.

              Note that there may still be space beyond the edges of the type because  a  character  itself  may
              include space at its edges.  To eliminate all surrounding background, so the type touches all four
              edges of the image, use pnmcrop.

       -width pixels
              This specifies how much horizontal space the text is supposed to fit into.

              If  the  input  is  one line, pbmtext breaks it into multiple lines as needed to fit the specified
              width.  It breaks it between characters, but does not pay attention to white space; it  may  break
              in the middle of a word and a line may begin or end with white space.

              If  the  input  is  multiple  lines,  pbmtext assumes you already have line breaks where they make
              sense, and pbmtext simply truncates each line as needed to fit the specified width.

       -load-entire-font

              When you use a BDF font, pbmtext will normally load from the font
                  only the characters needed for your text, not wasting time loading other
                  characters.  With this option, pbmtext will instead read the entire
                  font.  It won't make any difference in the rendered output, but it lets
                  you check the integrity of the font file.

              This option was new in Netpbm 10.91 (June 2020).  Before that, pbmtext  always  reads  the  entire
              font.

       -verbose
              This makes pbmtext issue informtional messages about its processing.

       -dry-run

              With  this  option,  instead  of  outputting an image of the text, pbmtext just writes to Standard
              Output a message telling the dimensions of the image it would have produced.

              You can specify only one of -dry-run and -text-dump.

              This option was new in Netpbm 10.75 (June 2016).

       -text-dump
              This option causes pbmtext just to write to Standard Output  the  text  in  ASCII  that  would  be
              rendered.   The  output  reflects  any  text  formatting,  unprintable character substitution, tab
              expansion, etc.  It is for diagnosing problems.  This option was new in Netpbm 10.82 (March 2018).

              When -wchar is in effect, the output text will be in the encoding specified by the current locale.

              You can specify only one of -dry-run and -text-dump.

              This option was new in Netpbm 10.82 (March 2018).

USAGE

       Often, you want to place text over another image.  One way  to  do  this  is  with  ppmlabel.   For  more
       flexible  (but  complex)  drawing  of text on an image, there is ppmdraw.  These do 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  pamcomp  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 pamcomp 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 pamcomp.

       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 transparency mask.

       If  you  want  the  text  at  an  angle,  use  pnmrotate on the text image (and transparency mask) before
       overlaying.

FONTS

       There are three kinds of fonts you an use with pbmtext:

       •      built in

       •      BDF

       •      PBM

   Built In Fonts
       There are two built in fonts: bdf and fixed.  You select these fonts with a -builtin option.

       bdf is the default when you specify no font information on the command line.   The  naming  reflects  the
       fact that it shares many characteristics of BDF style fonts.  When this font was implemented, pbmtext did
       not  have  the  ability  to read arbitrary BDF fonts specified by the -font option.  There is no external
       font file involved.

       bdf is encoded in ISO 8859-1 (Latin 1, 8-bit).  In addition to English it can handle most  West  European
       languages (Spanish, French, German, Swedish ...)  This set lacks the Euro currency sign.

       fixed is ASCII (7-bit) only.

       While it is not an error to do so, you should not use the above built-in fonts with -wchar.

   BDF Font
       BDF  is an ancient font format that at one time was standard for the X Window System.  Now, you don't see
       it very often, but you can find some BDF fonts on the Xfree86  web site.

       You can get the full package of the BDF fonts from XFree86 (see above) from the Netpbm web site .

   PBM Font
       To create a font as a PBM file (to use with the -font option), you just create a PBM image  of  the  text
       matrix below.

       The first step is to display text matrix below on the screen, e.g. in an X11 window.

           M ",/^_[`jpqy| M

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

           M ",/^_[`jpqy| M

       Make sure it's a fixed width font -- This should display as a perfect rectangle.

       Also,  try  to  use  a simple display program.  Pbmtext divides this into a matrix of cells, all the same
       size, each containing one character, so it is important that whatever you use to display it display  with
       uniform  horizontal and vertical spacing.  Fancy word processing programs sometimes stretch characters in
       both directions to fit certain dimensions, and that won't work.  Sometimes a  display  program  scales  a
       font  to show a character larger or smaller than its natural size.  That too won't often work because the
       rounding involved in such scaling causes non-uniform distances between characters.

       If you display the text matrix improperly, the usual symptom is that  when  you  try  to  use  the  font,
       pbmtext  fails  with an error message telling you that the number of lines in the font isn't divisible by
       11, or it can't find the blank band around the inner rectangle.  Sometimes the symptom is that one of the
       characters displays with a piece of the character that is next to it in the  matrix.   For  example,  "l"
       might display with a little piece of the "m" attached on its right.

       Do  a  screen  grab or window dump of that text, using for instance xwd, xgrabsc, or screendump.  Convert
       the result into a pbm file.  If necessary, use pamcut to remove anything you grabbed in addition  to  the
       text  pictured  above  (or  be  a wimp and use a graphical editor such as Gimp).  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.

       There  are some historical computer fonts, such as that used by the original IBM PC, in the form that you
       can screen-grab and turn into a PBM font file available from Stewart C Russell"  (1).   There  are  fonts
       with various duodecimal digit glyphs at  treisara.deviantart.com .

       PBM fonts cannot be used with -wchar.

MULTI-BYTE INPUT

       In the past, English text was encoded in 7-bit ASCII.  8-bit and multibyte encodings were needed only for
       non-English languages.  This is not the case today.  As of this writing, 90% of all web pages are encoded
       in UTF-8.  While many of them are actually restricted to 7-bit ASCII, which is a subset of UTF-8, English
       text encoded in UTF-8 commonly employs "66 99" style quotation marks, which do not appear in ASCII.

       If  your  input text is UTF-8, you should use -wchar.  You may have to tweak the locale setting.  pbmtext
       recognizes code points up to 65535.  This is sufficient for the vast majority of text written  in  modern
       languages.

       In  the  default  single-byte  (or "narrow") character mode, pbmtext can handle 7-bit and 8-bit character
       sets.  Examples are ASCII, ISO 8859 family, koi8-r/u and VISCII.  It is up to the user to  supply  a  BDF
       file covering the necessary glyphs with the "-font" option.  The font file must be in the right encoding.

       pbmtext does not inspect the encoding of the font file.

LIMITATIONS

       If  the  text is from Standard Input, no line may be longer than 4999 characters.  If one is, the program
       aborts with an appropriate error message.

       If the text is from Standard Input and contains a null character, the results are abnormal.  Lines may be
       truncated, and a single line may be considered  multiple  lines.   Normal  text  does  not  contain  null
       characters, so this isn't a big problem.

TIPS

       If you get garbled output, check the input text encoding and font file encoding.  When using -wchar, also
       check the current locale.

       To convert the encoding of a text file, use iconv or luit.

       To check the encoding of a BDF file, examine the CHARSET_REGISTRY line and the next line, which should be
       CHARSET_ENCODING:

           $ grep -A1 CHARSET_REGISTRY font-a.bdf
           CHARSET_REGISTRY "ISO8859"
           CHARSET_ENCODING "1"

           $ grep -A1 CHARSET_REGISTRY font-b.bdf
           CHARSET_REGISTRY "ISO10646"
           CHARSET_ENCODING "1"

       The  latter  is  Unicode.   BDF  files  coded in ISO 16046-1 usually work for Western European languages,
       because ISO 16046-1 expands ISO 8859-1 (also called "Latin-1")  while  maintaining  the  first  256  code
       points.   ISO  8859-1  itself  is  a  superset  of ASCII.  Run the above command and verify the necessary
       glyphs are present.

       IMPORTANT: For input text, a different rule applies.  If you feed ISO 8859-1 text to pbmtext  -wchar  set
       up  for  UTF-8, the output will be garbled.  Unicode provides several encoding schemes and different ones
       are in effect for input text and  font.   The  difference  between  Unicode  codepoint  and  the  various
       encodings is a formidable stumbling block; beware of web pages that get the concept wrong.

       75%  of the BDF files in the font collection available from the Netpbm website  are in ISO 10646-1.  Many
       have the Euro sign, Greek letters, etc., but they are placed at code points  available  to  pbmtext  only
       with -wchar.

       Before  pbmtext  had  the  -wchar option, one often had to produce a BDF file in an 8-bit encoding from a
       master BDF file encoded in ISO 10646-1.

       There are several programs that perform BDF encoding  conversion.   If  you  have  the  X  Window  System
       installed,  first  look  for  ucs2any.   If you don't, you can download ucs2any.pl from Unicode fonts and
       tools for X11" (1).  This website has much useful information on fonts.

       Another  converter  is  trbdf,  included  in  the  "trscripts"  package,  available  in  some   GNU/Linux
       distributions.

       BDF  files encoded in ISO 8859-2, ISO 8859-7, koi8-r, etc. are available from ISO 8859 Alphabet Soup" (1)
       and its sister page The Cyrillic Charset Soup" (1).  Though the information is dated, these pages give  a
       good overview of 8-bit character sets.

       To convert OTF or TTF font files to BDF, use  otf2bdf by Mike Leisher .

SEE ALSO

       pbmtextps(1),  pamcut(1),  pnmcrop(1),  pamcomp(1),  ppmchange(1), pnmrotate(1), ppmlabel(1), ppmdraw(1),
       pstopnm(1), pbm(1), Pango , Cairo

AUTHOR

       Copyright (C) 1993 by Jef Poskanzer and George Phillips

DOCUMENT SOURCE

       This manual page was generated by the Netpbm tool 'makeman' from HTML source.  The  master  documentation
       is at

              http://netpbm.sourceforge.net/doc/pbmtext.html

netpbm documentation                               29 May 2020                            Pbmtext User Manual(1)