summary refs log tree commit diff
diff options
context:
space:
mode:
authorgiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2020-08-08 18:18:08 +0000
committergiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2020-08-08 18:18:08 +0000
commit31ea43d06c92da53cedcfc2031d190abebe80ccd (patch)
tree38cd707f7b4eb88763349156e7d3aa95e1aa0e43
parentad48d09aa16cf2c106ba4d0e232c703a75ab5c49 (diff)
downloadnetpbm-mirror-31ea43d06c92da53cedcfc2031d190abebe80ccd.tar.gz
netpbm-mirror-31ea43d06c92da53cedcfc2031d190abebe80ccd.tar.xz
netpbm-mirror-31ea43d06c92da53cedcfc2031d190abebe80ccd.zip
miscellaneous update
git-svn-id: http://svn.code.sf.net/p/netpbm/code/userguide@3906 9d0c8265-081b-0410-96cb-a4ca84ce46f8
-rw-r--r--bmptoppm.html26
-rw-r--r--directory.html1462
-rw-r--r--faxformat.html14
-rw-r--r--gemtopbm.html26
-rw-r--r--index.html416
-rw-r--r--jpeg2ktopam.html2
-rw-r--r--liberror.html36
-rw-r--r--libmaketmpfile.html4
-rw-r--r--libmaketmpfilefd.html4
-rw-r--r--libnetpbm.html24
-rw-r--r--libnetpbm_dir.html10
-rw-r--r--libnetpbm_draw.html34
-rw-r--r--libnetpbm_font.html38
-rw-r--r--libnetpbm_ug.html116
-rw-r--r--libpbm.html424
-rw-r--r--libpgm.html414
-rw-r--r--libpm.html502
-rw-r--r--libpnm.html534
-rw-r--r--libppm.html664
-rw-r--r--libsystem.html6
-rw-r--r--libtmpfile.html6
-rw-r--r--libtmpfilefd.html4
-rw-r--r--pamfixtrunc.html27
-rw-r--r--pamperspective.html2
-rw-r--r--pamrgbatopng.html1
-rw-r--r--pamrubber.html1
-rw-r--r--pamslice.html2
-rw-r--r--pamtopng.html2
-rw-r--r--pamtowinicon.html2
-rw-r--r--pamwipeout.html1
-rw-r--r--pbm.html114
-rw-r--r--pbmclean.html2
-rw-r--r--pbmtog3.html1
-rw-r--r--pbmtoibm23xx.html1
-rw-r--r--pbmtoicon.html1
-rw-r--r--pbmtox10bm.html28
-rw-r--r--pcdindex.html21
-rw-r--r--pfm.html22
-rw-r--r--pgm.html130
-rw-r--r--pgmcrater.html59
-rw-r--r--pgmedge.html27
-rw-r--r--pgmnorm.html25
-rw-r--r--pgmoil.html25
-rw-r--r--pgmramp.html1
-rw-r--r--pgmslice.html22
-rw-r--r--pgmtopbm.html28
-rw-r--r--pnm.html74
-rw-r--r--pnmarith.html25
-rw-r--r--pnmcut.html20
-rw-r--r--pnmdepth.html25
-rw-r--r--pnmenlarge.html22
-rw-r--r--pnmfile.html26
-rw-r--r--pnmflip.html29
-rw-r--r--pnminterp.html26
-rw-r--r--pnmmercator.html1
-rw-r--r--pnmnoraw.html28
-rw-r--r--pnmscale.html3
-rw-r--r--pnmsplit.html25
-rw-r--r--pnmtofits.html16
-rw-r--r--pnmtoplainpnm.html26
-rw-r--r--pnmtopng.html2
-rw-r--r--pnmtotiff.html15
-rw-r--r--pnmtoxwd.html1
-rw-r--r--ppm.html130
-rw-r--r--ppmnorm.html26
-rw-r--r--ppmquant.html85
-rw-r--r--ppmquantall.html4
-rw-r--r--ppmtogif.html31
-rw-r--r--ppmtojpeg.html26
-rw-r--r--ppmtomap.html4
-rw-r--r--ppmtotga.html24
-rw-r--r--ppmtouil.html20
-rw-r--r--pstopnm.html2
73 files changed, 3051 insertions, 2976 deletions
diff --git a/bmptoppm.html b/bmptoppm.html
index 8fbd6387..843948b3 100644
--- a/bmptoppm.html
+++ b/bmptoppm.html
@@ -1,20 +1,22 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD>
-<TITLE>Bmptoppm User Manual</TITLE>
-</HEAD><BODY>
-<H1>bmptoppm</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Bmptoppm User Manual</title></head>
+<body>
+<h1>bmptoppm</h1>
 Updated: March 2002
-<BR>
-<H2>NAME</H2>
-<B>bmptoppm</B> - replaced by bmptopnm
-<H2>DESCRIPTION</H2>
+
+<h2>NAME</h2>
+
+bmptoppm - replaced by bmptopnm
+
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
+
 <p><b>bmptoppm</b> was replaced in Netpbm 9.25 (March 2002) by
 <b><a href="bmptopnm.html">bmptopnm</a></b>.
 
-<P><B>bmptopnm</b> is backward compatible with <b>bmptoppm</b> except that
+<p><b>bmptopnm</b> is backward compatible with <b>bmptoppm</b> except that
 it generates PBM and PGM output when it is more appropriate than PPM.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/directory.html b/directory.html
index b915e3d6..c7b5221c 100644
--- a/directory.html
+++ b/directory.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
 
 <html><head><title>Directory of Netpbm programs</title></head>
 
 <body>
 
 <h1>Netpbm Program Directory</h1>
-<BR>
+<br>
 <?makeman .SH NAME ?>
 <?makeman netpbm_directory \- netpbm library directory ?>
 
@@ -20,1122 +20,1122 @@
 </ul>
 
 
-<H2 id="converters">Converters</H2>
+<h2 id="converters">Converters</h2>
 
-<DL COMPACT>
+<dl compact>
 
-<DT><B><a href="pnmtopnm.html">pnmtopnm</a></B>
-<DD>convert PNM image to PNM raw or plain
+<dt><b><a href="pnmtopnm.html">pnmtopnm</a></b>
+<dd>convert PNM image to PNM raw or plain
 
-<DT><B><a href="pgmtopgm.html">pgmtopgm</a></B>
-<DD>convert PGM or PBM image to PGM
+<dt><b><a href="pgmtopgm.html">pgmtopgm</a></b>
+<dd>convert PGM or PBM image to PGM
 
-<DT><B><a href="ppmtoppm.html">ppmtoppm</a></B>
-<DD>convert PPM, PGM, or PBM image to PPM
+<dt><b><a href="ppmtoppm.html">ppmtoppm</a></b>
+<dd>convert PPM, PGM, or PBM image to PPM
 
-<DT><B><a href="pamtopam.html">pamtopam</a></B>
-<DD>convert PAM image to PAM
+<dt><b><a href="pamtopam.html">pamtopam</a></b>
+<dd>convert PAM image to PAM
 
-<DT><B><a href="pbmtopgm.html">pbmtopgm</a></B>
-<DD>convert PBM image to PGM by averaging areas
+<dt><b><a href="pbmtopgm.html">pbmtopgm</a></b>
+<dd>convert PBM image to PGM by averaging areas
 
-<DT><B><a href="pgmtoppm.html">pgmtoppm</a></B>
-<DD>colorize a PGM into a PPM
+<dt><b><a href="pgmtoppm.html">pgmtoppm</a></b>
+<dd>colorize a PGM into a PPM
 
-<DT><B><a href="ppmtopgm.html">ppmtopgm</a></B>
-<DD>convert PPM image to PGM
+<dt><b><a href="ppmtopgm.html">ppmtopgm</a></b>
+<dd>convert PPM image to PGM
 
-<DT><B><a href="pamtopnm.html">pamtopnm</a></B>
-<DD>convert a PAM image to PBM, PGM, or PPM
+<dt><b><a href="pamtopnm.html">pamtopnm</a></b>
+<dd>convert a PAM image to PBM, PGM, or PPM
 
-<DT><B><a href="pamtogif.html">pamtogif</a></B>
-<DD>convert PAM or PNM to GIF
+<dt><b><a href="pamtogif.html">pamtogif</a></b>
+<dd>convert PAM or PNM to GIF
 
-<DT><B><a href="giftopnm.html">giftopnm</a></B>
-<DD>convert GIF to PNM
+<dt><b><a href="giftopnm.html">giftopnm</a></b>
+<dd>convert GIF to PNM
 
-<DT><B><a href="pnmtojpeg.html">pnmtojpeg</a></B>
-<DD>convert PNM to JPEG/JFIF/EXIF format
+<dt><b><a href="pnmtojpeg.html">pnmtojpeg</a></b>
+<dd>convert PNM to JPEG/JFIF/EXIF format
 
-<DT><B><a href="jpegtopnm.html">jpegtopnm</a></B>
-<DD>convert JFIF/JPEG/EXIF file to Netpbm format
+<dt><b><a href="jpegtopnm.html">jpegtopnm</a></b>
+<dd>convert JFIF/JPEG/EXIF file to Netpbm format
 
-<DT><B><a href="pamtojpeg2k.html">pamtojpeg2k</a></B>
-<DD>convert PNM/PAM to JPEG-2000 code stream
+<dt><b><a href="pamtojpeg2k.html">pamtojpeg2k</a></b>
+<dd>convert PNM/PAM to JPEG-2000 code stream
 
-<DT><B><a href="jpeg2ktopam.html">jpeg2ktopam</a></B>
-<DD>convert JPEG-2000 code stream to PAM/PNM
+<dt><b><a href="jpeg2ktopam.html">jpeg2ktopam</a></b>
+<dd>convert JPEG-2000 code stream to PAM/PNM
 
-<DT><B><a href="pamtopng.html">pamtopng</a></B>
-<DD>convert Netpbm format to Portable Network Graphics
+<dt><b><a href="pamtopng.html">pamtopng</a></b>
+<dd>convert Netpbm format to Portable Network Graphics
 
-<DT><B><a href="pnmtopng.html">pnmtopng</a></B>
-<DD>
+<dt><b><a href="pnmtopng.html">pnmtopng</a></b>
+<dd>
 convert Netpbm format to Portable Network Graphics
 
-<DT><B><a href="pngtopam.html">pngtopam</a></B>
-<DD>convert PNG (Portable Network Graphics) to Netpbm formats
+<dt><b><a href="pngtopam.html">pngtopam</a></b>
+<dd>convert PNG (Portable Network Graphics) to Netpbm formats
 
-<DT><B><a href="pnmtops.html">pnmtops</a></B>
-<DD>convert Netpbm formats to Postscript
+<dt><b><a href="pnmtops.html">pnmtops</a></b>
+<dd>convert Netpbm formats to Postscript
 
-<DT><B><a href="pstopnm.html">pstopnm</a></B>
-<DD>convert Postscript to Netpbm formats
+<dt><b><a href="pstopnm.html">pstopnm</a></b>
+<dd>convert Postscript to Netpbm formats
 
-<DT><B><a href="pamtotiff.html">pamtotiff</a></B>
-<DD>convert Netpbm formats to TIFF RGB file
+<dt><b><a href="pamtotiff.html">pamtotiff</a></b>
+<dd>convert Netpbm formats to TIFF RGB file
 
-<DT><B><a href="tifftopnm.html">tifftopnm</a></B>
-<DD>convert TIFF file to PNM
+<dt><b><a href="tifftopnm.html">tifftopnm</a></b>
+<dd>convert TIFF file to PNM
 
-<DT><B><a href="pnmtotiffcmyk.html">pnmtotiffcmyk</a></B>
-<DD>convert Netpbm formats to TIFF CMYK file
+<dt><b><a href="pnmtotiffcmyk.html">pnmtotiffcmyk</a></b>
+<dd>convert Netpbm formats to TIFF CMYK file
 
-<DT><B><a href="ppmtobmp.html">ppmtobmp</a></B>
-<DD>convert PPM to Windows or OS/2 Bitmap file
+<dt><b><a href="ppmtobmp.html">ppmtobmp</a></b>
+<dd>convert PPM to Windows or OS/2 Bitmap file
 
-<DT><B><a href="bmptopnm.html">bmptopnm</a></B>
-<DD>convert Windows or OS/2 Bitmap file to PPM or PGM
+<dt><b><a href="bmptopnm.html">bmptopnm</a></b>
+<dd>convert Windows or OS/2 Bitmap file to PPM or PGM
 
-<DT><B><a href="pbmtog3.html">pbmtog3</a></B>
-<DD>convert PBM to Group 3 FAX
+<dt><b><a href="pbmtog3.html">pbmtog3</a></b>
+<dd>convert PBM to Group 3 FAX
 
-<DT><B><a href="g3topbm.html">g3topbm</a></B>
-<DD>convert Group 3 FAX to PBM
+<dt><b><a href="g3topbm.html">g3topbm</a></b>
+<dd>convert Group 3 FAX to PBM
 
-<DT><B><a href="pnmtojbig.html">pnmtojbig</a></B>
-<DD>convert PNM to JBIG BIE (compressed bitmap)
+<dt><b><a href="pnmtojbig.html">pnmtojbig</a></b>
+<dd>convert PNM to JBIG BIE (compressed bitmap)
 
-<DT><B><a href="jbigtopnm.html">jbigtopnm</a></B>
-<DD>convert JBIG BIE (compressed bitmap) to PNM
+<dt><b><a href="jbigtopnm.html">jbigtopnm</a></b>
+<dd>convert JBIG BIE (compressed bitmap) to PNM
 
-<DT><B><a href="pnmtoxwd.html">pnmtoxwd</a></B>
-<DD>convert Netpbm formats to X11 window dump
+<dt><b><a href="pnmtoxwd.html">pnmtoxwd</a></b>
+<dd>convert Netpbm formats to X11 window dump
 
-<DT><B><a href="xwdtopnm.html">xwdtopnm</a></B>
-<DD>convert X10 or X11 window dump to Netpbm formats
+<dt><b><a href="xwdtopnm.html">xwdtopnm</a></b>
+<dd>convert X10 or X11 window dump to Netpbm formats
 
-<DT><B><a href="pbmtoxbm.html">pbmtoxbm</a></B>
-<DD>convert PBM to X10 or X11 bitmap
+<dt><b><a href="pbmtoxbm.html">pbmtoxbm</a></b>
+<dd>convert PBM to X10 or X11 bitmap
 
-<DT><B><a href="xbmtopbm.html">xbmtopbm</a></B>
-<DD>convert X10 or X11 bitmap to PBM
+<dt><b><a href="xbmtopbm.html">xbmtopbm</a></b>
+<dd>convert X10 or X11 bitmap to PBM
 
-<DT><B><a href="ppmtoxpm.html">ppmtoxpm</a></B>
-<DD>convert PPM to XPM format
+<dt><b><a href="ppmtoxpm.html">ppmtoxpm</a></b>
+<dd>convert PPM to XPM format
 
-<DT><B><a href="xpmtoppm.html">xpmtoppm</a></B>
-<DD>convert XPM format to PPM
+<dt><b><a href="xpmtoppm.html">xpmtoppm</a></b>
+<dd>convert XPM format to PPM
 
-<DT><B><a href="pbmto10x.html">pbmto10x</a></B>
-<DD>convert PBM to Gemini 10x printer graphics
+<dt><b><a href="pbmto10x.html">pbmto10x</a></b>
+<dd>convert PBM to Gemini 10x printer graphics
 
-<DT><B><a href="411toppm.html">411toppm</a></B>
-<DD>convert 411 (Sony Mavica) to PPM
+<dt><b><a href="411toppm.html">411toppm</a></b>
+<dd>convert 411 (Sony Mavica) to PPM
 
-<DT><B><a href="pbmto4425.html">pbmto4425</a></B>
-<DD>Display PBM image on AT&amp;T 4425 ASCII terminal with gfx chars
+<dt><b><a href="pbmto4425.html">pbmto4425</a></b>
+<dd>Display PBM image on AT&amp;T 4425 ASCII terminal with gfx chars
 
-<DT><B><a href="ppmtoacad.html">ppmtoacad</a></B>
-<DD>convert PPM to AutoCAD database or slide
+<dt><b><a href="ppmtoacad.html">ppmtoacad</a></b>
+<dd>convert PPM to AutoCAD database or slide
 
-<DT><B><a href="ppmtoapplevol.html">ppmtoapplevol</a></B>
-<DD>convert PPM to Apple volume label image
+<dt><b><a href="ppmtoapplevol.html">ppmtoapplevol</a></b>
+<dd>convert PPM to Apple volume label image
 
-<DT><B><a href="pbmtoascii.html">pbmtoascii</a></B>
-<DD>convert PBM to ASCII graphic form
+<dt><b><a href="pbmtoascii.html">pbmtoascii</a></b>
+<dd>convert PBM to ASCII graphic form
 
-<DT><B><a href="ppmtoascii.html">ppmtoascii</a></B>
-<DD>convert PPM to ASCII graphics with ANSI terminal color control
+<dt><b><a href="ppmtoascii.html">ppmtoascii</a></b>
+<dd>convert PPM to ASCII graphics with ANSI terminal color control
 
-<DT><B><a href="asciitopgm.html">asciitopgm</a></B>
-<DD>convert ASCII character graphics to PGM
+<dt><b><a href="asciitopgm.html">asciitopgm</a></b>
+<dd>convert ASCII character graphics to PGM
 
-<DT><B><a href="pbmtoatk.html">pbmtoatk</a></B>
-<DD>convert PBM to Andrew Toolkit raster object
+<dt><b><a href="pbmtoatk.html">pbmtoatk</a></b>
+<dd>convert PBM to Andrew Toolkit raster object
 
-<DT><B><a href="atktopbm.html">atktopbm</a></B>
-<DD>convert Andrew Toolkit raster object to PBM
+<dt><b><a href="atktopbm.html">atktopbm</a></b>
+<dd>convert Andrew Toolkit raster object to PBM
 
-<DT><B><a href="pamtoavs.html">pamtoavs</a></B>
-<DD>convert Netpbm image to Stardent AVS
+<dt><b><a href="pamtoavs.html">pamtoavs</a></b>
+<dd>convert Netpbm image to Stardent AVS
 
-<DT><B><a href="avstopam.html">avstopam</a></B>
-<DD>convert Stardent AVS image to PAM
+<dt><b><a href="avstopam.html">avstopam</a></b>
+<dd>convert Stardent AVS image to PAM
 
-<DT><B><a href="pbmtobbnbg.html">pbmtobbnbg</a></B>
-<DD>convert PBM to BBN BitGraph graphics
+<dt><b><a href="pbmtobbnbg.html">pbmtobbnbg</a></b>
+<dd>convert PBM to BBN BitGraph graphics
 
-<DT><B><a href="bioradtopgm.html">bioradtopgm</a></B>
-<DD>convert Biorad confocal image to PGM
+<dt><b><a href="bioradtopgm.html">bioradtopgm</a></b>
+<dd>convert Biorad confocal image to PGM
 
-<DT><B><a href="brushtopbm.html">brushtopbm</a></B>
-<DD>convert Xerox doodle brushes to PBM
+<dt><b><a href="brushtopbm.html">brushtopbm</a></b>
+<dd>convert Xerox doodle brushes to PBM
 
-<DT><B><a href="cameratopam.html">cameratopam</a></B>
-<DD>convert raw camera image to PAM
+<dt><b><a href="cameratopam.html">cameratopam</a></b>
+<dd>convert raw camera image to PAM
 
-<DT><B><a href="pbmtocis.html">pbmtocis</a></B>
-<DD>convert PBM to Compuserve RLE image
+<dt><b><a href="pbmtocis.html">pbmtocis</a></b>
+<dd>convert PBM to Compuserve RLE image
 
-<DT><B><a href="cistopbm.html">cistopbm</a></B>
-<DD>convert Compuserve RLE image to PBM
+<dt><b><a href="cistopbm.html">cistopbm</a></b>
+<dd>convert Compuserve RLE image to PBM
 
-<DT><B><a href="pbmtocmuwm.html">pbmtocmuwm</a></B>
-<DD>convert PBM to CMU window manager format
+<dt><b><a href="pbmtocmuwm.html">pbmtocmuwm</a></b>
+<dd>convert PBM to CMU window manager format
 
-<DT><B><a href="cmuwmtopbm.html">cmuwmtopbm</a></B>
-<DD>convert CMU window manager format to PBM
+<dt><b><a href="cmuwmtopbm.html">cmuwmtopbm</a></b>
+<dd>convert CMU window manager format to PBM
 
-<DT><B><a href="ddbugtopbm.html">ddbugtopbm</a></B>
-<DD>
+<dt><b><a href="ddbugtopbm.html">ddbugtopbm</a></b>
+<dd>
 convert Palm DiddleBug image to PBM
 
-<DT><B><a href="pnmtoddif.html">pnmtoddif</a></B>
-<DD>convert from Netpbm formats to DDIF
+<dt><b><a href="pnmtoddif.html">pnmtoddif</a></b>
+<dd>convert from Netpbm formats to DDIF
 
-<DT><B><a href="pamtodjvurle.html">pamtodjvurle</a></B>
-<DD>convert PNM/PAM to DjVu Color RLE format
+<dt><b><a href="pamtodjvurle.html">pamtodjvurle</a></b>
+<dd>convert PNM/PAM to DjVu Color RLE format
 
-<DT><B><a href="pbmtodjvurle.html">pbmtodjvurle</a></B>
-<DD>convert PBM to DjVu Bitonal RLE format
+<dt><b><a href="pbmtodjvurle.html">pbmtodjvurle</a></b>
+<dd>convert PBM to DjVu Bitonal RLE format
 
-<DT><B><a href="pbmtoepsi.html">pbmtoepsi</a></B>
-<DD>convert a PBM image to encapsulated Postscript preview bitmap
+<dt><b><a href="pbmtoepsi.html">pbmtoepsi</a></b>
+<dd>convert a PBM image to encapsulated Postscript preview bitmap
 
-<DT><B><a href="pbmtoepson.html">pbmtoepson</a></B>
-<DD>convert PBM to Epson 9-pin printer graphics
+<dt><b><a href="pbmtoepson.html">pbmtoepson</a></b>
+<dd>convert PBM to Epson 9-pin printer graphics
 
-<DT><B><a href="pbmtoescp2.html">pbmtoescp2</a></B>
-<DD>convert PBM to Epson ESC/P2 printer graphics
+<dt><b><a href="pbmtoescp2.html">pbmtoescp2</a></b>
+<dd>convert PBM to Epson ESC/P2 printer graphics
 
-<DT><B><a href="escp2topbm.html">escp2topbm</a></B>
-<DD>convert Epson ESC/P2 printer graphics to PBM
+<dt><b><a href="escp2topbm.html">escp2topbm</a></b>
+<dd>convert Epson ESC/P2 printer graphics to PBM
 
-<DT><B><a href="ppmtoeyuv.html">ppmtoeyuv</a></B>
-<DD>convert PPM to Encoder/Berkeley YUV format
+<dt><b><a href="ppmtoeyuv.html">ppmtoeyuv</a></b>
+<dd>convert PPM to Encoder/Berkeley YUV format
 
-<DT><B><a href="eyuvtoppm.html">eyuvtoppm</a></B>
-<DD>convert Encoder/Berkeley YUV format to PPM
+<dt><b><a href="eyuvtoppm.html">eyuvtoppm</a></b>
+<dd>convert Encoder/Berkeley YUV format to PPM
 
-<DT><B><a href="pnmtofiasco.html">pnmtofiasco</a></B>
-<DD>convert Netpbm image to Fiasco (wfa) highly compressed format
+<dt><b><a href="pnmtofiasco.html">pnmtofiasco</a></b>
+<dd>convert Netpbm image to Fiasco (wfa) highly compressed format
 
-<DT><B><a href="fiascotopnm.html">fiascotopnm</a></B>
-<DD>convert Fiasco (wfa) highly compressed format to Netpbm image
+<dt><b><a href="fiascotopnm.html">fiascotopnm</a></b>
+<dd>convert Fiasco (wfa) highly compressed format to Netpbm image
 
-<DT><B><a href="pamtofits.html">pamtofits</a></B>
-<DD>convert Netpbm formats to FITS format
+<dt><b><a href="pamtofits.html">pamtofits</a></b>
+<dd>convert Netpbm formats to FITS format
 
-<DT><B><a href="fitstopnm.html">fitstopnm</a></B>
-<DD>convert FITS format to PNM
+<dt><b><a href="fitstopnm.html">fitstopnm</a></b>
+<dd>convert FITS format to PNM
 
-<DT><B><a href="pgmtofs.html">pgmtofs</a></B>
-<DD>convert PGM to Usenix FaceSaver(tm) format
+<dt><b><a href="pgmtofs.html">pgmtofs</a></b>
+<dd>convert PGM to Usenix FaceSaver(tm) format
 
-<DT><B><a href="fstopgm.html">fstopgm</a></B>
-<DD>convert Usenix FaceSaver(tm) format to PGM
+<dt><b><a href="fstopgm.html">fstopgm</a></b>
+<dd>convert Usenix FaceSaver(tm) format to PGM
 
-<DT><B><a href="pbmtogem.html">pbmtogem</a></B>
-<DD>convert PBM into GEM .img file
+<dt><b><a href="pbmtogem.html">pbmtogem</a></b>
+<dd>convert PBM into GEM .img file
 
-<DT><B><a href="gemtopnm.html">gemtopnm</a></B>
-<DD>convert GEM .img format to Netpbm format
+<dt><b><a href="gemtopnm.html">gemtopnm</a></b>
+<dd>convert GEM .img format to Netpbm format
 
-<DT><B><a href="pbmtogo.html">pbmtogo</a></B>
-<DD>convert PBM to GraphOn graphics
+<dt><b><a href="pbmtogo.html">pbmtogo</a></b>
+<dd>convert PBM to GraphOn graphics
 
-<DT><B><a href="gouldtoppm.html">gouldtoppm</a></B>
-<DD>convert Gould scanner file to PPM
+<dt><b><a href="gouldtoppm.html">gouldtoppm</a></b>
+<dd>convert Gould scanner file to PPM
 
-<DT><B><a href="pamtohdiff.html">pamtohdiff</a></B>
-<DD>convert PAM image to horizontal difference version of same
+<dt><b><a href="pamtohdiff.html">pamtohdiff</a></b>
+<dd>convert PAM image to horizontal difference version of same
 
-<DT><B><a href="hdifftopam.html">hdifftopam</a></B>
-<DD>convert horizontal difference PAM back to original image
+<dt><b><a href="hdifftopam.html">hdifftopam</a></b>
+<dd>convert horizontal difference PAM back to original image
 
-<DT><B><a href="hipstopgm.html">hipstopgm</a></B>
-<DD>convert HIPS format to PGM
+<dt><b><a href="hipstopgm.html">hipstopgm</a></b>
+<dd>convert HIPS format to PGM
 
-<DT><B><a href="hpcdtoppm.html">hpcdtoppm</a></B>
-<DD>convert photo CD to PPM
+<dt><b><a href="hpcdtoppm.html">hpcdtoppm</a></b>
+<dd>convert photo CD to PPM
 
-<DT><B><a href="pamtohtmltbl.html">pamtohtmltbl</a></B>
-<DD>convert PNM/PAM to an HTML table with a colored cell for each pixel
+<dt><b><a href="pamtohtmltbl.html">pamtohtmltbl</a></b>
+<dd>convert PNM/PAM to an HTML table with a colored cell for each pixel
 
-<DT><B><a href="pbmtoibm23xx.html">pbmtoibm23xx</a></B>
-<DD>convert from PBM to IBM 23XX printer stream
+<dt><b><a href="pbmtoibm23xx.html">pbmtoibm23xx</a></b>
+<dd>convert from PBM to IBM 23XX printer stream
 
-<DT><B><a href="ppmtoicr.html">ppmtoicr</a></B>
-<DD>convert PPM to NCSA ICR graphics
+<dt><b><a href="ppmtoicr.html">ppmtoicr</a></b>
+<dd>convert PPM to NCSA ICR graphics
 
-<DT><B><a href="ppmtoilbm.html">ppmtoilbm</a></B>
-<DD>convert PPM to IFF ILBM
+<dt><b><a href="ppmtoilbm.html">ppmtoilbm</a></b>
+<dd>convert PPM to IFF ILBM
 
-<DT><B><a href="ilbmtoppm.html">ilbmtoppm</a></B>
-<DD>convert IFF ILBM to PPM
+<dt><b><a href="ilbmtoppm.html">ilbmtoppm</a></b>
+<dd>convert IFF ILBM to PPM
 
-<DT><B><a href="imgtoppm.html">imgtoppm</a></B>
-<DD>convert Img-whatnot to PPM
+<dt><b><a href="imgtoppm.html">imgtoppm</a></b>
+<dd>convert Img-whatnot to PPM
 
-<DT><B><a href="infotopam.html">infotopam</a></B>
-<DD>convert Amiga .info icons to PAM
+<dt><b><a href="infotopam.html">infotopam</a></b>
+<dd>convert Amiga .info icons to PAM
 
-<DT><B><a href="ppmtoleaf.html">ppmtoleaf</a></B>
-<DD>convert PPM to Interleaf
+<dt><b><a href="ppmtoleaf.html">ppmtoleaf</a></b>
+<dd>convert PPM to Interleaf
 
-<DT><B><a href="leaftoppm.html">leaftoppm</a></B>
-<DD>convert Interleaf to PPM
+<dt><b><a href="leaftoppm.html">leaftoppm</a></b>
+<dd>convert Interleaf to PPM
 
-<DT><B><a href="pgmtolispm.html">pgmtolispm</a></B>
-<DD>convert PGM into Lisp Machine format
+<dt><b><a href="pgmtolispm.html">pgmtolispm</a></b>
+<dd>convert PGM into Lisp Machine format
 
-<DT><B><a href="lispmtopgm.html">lispmtopgm</a></B>
-<DD>convert a Lisp Machine bitmap file into PGM format
+<dt><b><a href="lispmtopgm.html">lispmtopgm</a></b>
+<dd>convert a Lisp Machine bitmap file into PGM format
 
-<DT><B><a href="pbmtolj.html">pbmtolj</a></B>
-<DD>convert PBM to HP LaserJet black and white graphics
+<dt><b><a href="pbmtolj.html">pbmtolj</a></b>
+<dd>convert PBM to HP LaserJet black and white graphics
 
-<DT><B><a href="ppmtolj.html">ppmtolj</a></B>
-<DD>convert PPM to HP LaserJet color graphics (PCL 5)
+<dt><b><a href="ppmtolj.html">ppmtolj</a></b>
+<dd>convert PPM to HP LaserJet color graphics (PCL 5)
 
-<DT><B><a href="pbmtoln03.html">pbmtoln03</a></B>
-<DD>convert PGM image to Dec LN03+ Sixel image
+<dt><b><a href="pbmtoln03.html">pbmtoln03</a></b>
+<dd>convert PGM image to Dec LN03+ Sixel image
 
-<DT><B><a href="pbmtolps.html">pbmtolps</a></B>
-<DD>convert PBM image to Postscript using lines
+<dt><b><a href="pbmtolps.html">pbmtolps</a></b>
+<dd>convert PBM image to Postscript using lines
 
-<DT><B><a href="pbmtomacp.html">pbmtomacp</a></B>
-<DD>convert PBM to MacPaint
+<dt><b><a href="pbmtomacp.html">pbmtomacp</a></b>
+<dd>convert PBM to MacPaint
 
-<DT><B><a href="macptopbm.html">macptopbm</a></B>
-<DD>convert MacPaint to PBM
+<dt><b><a href="macptopbm.html">macptopbm</a></b>
+<dd>convert MacPaint to PBM
 
-<DT><B><a href="pbmtomatrixorbital.html">pbmtomatrixorbital</a></B>
-<DD>convert a PBM image to a Matrix Orbital LCD image
+<dt><b><a href="pbmtomatrixorbital.html">pbmtomatrixorbital</a></b>
+<dd>convert a PBM image to a Matrix Orbital LCD image
 
-<DT><B><a href="pbmtomda.html">pbmtomda</a></B>
-<DD>convert from PBM to Microdesign (for Amstrad PCWs)
+<dt><b><a href="pbmtomda.html">pbmtomda</a></b>
+<dd>convert from PBM to Microdesign (for Amstrad PCWs)
 
-<DT><B><a href="mdatopbm.html">mdatopbm</a></B>
-<DD>convert from Microdesign (for Amstrad PCWs) to PBM
+<dt><b><a href="mdatopbm.html">mdatopbm</a></b>
+<dd>convert from Microdesign (for Amstrad PCWs) to PBM
 
-<DT><B><a href="pbmtomgr.html">pbmtomgr</a></B>
-<DD>convert PBM to MGR format
+<dt><b><a href="pbmtomgr.html">pbmtomgr</a></b>
+<dd>convert PBM to MGR format
 
-<DT><B><a href="mgrtopbm.html">mgrtopbm</a></B>
-<DD>convert MGR format to PBM
+<dt><b><a href="mgrtopbm.html">mgrtopbm</a></b>
+<dd>convert MGR format to PBM
 
-<DT><B><a href="ppmtomitsu.html">ppmtomitsu</a></B>
-<DD>convert from PPM to Mitsubishi S340-10 printer stream
+<dt><b><a href="ppmtomitsu.html">ppmtomitsu</a></b>
+<dd>convert from PPM to Mitsubishi S340-10 printer stream
 
-<DT><B><a href="ppmtompeg.html">ppmtompeg</a></B>
-<DD>convert series of PPM frames to an MPEG movie
+<dt><b><a href="ppmtompeg.html">ppmtompeg</a></b>
+<dd>convert series of PPM frames to an MPEG movie
 
-<DT><B><a href="pamtompfont.html">pamtompfont</a></B>
-<DD>convert Netpbm image to Mplayer bitmap font
+<dt><b><a href="pamtompfont.html">pamtompfont</a></b>
+<dd>convert Netpbm image to Mplayer bitmap font
 
-<DT><B><a href="pbmtomrf.html">pbmtomrf</a></B>
-<DD>convert PBM image to MRF (compressed bitmap)
+<dt><b><a href="pbmtomrf.html">pbmtomrf</a></b>
+<dd>convert PBM image to MRF (compressed bitmap)
 
-<DT><B><a href="mrftopbm.html">mrftopbm</a></B>
-<DD>convert MRF (compressed bitmap) to PBM
+<dt><b><a href="mrftopbm.html">mrftopbm</a></b>
+<dd>convert MRF (compressed bitmap) to PBM
 
-<DT><B><a href="mtvtoppm.html">mtvtoppm</a></B>
-<DD>convert MTV ray-tracer output to PPM
+<dt><b><a href="mtvtoppm.html">mtvtoppm</a></b>
+<dd>convert MTV ray-tracer output to PPM
 
-<DT><B><a href="ppmtoneo.html">ppmtoneo</a></B>
-<DD>convert PPM image to Atari Neochrome (.neo)
+<dt><b><a href="ppmtoneo.html">ppmtoneo</a></b>
+<dd>convert PPM image to Atari Neochrome (.neo)
 
-<DT><B><a href="neotoppm.html">neotoppm</a></B>
-<DD>convert Atari Neochrome (.neo) image to PPM
+<dt><b><a href="neotoppm.html">neotoppm</a></b>
+<dd>convert Atari Neochrome (.neo) image to PPM
 
-<DT><B><a href="pbmtonokia.html">pbmtonokia</a></B>
-<DD>convert PBM to Nokia Smart Messaging Format (SMF)
+<dt><b><a href="pbmtonokia.html">pbmtonokia</a></b>
+<dd>convert PBM to Nokia Smart Messaging Format (SMF)
 
-<DT><B><a href="pamtooctaveimg.html">pamtooctaveimg</a></B>
-<DD>convert PNM/PAM to Gnu Octave image
+<dt><b><a href="pamtooctaveimg.html">pamtooctaveimg</a></b>
+<dd>convert PNM/PAM to Gnu Octave image
 
-<DT><B><a href="pnmtopalm.html">pnmtopalm</a></B>
-<DD>convert Netpbm formats to Palm pixmap
+<dt><b><a href="pnmtopalm.html">pnmtopalm</a></b>
+<dd>convert Netpbm formats to Palm pixmap
 
-<DT><B><a href="palmtopnm.html">palmtopnm</a></B>
-<DD>convert Palm pixmap to Netpbm formats
+<dt><b><a href="palmtopnm.html">palmtopnm</a></b>
+<dd>convert Palm pixmap to Netpbm formats
 
-<DT><B><a href="pc1toppm.html">pc1toppm</a></B>
-<DD>convert Atari Degas .pc1 (compressed pi1) to PPM
+<dt><b><a href="pc1toppm.html">pc1toppm</a></b>
+<dd>convert Atari Degas .pc1 (compressed pi1) to PPM
 
-<DT><B><a href="pcdovtoppm.html">pcdovtoppm</a></B>
-<DD>convert a photo CD PCD overview file to PPM
+<dt><b><a href="pcdovtoppm.html">pcdovtoppm</a></b>
+<dd>convert a photo CD PCD overview file to PPM
 
-<DT><B><a href="pnmtopclxl.html">pnmtopclxl</a></B>
-<DD>convert PNM to HP PCL-XL (PCL 6) printer language
+<dt><b><a href="pnmtopclxl.html">pnmtopclxl</a></b>
+<dd>convert PNM to HP PCL-XL (PCL 6) printer language
 
-<DT><B><a href="ppmtopcx.html">ppmtopcx</a></B>
-<DD>convert PPM to PC Paintbrush format
+<dt><b><a href="ppmtopcx.html">ppmtopcx</a></b>
+<dd>convert PPM to PC Paintbrush format
 
-<DT><B><a href="pcxtoppm.html">pcxtoppm</a></B>
-<DD>convert PC Paintbrush format to PPM
+<dt><b><a href="pcxtoppm.html">pcxtoppm</a></b>
+<dd>convert PC Paintbrush format to PPM
 
-<DT><B><a href="pamtopdbimg.html">pamtopdbimg</a></B>
-<DD>
+<dt><b><a href="pamtopdbimg.html">pamtopdbimg</a></b>
+<dd>
 convert Netpbm formats to Palm Pilot Image Viewer format
 
-<DT><B><a href="pdbimgtopam.html">pdbimgtopam</a></B>
-<DD>
+<dt><b><a href="pdbimgtopam.html">pdbimgtopam</a></b>
+<dd>
 convert Palm Pilot Image Viewer format to Netpbm formats.
 
-<DT><B><a href="pamtopfm.html">pamtopfm</a></B>
-<DD>convert PAM/PNM to HDRshop PFM (Portable Float Map)
+<dt><b><a href="pamtopfm.html">pamtopfm</a></b>
+<dd>convert PAM/PNM to HDRshop PFM (Portable Float Map)
 
-<DT><B><a href="pfmtopam.html">pfmtopam</a></B>
-<DD>convert HDRshop PFM (Portable Float Map) to PAM
+<dt><b><a href="pfmtopam.html">pfmtopam</a></b>
+<dd>convert HDRshop PFM (Portable Float Map) to PAM
 
-<DT><B><a href="ppmtopi1.html">ppmtopi1</a></B>
-<DD>convert PPM to Atari Degas .pi1
+<dt><b><a href="ppmtopi1.html">ppmtopi1</a></b>
+<dd>convert PPM to Atari Degas .pi1
 
-<DT><B><a href="pi1toppm.html">pi1toppm</a></B>
-<DD>convert Atari Degas .pi1 to PPM
+<dt><b><a href="pi1toppm.html">pi1toppm</a></b>
+<dd>convert Atari Degas .pi1 to PPM
 
-<DT><B><a href="pbmtopi3.html">pbmtopi3</a></B>
-<DD>convert PBM to Atari Degas .pi3
+<dt><b><a href="pbmtopi3.html">pbmtopi3</a></b>
+<dd>convert PBM to Atari Degas .pi3
 
-<DT><B><a href="pi3topbm.html">pi3topbm</a></B>
-<DD>convert Atari Degas .pi3 to PBM
+<dt><b><a href="pi3topbm.html">pi3topbm</a></b>
+<dd>convert Atari Degas .pi3 to PBM
 
-<DT><B><a href="ppmtopict.html">ppmtopict</a></B>
-<DD>convert PPM to Macintosh PICT
+<dt><b><a href="ppmtopict.html">ppmtopict</a></b>
+<dd>convert PPM to Macintosh PICT
 
-<DT><B><a href="picttoppm.html">picttoppm</a></B>
-<DD>convert Macintosh PICT to PPM
+<dt><b><a href="picttoppm.html">picttoppm</a></b>
+<dd>convert Macintosh PICT to PPM
 
-<DT><B><a href="ppmtopj.html">ppmtopj</a></B>
-<DD>convert PPM to HP PaintJet file
+<dt><b><a href="ppmtopj.html">ppmtopj</a></b>
+<dd>convert PPM to HP PaintJet file
 
-<DT><B><a href="pjtoppm.html">pjtoppm</a></B>
-<DD>convert HP PaintJet file to PPM
+<dt><b><a href="pjtoppm.html">pjtoppm</a></b>
+<dd>convert HP PaintJet file to PPM
 
-<DT><B><a href="ppmtopjxl.html">ppmtopjxl</a></B>
-<DD>convert from PPM to HP Paintjet XL PCL printer stream
+<dt><b><a href="ppmtopjxl.html">ppmtopjxl</a></b>
+<dd>convert from PPM to HP Paintjet XL PCL printer stream
 
-<DT><B><a href="pbmtopk.html">pbmtopk</a></B>
-<DD>convert PBM image to packed format (PK) font
+<dt><b><a href="pbmtopk.html">pbmtopk</a></b>
+<dd>convert PBM image to packed format (PK) font
 
-<DT><B><a href="pktopbm.html">pktopbm</a></B>
-<DD>convert packed format (PK) font to PBM image
+<dt><b><a href="pktopbm.html">pktopbm</a></b>
+<dd>convert packed format (PK) font to PBM image
 
-<DT><B><a href="pbmtoplot.html">pbmtoplot</a></B>
-<DD>convert PBM into Unix <b>plot</b> file
+<dt><b><a href="pbmtoplot.html">pbmtoplot</a></b>
+<dd>convert PBM into Unix <b>plot</b> file
 
-<DT><B><a href="pbmtoppa.html">pbmtoppa</a></B>
-<DD>convert PBM to HP PPA (Printer Performance Architecture) printer stream
+<dt><b><a href="pbmtoppa.html">pbmtoppa</a></b>
+<dd>convert PBM to HP PPA (Printer Performance Architecture) printer stream
 
-<DT><B><a href="pbmtopsg3.html">pbmtopsg3</a></B>
-<DD>convert PBM images to Postscript using G3 fax compression.
+<dt><b><a href="pbmtopsg3.html">pbmtopsg3</a></b>
+<dd>convert PBM images to Postscript using G3 fax compression.
 
-<DT><B><a href="psidtopgm.html">psidtopgm</a></B>
-<DD>convert PostScript "image" data to PGM
+<dt><b><a href="psidtopgm.html">psidtopgm</a></b>
+<dd>convert PostScript "image" data to PGM
 
-<DT><B><a href="pbmtoptx.html">pbmtoptx</a></B>
-<DD>convert PBM to Printronix graphics
+<dt><b><a href="pbmtoptx.html">pbmtoptx</a></b>
+<dd>convert PBM to Printronix graphics
 
-<DT><B><a href="ppmtopuzz.html">ppmtopuzz</a></B>
-<DD>convert PPM to X11 "puzzle" file
+<dt><b><a href="ppmtopuzz.html">ppmtopuzz</a></b>
+<dd>convert PPM to X11 "puzzle" file
 
-<DT><B><a href="qrttoppm.html">qrttoppm</a></B>
-<DD>convert QRT ray-tracer output to PPM
+<dt><b><a href="qrttoppm.html">qrttoppm</a></b>
+<dd>convert QRT ray-tracer output to PPM
 
-<DT><B><a href="pnmtorast.html">pnmtorast</a></B>
-<DD>convert Netpbm formats to Sun raster file
+<dt><b><a href="pnmtorast.html">pnmtorast</a></b>
+<dd>convert Netpbm formats to Sun raster file
 
-<DT><B><a href="rasttopnm.html">rasttopnm</a></B>
-<DD>convert Sun raster file to Netpbm formats
+<dt><b><a href="rasttopnm.html">rasttopnm</a></b>
+<dd>convert Sun raster file to Netpbm formats
 
-<DT><B><a href="rlatopam.html">rlatopam</a></B>
-<DD>convert Alias/Wavefront RLA and RPF to PAM
+<dt><b><a href="rlatopam.html">rlatopam</a></b>
+<dd>convert Alias/Wavefront RLA and RPF to PAM
 
-<DT><B><a href="pnmtorle.html">pnmtorle</a></B>
-<DD>convert PNM to Utah Raster Toolkit (urt/rle) file
+<dt><b><a href="pnmtorle.html">pnmtorle</a></b>
+<dd>convert PNM to Utah Raster Toolkit (urt/rle) file
 
-<DT><B><a href="rletopnm.html">rletopnm</a></B>
-<DD>convert Utah Raster Toolkit (urt/rle) file to PNM
+<dt><b><a href="rletopnm.html">rletopnm</a></b>
+<dd>convert Utah Raster Toolkit (urt/rle) file to PNM
 
-<DT><B><a href="sbigtopgm.html">sbigtopgm</a></B>
-<DD>convert Santa Barbara Instrument Group CCD file to PGM
+<dt><b><a href="sbigtopgm.html">sbigtopgm</a></b>
+<dd>convert Santa Barbara Instrument Group CCD file to PGM
 
-<DT><B><a href="pgmtosbig.html">pgmtosbig</a></B>
-<DD>convert PGM to Santa Barbara Instrument Group CCD file
+<dt><b><a href="pgmtosbig.html">pgmtosbig</a></b>
+<dd>convert PGM to Santa Barbara Instrument Group CCD file
 
-<DT><B><a href="st4topgm.html">st4topgm</a></B>
-<DD>convert Santa Barbara Instrument Group ST-4 camera CCD file to PGM
+<dt><b><a href="st4topgm.html">st4topgm</a></b>
+<dd>convert Santa Barbara Instrument Group ST-4 camera CCD file to PGM
 
-<DT><B><a href="pgmtost4.html">pgmtost4</a></B>
-<DD>convert PGM to Santa Barbara Instrument Group ST-4 camera CCD file
+<dt><b><a href="pgmtost4.html">pgmtost4</a></b>
+<dd>convert PGM to Santa Barbara Instrument Group ST-4 camera CCD file
 
-<DT><B><a href="pnmtosgi.html">pnmtosgi</a></B>
-<DD>convert from Netpbm formats to SGI format
+<dt><b><a href="pnmtosgi.html">pnmtosgi</a></b>
+<dd>convert from Netpbm formats to SGI format
 
-<DT><B><a href="sgitopnm.html">sgitopnm</a></B>
-<DD>convert from SGI format to Netpbm formats
+<dt><b><a href="sgitopnm.html">sgitopnm</a></b>
+<dd>convert from SGI format to Netpbm formats
 
-<DT><B><a href="pnmtosir.html">pnmtosir</a></B>
-<DD>convert from Netpbm formats to Solitaire Image Recorder file
+<dt><b><a href="pnmtosir.html">pnmtosir</a></b>
+<dd>convert from Netpbm formats to Solitaire Image Recorder file
 (MGI Type 11 or 17)
 
-<DT><B><a href="sirtopnm.html">sirtopnm</a></B>
-<DD>convert from Solitaire Image Recorder file to Netpbm formats.
+<dt><b><a href="sirtopnm.html">sirtopnm</a></b>
+<dd>convert from Solitaire Image Recorder file to Netpbm formats.
 
-<DT><B><a href="ppmtosixel.html">ppmtosixel</a></B>
-<DD>convert PPM to DEC sixel format
+<dt><b><a href="ppmtosixel.html">ppmtosixel</a></b>
+<dd>convert PPM to DEC sixel format
 
-<DT><B><a href="sldtoppm.html">sldtoppm</a></B>
-<DD>convert an AutoCAD slide file into a PPM
+<dt><b><a href="sldtoppm.html">sldtoppm</a></b>
+<dd>convert an AutoCAD slide file into a PPM
 
-<DT><B><a href="spctoppm.html">spctoppm</a></B>
-<DD>convert Atari compressed Spectrum to PPM
+<dt><b><a href="spctoppm.html">spctoppm</a></b>
+<dd>convert Atari compressed Spectrum to PPM
 
-<DT><B><a href="spottopgm.html">spottopgm</a></B>
-<DD>convert SPOT satellite image to PGM
+<dt><b><a href="spottopgm.html">spottopgm</a></b>
+<dd>convert SPOT satellite image to PGM
 
-<DT><B><a href="ppmtospu.html">ppmtospu</a></B>
-<DD>convert PPM  to Atari uncompressed Spectrum
+<dt><b><a href="ppmtospu.html">ppmtospu</a></b>
+<dd>convert PPM  to Atari uncompressed Spectrum
 
-<DT><B><a href="sputoppm.html">sputoppm</a></B>
-<DD>convert Atari uncompressed Spectrum to PPM
+<dt><b><a href="sputoppm.html">sputoppm</a></b>
+<dd>convert Atari uncompressed Spectrum to PPM
 
-<DT><B><a href="pamtosrf.html">pamtosrf</a></B>
-<DD>convert Netpbm formats to SRF
+<dt><b><a href="pamtosrf.html">pamtosrf</a></b>
+<dd>convert Netpbm formats to SRF
 
-<DT><B><a href="srftopam.html">srftopam</a></B>
-<DD>convert SRF to PAM
+<dt><b><a href="srftopam.html">srftopam</a></b>
+<dd>convert SRF to PAM
 
-<DT><B><a href="pbmtosunicon.html">pbmtosunicon</a></B>
-<DD>convert PBM to Sun icon
+<dt><b><a href="pbmtosunicon.html">pbmtosunicon</a></b>
+<dd>convert PBM to Sun icon
 
-<DT><B><a href="sunicontopnm.html">sunicontopnm</a></B>
-<DD>convert Sun icon to Netpbm
+<dt><b><a href="sunicontopnm.html">sunicontopnm</a></b>
+<dd>convert Sun icon to Netpbm
 
-<DT><B><a href="pamtosvg.html">pamtosvg</a></B>
+<dt><b><a href="pamtosvg.html">pamtosvg</a></b>
 <dd>convert Netpbm image to Scalable Vector Graphics (SVG); trace image
 
-<DT><B><a href="svgtopam.html">svgtopam</a></B>
+<dt><b><a href="svgtopam.html">svgtopam</a></b>
 <dd>convert an SVG (Scalable Vector Graphics) image to Netpbm format
 
-<DT><B><a href="ppmtoterm.html">ppmtoterm</a></B>
-<DD>display PPM image on ANSI standard text terminal
+<dt><b><a href="ppmtoterm.html">ppmtoterm</a></b>
+<dd>display PPM image on ANSI standard text terminal
 
-<DT><B><a href="pamtotga.html">pamtotga</a></B>
-<DD>convert PAM to TrueVision Targa file
+<dt><b><a href="pamtotga.html">pamtotga</a></b>
+<dd>convert PAM to TrueVision Targa file
 
-<DT><B><a href="tgatoppm.html">tgatoppm</a></B>
-<DD>convert TrueVision Targa file to PPM
+<dt><b><a href="tgatoppm.html">tgatoppm</a></b>
+<dd>convert TrueVision Targa file to PPM
 
-<DT><B><a href="thinkjettopbm.html">thinkjettopbm</a></B>
-<DD>convert HP Thinkjet printer stream to PBM
+<dt><b><a href="thinkjettopbm.html">thinkjettopbm</a></b>
+<dd>convert HP Thinkjet printer stream to PBM
 
-<DT><B><a href="pamtouil.html">pamtouil</a></B>
-<DD>convert PAM to Motif UIL icon file
+<dt><b><a href="pamtouil.html">pamtouil</a></b>
+<dd>convert PAM to Motif UIL icon file
 
-<DT><B><a href="vidtoppm.html">vidtoppm</a></B>
-<DD>convert Parallax XVideo JPEG to sequence of PPM files
+<dt><b><a href="vidtoppm.html">vidtoppm</a></b>
+<dd>convert Parallax XVideo JPEG to sequence of PPM files
 
-<DT><B><a href="pbmtowbmp.html">pbmtowbmp</a></B>
-<DD>convert PBM to WAP (Wireless App Protocol) Wireless Bitmap
+<dt><b><a href="pbmtowbmp.html">pbmtowbmp</a></b>
+<dd>convert PBM to WAP (Wireless App Protocol) Wireless Bitmap
 
-<DT><B><a href="wbmptopbm.html">wbmptopbm</a></B>
-<DD>convert WAP (Wireless App Protocol) Wireless Bitmap to PBM
+<dt><b><a href="wbmptopbm.html">wbmptopbm</a></b>
+<dd>convert WAP (Wireless App Protocol) Wireless Bitmap to PBM
 
-<DT><B><a href="pamtowinicon.html">pamtowinicon</a></B>
-<DD>convert PAM to Windows icon file
+<dt><b><a href="pamtowinicon.html">pamtowinicon</a></b>
+<dd>convert PAM to Windows icon file
 
-<DT><B><a href="ppmtowinicon.html">ppmtowinicon</a></B>
-<DD>convert PPM to Windows icon file (obsoleted by <b>pamtowinicon</b>).
+<dt><b><a href="ppmtowinicon.html">ppmtowinicon</a></b>
+<dd>convert PPM to Windows icon file (obsoleted by <b>pamtowinicon</b>).
 
-<DT><B><a href="winicontopam.html">winicontopam</a></B>
-<DD>convert Windows icon file to PAM
+<dt><b><a href="winicontopam.html">winicontopam</a></b>
+<dd>convert Windows icon file to PAM
 
-<DT><B><a href="winicontoppm.html">winicontoppm</a></B>
-<DD>convert Windows icon file to PPM (obsoleted by <b>winicontoapm</b>).
+<dt><b><a href="winicontoppm.html">winicontoppm</a></b>
+<dd>convert Windows icon file to PPM (obsoleted by <b>winicontoapm</b>).
 
-<DT><B><a href="ximtoppm.html">ximtoppm</a></B>
-<DD>convert Xim to PPM
+<dt><b><a href="ximtoppm.html">ximtoppm</a></b>
+<dd>convert Xim to PPM
 
-<DT><B><a href="pamtoxvmini.html">pamtoxvmini</a></B>
-<DD>convert from Netpbm formats to Xv "thumbnail" picture
+<dt><b><a href="pamtoxvmini.html">pamtoxvmini</a></b>
+<dd>convert from Netpbm formats to Xv "thumbnail" picture
 
-<DT><B><a href="xvminitoppm.html">xvminitoppm</a></B>
-<DD>convert Xv "thumbnail" picture to PPM
+<dt><b><a href="xvminitoppm.html">xvminitoppm</a></b>
+<dd>convert Xv "thumbnail" picture to PPM
 
-<DT><B><a href="pbmtoybm.html">pbmtoybm</a></B>
-<DD>convert PBM into Bennet Yee "face" file
+<dt><b><a href="pbmtoybm.html">pbmtoybm</a></b>
+<dd>convert PBM into Bennet Yee "face" file
 
-<DT><B><a href="ybmtopbm.html">ybmtopbm</a></B>
-<DD>convert Bennet Yee "face" file into PBM
+<dt><b><a href="ybmtopbm.html">ybmtopbm</a></b>
+<dd>convert Bennet Yee "face" file into PBM
 
-<DT><B><a href="ppmtoyuv.html">ppmtoyuv</a></B>
-<DD>convert PPM to Abekas YUV format
+<dt><b><a href="ppmtoyuv.html">ppmtoyuv</a></b>
+<dd>convert PPM to Abekas YUV format
 
-<DT><B><a href="yuvtoppm.html">yuvtoppm</a></B>
-<DD>convert Abekas YUV format to PPM
+<dt><b><a href="yuvtoppm.html">yuvtoppm</a></b>
+<dd>convert Abekas YUV format to PPM
 
-<DT><B><a href="ppmtoyuvsplit.html">ppmtoyuvsplit</a></B>
-<DD>convert PPM to 3 subsampled raw Stanford MPEG YUV files
+<dt><b><a href="ppmtoyuvsplit.html">ppmtoyuvsplit</a></b>
+<dd>convert PPM to 3 subsampled raw Stanford MPEG YUV files
 
-<DT><B><a href="yuvsplittoppm.html">yuvsplittoppm</a></B>
-<DD>merge 3 subsampled raw YUV files to one PPM
+<dt><b><a href="yuvsplittoppm.html">yuvsplittoppm</a></b>
+<dd>merge 3 subsampled raw YUV files to one PPM
 
-<DT><B><a href="yuy2topam.html">yuy2topam</a></B>
-<DD>convert YUY2 format to PAM
+<dt><b><a href="yuy2topam.html">yuy2topam</a></b>
+<dd>convert YUY2 format to PAM
 
-<DT><B><a href="zeisstopnm.html">zeisstopnm</a></B>
-<DD>convert a Zeiss confocal file to Netpbm format
+<dt><b><a href="zeisstopnm.html">zeisstopnm</a></b>
+<dd>convert a Zeiss confocal file to Netpbm format
 
-<DT><B><a href="pbmtozinc.html">pbmtozinc</a></B>
-<DD>convert PBM to Zinc Interface Library icon
+<dt><b><a href="pbmtozinc.html">pbmtozinc</a></b>
+<dd>convert PBM to Zinc Interface Library icon
 
-<DT><B><a href="rawtopgm.html">rawtopgm</a></B>
-<DD>convert raw grayscale bytes to PGM
+<dt><b><a href="rawtopgm.html">rawtopgm</a></b>
+<dd>convert raw grayscale bytes to PGM
 
-<DT><B><a href="rawtoppm.html">rawtoppm</a></B>
-<DD>convert raw RGB bytes to PPM
+<dt><b><a href="rawtoppm.html">rawtoppm</a></b>
+<dd>convert raw RGB bytes to PPM
 
-<DT><B><a href="ppmtoarbtxt.html">ppmtoarbtxt</a></B>
-<DD>convert PPM to just about any text-based format, using a grammar file
+<dt><b><a href="ppmtoarbtxt.html">ppmtoarbtxt</a></b>
+<dd>convert PPM to just about any text-based format, using a grammar file
 
-<DT><B><a href="anytopnm.html">anytopnm</a></B>
-<DD>convert any graphics format to Netpbm format
+<dt><b><a href="anytopnm.html">anytopnm</a></b>
+<dd>convert any graphics format to Netpbm format
 
-</DL>
+</dl>
 
 
 
-<H2 id="generators">Image Generators</H2>
+<h2 id="generators">Image Generators</h2>
 
-<P>
+<p>
 All of these generate Netpbm format output.
 
-<DL COMPACT>
+<dl compact>
 
-<DT><B><a href="pbmmake.html">pbmmake</a></B>
-<DD>create a blank PBM image of a specified size
+<dt><b><a href="pbmmake.html">pbmmake</a></b>
+<dd>create a blank PBM image of a specified size
 
-<DT><B><a href="pgmmake.html">pgmmake</a></B>
-<DD>create a PGM image of a specified size and shade of gray
+<dt><b><a href="pgmmake.html">pgmmake</a></b>
+<dd>create a PGM image of a specified size and shade of gray
 
-<DT><B><a href="ppmmake.html">ppmmake</a></B>
-<DD>create a PPM image of a specified size and color
+<dt><b><a href="ppmmake.html">ppmmake</a></b>
+<dd>create a PPM image of a specified size and color
 
-<DT><B><a href="pgmramp.html">pgmramp</a></B>
-<DD>generate a grayscale ramp (gradient)
+<dt><b><a href="pgmramp.html">pgmramp</a></b>
+<dd>generate a grayscale ramp (gradient)
 
-<DT><B><a href="pamgradient.html">pamgradient</a></B>
-<DD>create a four-corner gradient image
+<dt><b><a href="pamgradient.html">pamgradient</a></b>
+<dd>create a four-corner gradient image
 
-<DT><B><a href="pampaintspill.html">pampaintspill</a></B>
-<DD>smoothly spill colors into the background
+<dt><b><a href="pampaintspill.html">pampaintspill</a></b>
+<dd>smoothly spill colors into the background
 
-<DT><B><a href="ppmpat.html">ppmpat</a></B>
-<DD>create a pretty PPM image
+<dt><b><a href="ppmpat.html">ppmpat</a></b>
+<dd>create a pretty PPM image
 
-<DT><B><a href="ppmrainbow.html">ppmrainbow</a></B>
-<DD>create a spectrum-like image with colors fading together.
+<dt><b><a href="ppmrainbow.html">ppmrainbow</a></b>
+<dd>create a spectrum-like image with colors fading together.
 
-<DT><B><a href="ppmrough.html">ppmrough</a></B>
-<DD>create PPM image of two colors with a ragged border between them
+<dt><b><a href="ppmrough.html">ppmrough</a></b>
+<dd>create PPM image of two colors with a ragged border between them
 
-<DT><B><a href="pamcrater.html">pamcrater</a></B>
-<DD>create cratered terrain by fractal forgery
+<dt><b><a href="pamcrater.html">pamcrater</a></b>
+<dd>create cratered terrain by fractal forgery
 
-<DT><B><a href="ppmforge.html">ppmforge</a></B>
-<DD>fractal forgeries of clouds, planets, and starry skies
+<dt><b><a href="ppmforge.html">ppmforge</a></b>
+<dd>fractal forgeries of clouds, planets, and starry skies
 
-<DT><B><a href="pgmnoise.html">pgmnoise</a></B>
-<DD>create a PGM image of white noise
+<dt><b><a href="pgmnoise.html">pgmnoise</a></b>
+<dd>create a PGM image of white noise
 
-<DT><B><a href="pbmtext.html">pbmtext</a></B>
-<DD>render text into a PBM image
+<dt><b><a href="pbmtext.html">pbmtext</a></b>
+<dd>render text into a PBM image
 
-<DT><B><a href="pbmtextps.html">pbmtextps</a></B>
-<DD>render text into a PBM image using a Postscript interpreter
+<dt><b><a href="pbmtextps.html">pbmtextps</a></b>
+<dd>render text into a PBM image using a Postscript interpreter
 
-<DT><B><a href="pbmupc.html">pbmupc</a></B>
-<DD>create a Universal Product Code PBM image
+<dt><b><a href="pbmupc.html">pbmupc</a></b>
+<dd>create a Universal Product Code PBM image
 
-<DT><B><a href="pamstereogram.html">pamstereogram</a></B>
-<DD>create a single image stereogram from a height map
+<dt><b><a href="pamstereogram.html">pamstereogram</a></b>
+<dd>create a single image stereogram from a height map
 
-<DT><B><a href="pamsistoaglyph.html">pamsistoaglyph</a></B>
-<DD>convert a single-image stereogram to a red/cyan anaglyphic image
+<dt><b><a href="pamsistoaglyph.html">pamsistoaglyph</a></b>
+<dd>convert a single-image stereogram to a red/cyan anaglyphic image
 
-<DT><B><a href="ppmwheel.html">ppmwheel</a></B>
-<DD>generate a hue-value color wheel
+<dt><b><a href="ppmwheel.html">ppmwheel</a></b>
+<dd>generate a hue-value color wheel
 
-<DT><B><a href="ppmcie.html">ppmcie</a></B>
-<DD>generate a CIE color map PPM image
+<dt><b><a href="ppmcie.html">ppmcie</a></b>
+<dd>generate a CIE color map PPM image
 
-<DT><B><a href="pbmpage.html">pbmpage</a></B>
-<DD>create a printer test pattern page in PBM format
+<dt><b><a href="pbmpage.html">pbmpage</a></b>
+<dd>create a printer test pattern page in PBM format
 
-<DT><B><a href="pamseq.html">pamseq</a></B>
-<DD>create a PAM image of all possible tuple values.  E.g.
+<dt><b><a href="pamseq.html">pamseq</a></b>
+<dd>create a PAM image of all possible tuple values.  E.g.
 a color map containing all possible colors of given maxval
 
-<DT><B><a href="pamgauss.html">pamgauss</a></B>
-<DD>create a PAM image of a Gaussian (bell curve; normal curve) function.
+<dt><b><a href="pamgauss.html">pamgauss</a></b>
+<dd>create a PAM image of a Gaussian (bell curve; normal curve) function.
 
-<DT><B><a href="ppm3d.html">ppm3d</a></B>
-<DD>generate a blue/green 3D glasses image from two images
+<dt><b><a href="ppm3d.html">ppm3d</a></b>
+<dd>generate a blue/green 3D glasses image from two images
 
-</DL>
+</dl>
 
 
-<H2 id="editors">Image Editors</H2>
+<h2 id="editors">Image Editors</h2>
 
-<P>All of these work on the Netpbm formats
+<p>All of these work on the Netpbm formats
 
-<DL COMPACT>
-<DT><B><a href="pamdepth.html">pamdepth</a></B>
-<DD>change the maxval in an image
+<dl compact>
+<dt><b><a href="pamdepth.html">pamdepth</a></b>
+<dd>change the maxval in an image
 
-<DT><B><a href="pamscale.html">pamscale</a></B>
-<DD>scale/resample an image with high precision
+<dt><b><a href="pamscale.html">pamscale</a></b>
+<dd>scale/resample an image with high precision
 
-<DT><B><a href="pnmscalefixed.html">pnmscalefixed</a></B>
-<DD>scale an image quickly with low precision
+<dt><b><a href="pnmscalefixed.html">pnmscalefixed</a></b>
+<dd>scale an image quickly with low precision
 
-<DT><B><a href="pamstretch.html">pamstretch</a></B>
-<DD>scale up an image by inserting interpolated pixels
+<dt><b><a href="pamstretch.html">pamstretch</a></b>
+<dd>scale up an image by inserting interpolated pixels
 
-<DT><B><a href="pamstretch-gen.html">pamstretch-gen</a></B>
-<DD>scale by non-integer values using pamstretch and pamscale
+<dt><b><a href="pamstretch-gen.html">pamstretch-gen</a></b>
+<dd>scale by non-integer values using pamstretch and pamscale
 
-<DT><B><a href="pamenlarge.html">pamenlarge</a></B>
-<DD>enlarge an image N times
+<dt><b><a href="pamenlarge.html">pamenlarge</a></b>
+<dd>enlarge an image N times
 
-<DT><B><a href="pbmpscale.html">pbmpscale</a></B>
-<DD>enlarge a PBM image with edge smoothing
+<dt><b><a href="pbmpscale.html">pbmpscale</a></b>
+<dd>enlarge a PBM image with edge smoothing
 
-<DT><B><a href="pbmreduce.html">pbmreduce</a></B>
-<DD>reduce a PBM N times, using Floyd-Steinberg
+<dt><b><a href="pbmreduce.html">pbmreduce</a></b>
+<dd>reduce a PBM N times, using Floyd-Steinberg
 
-<DT><B><a href="pamcut.html">pamcut</a></B>
-<DD>select a rectangular region from an image
+<dt><b><a href="pamcut.html">pamcut</a></b>
+<dd>select a rectangular region from an image
 
-<DT><B><a href="pnmcrop.html">pnmcrop</a></B>
-<DD>crop all like-colored borders off an image
+<dt><b><a href="pnmcrop.html">pnmcrop</a></b>
+<dd>crop all like-colored borders off an image
 
-<DT><B><a href="pnmpad.html">pnmpad</a></B>
-<DD>add borders to an image
+<dt><b><a href="pnmpad.html">pnmpad</a></b>
+<dd>add borders to an image
 
-<DT><B><a href="pnmmargin.html">pnmmargin</a></B>
-<DD>add a margin to an image
+<dt><b><a href="pnmmargin.html">pnmmargin</a></b>
+<dd>add a margin to an image
 
-<DT><B><a href="pamflip.html">pamflip</a></B>
-<DD>perform one or more flip operations on an image
+<dt><b><a href="pamflip.html">pamflip</a></b>
+<dd>perform one or more flip operations on an image
 
-<DT><B><a href="pnmrotate.html">pnmrotate</a></B>
-<DD>rotate an image
+<dt><b><a href="pnmrotate.html">pnmrotate</a></b>
+<dd>rotate an image
 
-<DT><B><a href="pnmcat.html">pnmcat</a></B>
-<DD>concatenate images
+<dt><b><a href="pnmcat.html">pnmcat</a></b>
+<dd>concatenate images
 
-<DT><B><a href="pamcomp.html">pamcomp</a></B>
-<DD>create composite (overlay) of images
+<dt><b><a href="pamcomp.html">pamcomp</a></b>
+<dd>create composite (overlay) of images
 
-<DT><B><a href="pnmcomp.html">pnmcomp</a></B>
-<DD>obsolete version of <b><a href="pamcomp.html">pamcomp</a></B>
+<dt><b><a href="pnmcomp.html">pnmcomp</a></b>
+<dd>obsolete version of <b><a href="pamcomp.html">pamcomp</a></b>
 (kept because it may have fewer bugs)
 
-<DT><B><a href="pnmpaste.html">pnmpaste</a></B>
-<DD>paste a rectangle into an image
+<dt><b><a href="pnmpaste.html">pnmpaste</a></b>
+<dd>paste a rectangle into an image
 
-<DT><B><a href="pnmstitch.html">pnmstitch</a></B>
+<dt><b><a href="pnmstitch.html">pnmstitch</a></b>
 
-<DD>stitch together panoramic (side-by-side) photographs
+<dd>stitch together panoramic (side-by-side) photographs
 
-<DT><B><a href="pamarith.html">pamarith</a></B>
-<DD>apply simple arithmetic binary function to samples in two images
+<dt><b><a href="pamarith.html">pamarith</a></b>
+<dd>apply simple arithmetic binary function to samples in two images
 
-<DT><B><a href="pammixmulti.html">pammixmulti</a></B>
-<DD>mix multiple images.
+<dt><b><a href="pammixmulti.html">pammixmulti</a></b>
+<dd>mix multiple images.
 
-<DT><B><a href="ppmmix.html">ppmmix</a></B>
-<DD>mix (overlay) two images.
+<dt><b><a href="ppmmix.html">ppmmix</a></b>
+<dd>mix (overlay) two images.
 
-<DT><B><a href="pamfunc.html">pamfunc</a></B>
-<DD>apply simple arithmetic function to samples in an image
+<dt><b><a href="pamfunc.html">pamfunc</a></b>
+<dd>apply simple arithmetic function to samples in an image
 
-<DT><B><a href="pambrighten.html">pambrighten</a></B>
-<DD>brighten or dim an image -- change saturation and value
+<dt><b><a href="pambrighten.html">pambrighten</a></b>
+<dd>brighten or dim an image -- change saturation and value
 
-<DT><B><a href="ppmflash.html">ppmflash</a></B>
-<DD>brighten an image
+<dt><b><a href="ppmflash.html">ppmflash</a></b>
+<dd>brighten an image
 
-<DT><B><a href="pamaltsat.html">pamaltsat</a></B>
-<DD>change saturation of an image in alternative way
+<dt><b><a href="pamaltsat.html">pamaltsat</a></b>
+<dd>change saturation of an image in alternative way
 
-<DT><B><a href="ppmdim.html">ppmdim</a></B>
-<DD>dim an image - different way from pambrighten
+<dt><b><a href="ppmdim.html">ppmdim</a></b>
+<dd>dim an image - different way from pambrighten
 
-<DT><B><a href="ppmdist.html">ppmdist</a></B>
-<DD>map colors to high contrast grayscales arbitrarily
+<dt><b><a href="ppmdist.html">ppmdist</a></b>
+<dd>map colors to high contrast grayscales arbitrarily
 
-<DT><B><a href="pnmhisteq.html">pnmhisteq</a></B>
-<DD>histogram equalize image to increase contrast
+<dt><b><a href="pnmhisteq.html">pnmhisteq</a></b>
+<dd>histogram equalize image to increase contrast
 
-<DT><B><a href="pnmnorm.html">pnmnorm</a></B>
-<DD>normalize contrast (adjust levels)
+<dt><b><a href="pnmnorm.html">pnmnorm</a></b>
+<dd>normalize contrast (adjust levels)
 
-<DT><B><a href="pamlevels.html">pamlevels</a></B>
-<DD>adjust levels of color components
+<dt><b><a href="pamlevels.html">pamlevels</a></b>
+<dd>adjust levels of color components
 
-<DT><B><a href="pamrecolor.html">pamrecolor</a></B>
-<DD>alter colors without affecting luminance
+<dt><b><a href="pamrecolor.html">pamrecolor</a></b>
+<dd>alter colors without affecting luminance
 
-<DT><B><a href="ppmntsc.html">ppmntsc</a></B>
-<DD>adjust colors so they are legal for NTSC or PAL television
+<dt><b><a href="ppmntsc.html">ppmntsc</a></b>
+<dd>adjust colors so they are legal for NTSC or PAL television
 
-<DT><B><a href="pnminvert.html">pnminvert</a></B>
-<DD>invert an image (exchange black and white)
+<dt><b><a href="pnminvert.html">pnminvert</a></b>
+<dd>invert an image (exchange black and white)
 
-<DT><B><a href="pnmgamma.html">pnmgamma</a></B>
-<DD>perform gamma correction on an image
+<dt><b><a href="pnmgamma.html">pnmgamma</a></b>
+<dd>perform gamma correction on an image
 
-<DT><B><a href="ppmdither.html">ppmdither</a></B>
-<DD>ordered dither for color images
+<dt><b><a href="ppmdither.html">ppmdither</a></b>
+<dd>ordered dither for color images
 
-<DT><B><a href="pamditherbw.html">pamditherbw</a></B>
-<DD>dither a grayscale image to black and white (convert PGM to PBM)
+<dt><b><a href="pamditherbw.html">pamditherbw</a></b>
+<dd>dither a grayscale image to black and white (convert PGM to PBM)
 
-<DT><B><a href="pbmclean.html">pbmclean</a></B>
-<DD>remove lone pixels (snow) from a PBM image
+<dt><b><a href="pbmclean.html">pbmclean</a></b>
+<dd>remove lone pixels (snow) from a PBM image
 
-<DT><B><a href="pamthreshold.html">pamthreshold</a></B>
-<DD>threshold a grayscale image to black and white (convert PGM to PBM)
+<dt><b><a href="pamthreshold.html">pamthreshold</a></b>
+<dd>threshold a grayscale image to black and white (convert PGM to PBM)
 
-<DT><B><a href="pnmnlfilt.html">pnmnlfilt</a></B>
-<DD>filter an image by replacing each pixel with a function of nearby pixels
+<dt><b><a href="pnmnlfilt.html">pnmnlfilt</a></b>
+<dd>filter an image by replacing each pixel with a function of nearby pixels
 
-<DT><B><a href="pnmconvol.html">pnmconvol</a></B>
-<DD>general MxN convolution on an image.  Can blur an image.
+<dt><b><a href="pnmconvol.html">pnmconvol</a></b>
+<dd>general MxN convolution on an image.  Can blur an image.
 
-<DT><B><a href="pnmsmooth.html">pnmsmooth</a></B>
-<DD>smooth an image
+<dt><b><a href="pnmsmooth.html">pnmsmooth</a></b>
+<dd>smooth an image
 
-<DT><B><a href="pgmmedian.html">pgmmedian</a></B>
-<DD>apply a median filter to an image
+<dt><b><a href="pgmmedian.html">pgmmedian</a></b>
+<dd>apply a median filter to an image
 
-<DT><B><a href="pammasksharpen.html">pammasksharpen</a></B>
-<DD>sharpen an image via an unsharp mask
+<dt><b><a href="pammasksharpen.html">pammasksharpen</a></b>
+<dd>sharpen an image via an unsharp mask
 
-<DT><B><a href="pnmalias.html">pnmalias</a></B>
-<DD>antialias an image
+<dt><b><a href="pnmalias.html">pnmalias</a></b>
+<dd>antialias an image
 
-<DT><B><a href="pamedge.html">pamedge</a></B>
-<DD>edge-detect (outline) an image
+<dt><b><a href="pamedge.html">pamedge</a></b>
+<dd>edge-detect (outline) an image
 
-<DT><B><a href="ppmrelief.html">ppmrelief</a></B>
-<DD>run a Laplacian Relief filter on a PPM
+<dt><b><a href="ppmrelief.html">ppmrelief</a></b>
+<dd>run a Laplacian Relief filter on a PPM
 
-<DT><B><a href="pamshadedrelief.html">pamshadedrelief</a></B>
-<DD>generate shaded relief image from an elevation map
+<dt><b><a href="pamshadedrelief.html">pamshadedrelief</a></b>
+<dd>generate shaded relief image from an elevation map
 
-<DT><B><a href="pgmenhance.html">pgmenhance</a></B>
-<DD>edge-enhance a PGM image
+<dt><b><a href="pgmenhance.html">pgmenhance</a></b>
+<dd>edge-enhance a PGM image
 
-<DT><B><a href="pgmmorphconv.html">pgmmorphconv</a></B>
-<DD>perform morphological convolutions on a PGM image: dilation and erosion.
+<dt><b><a href="pgmmorphconv.html">pgmmorphconv</a></b>
+<dd>perform morphological convolutions on a PGM image: dilation and erosion.
 
-<DT><B><a href="pgmbentley.html">pgmbentley</a></B>
-<DD>bentleyize a PGM image
+<dt><b><a href="pgmbentley.html">pgmbentley</a></b>
+<dd>bentleyize a PGM image
 
-<DT><B><a href="pamoil.html">pamoil</a></B>
-<DD>turn a PNM or PAM image into an oil painting
+<dt><b><a href="pamoil.html">pamoil</a></b>
+<dd>turn a PNM or PAM image into an oil painting
 
-<DT><B><a href="ppmtv.html">ppmtv</a></B>
-<DD>make an image lined so it looks like an old TV
+<dt><b><a href="ppmtv.html">ppmtv</a></b>
+<dd>make an image lined so it looks like an old TV
 
-<DT><B><a href="ppmchange.html">ppmchange</a></B>
-<DD>change all of one color to another in PPM image
+<dt><b><a href="ppmchange.html">ppmchange</a></b>
+<dd>change all of one color to another in PPM image
 
-<DT><B><a href="pamhue.html">pamhue</a></B>
-<DD>shift all the hues in an image
+<dt><b><a href="pamhue.html">pamhue</a></b>
+<dd>shift all the hues in an image
 
-<DT><B><a href="pnmquant.html">pnmquant</a></B>
-<DD>quantize colors/shades in a color or grayscale image down to fewer
+<dt><b><a href="pnmquant.html">pnmquant</a></b>
+<dd>quantize colors/shades in a color or grayscale image down to fewer
 
-<DT><B><a href="pnmquantall.html">pnmquantall</a></B>
-<DD>quantize colors on many files
+<dt><b><a href="pnmquantall.html">pnmquantall</a></b>
+<dd>quantize colors on many files
 
-<DT><B><a href="pnmremap.html">pnmremap</a></B>
-<DD>replace colors in an image with those from a color map
+<dt><b><a href="pnmremap.html">pnmremap</a></b>
+<dd>replace colors in an image with those from a color map
 
-<DT><B><a href="pamlookup.html">pamlookup</a></B>
-<DD>map an image to a new image by using it as indices into a table
+<dt><b><a href="pamlookup.html">pamlookup</a></b>
+<dd>map an image to a new image by using it as indices into a table
 
-<DT><B><a href="pamunlookup.html">pamunlookup</a></B>
-<DD>inverse of <b>pamlookup</b> - generates the index image
+<dt><b><a href="pamunlookup.html">pamunlookup</a></b>
+<dd>inverse of <b>pamlookup</b> - generates the index image
 
-<DT><B><a href="ppmshift.html">ppmshift</a></B>
-<DD>shift lines of PPM image left or right a random amount
+<dt><b><a href="ppmshift.html">ppmshift</a></b>
+<dd>shift lines of PPM image left or right a random amount
 
-<DT><B><a href="ppmspread.html">ppmspread</a></B>
-<DD>move pixels of PPM image a random amount
+<dt><b><a href="ppmspread.html">ppmspread</a></b>
+<dd>move pixels of PPM image a random amount
 
-<DT><B><a href="pnmshear.html">pnmshear</a></B>
-<DD>shear an image
+<dt><b><a href="pnmshear.html">pnmshear</a></b>
+<dd>shear an image
 
-<DT><B><a href="pamrubber.html">pamrubber</a></B>
-<DD>rubber sheet deforming, distortion, stretching of an image
+<dt><b><a href="pamrubber.html">pamrubber</a></b>
+<dd>rubber sheet deforming, distortion, stretching of an image
 
-<DT><B><a href="pamaddnoise.html">pamaddnoise</a></B>
-<DD>add noise to an image
+<dt><b><a href="pamaddnoise.html">pamaddnoise</a></b>
+<dd>add noise to an image
 
-<DT><B><a href="pamwipeout.html">pamwipeout</a></B>
+<dt><b><a href="pamwipeout.html">pamwipeout</a></b>
 <dd>replace detail with smooth gradient from one edge to the other
 
-<DT><B><a href="pamperspective.html">pamperspective</a></B>
-<DD>change perspective distortion in an image
+<dt><b><a href="pamperspective.html">pamperspective</a></b>
+<dd>change perspective distortion in an image
 
-<DT><B><a href="pgmabel.html">pgmabel</a></B>
-<DD>create cross-section of an image using Abel integration for deconvolution
+<dt><b><a href="pgmabel.html">pgmabel</a></b>
+<dd>create cross-section of an image using Abel integration for deconvolution
 
-<DT><B><a href="pnmmercator.html">pnmmercator</a></B>
+<dt><b><a href="pnmmercator.html">pnmmercator</a></b>
 <dd>turn a rectangular projection map into a Mercator projection
 
-<DT><B><a href="ppmglobe.html">ppmglobe</a></B>
+<dt><b><a href="ppmglobe.html">ppmglobe</a></b>
 
-<DD>turn a cylindrical projection into strips that can be glued onto a sphere
+<dd>turn a cylindrical projection into strips that can be glued onto a sphere
 
-<DT><B><a href="pnmtile.html">pnmtile</a></B>
-<DD>replicate an image into a specified size
+<dt><b><a href="pnmtile.html">pnmtile</a></b>
+<dd>replicate an image into a specified size
 
-<DT><B><a href="pamdice.html">pamdice</a></B>
-<DD>slice an image into many horizontally and/or vertically
+<dt><b><a href="pamdice.html">pamdice</a></b>
+<dd>slice an image into many horizontally and/or vertically
 
-<DT><B><a href="pamundice.html">pamundice</a></B>
-<DD>assemble an image from tiles (opposite of <b>pamdice</b>)
+<dt><b><a href="pamundice.html">pamundice</a></b>
+<dd>assemble an image from tiles (opposite of <b>pamdice</b>)
 
-<DT><B><a href="ppmtorgb3.html">ppmtorgb3</a></B>
-<DD>separate a PPM into three PGMs
+<dt><b><a href="ppmtorgb3.html">ppmtorgb3</a></b>
+<dd>separate a PPM into three PGMs
 
-<DT><B><a href="rgb3toppm.html">rgb3toppm</a></B>
-<DD>combine three PGMs into one PPM
+<dt><b><a href="rgb3toppm.html">rgb3toppm</a></b>
+<dd>combine three PGMs into one PPM
 
-<DT><B><a href="pammixinterlace.html">pammixinterlace</a></B>
+<dt><b><a href="pammixinterlace.html">pammixinterlace</a></b>
 
-<DD>mix adjacent lines to merge interlaced images
+<dd>mix adjacent lines to merge interlaced images
 
-<DT><B><a href="pamdeinterlace.html">pamdeinterlace</a></B>
+<dt><b><a href="pamdeinterlace.html">pamdeinterlace</a></b>
 
-<DD>remove every other row from an image
+<dd>remove every other row from an image
 
-<DT><B><a href="ppmshadow.html">ppmshadow</a></B>
-<DD>add a shadow to an image so it looks like it's floating
+<dt><b><a href="ppmshadow.html">ppmshadow</a></b>
+<dd>add a shadow to an image so it looks like it's floating
 
-<DT><B><a href="pgmdeshadow.html">pgmdeshadow</a></B>
-<DD>deshadow a PGM image
+<dt><b><a href="pgmdeshadow.html">pgmdeshadow</a></b>
+<dd>deshadow a PGM image
 
-<DT><B><a href="ppmdraw.html">ppmdraw</a></B>
-<DD>draw text, lines, shapes, etc. on an image
+<dt><b><a href="ppmdraw.html">ppmdraw</a></b>
+<dd>draw text, lines, shapes, etc. on an image
 
-<DT><B><a href="ppmlabel.html">ppmlabel</a></B>
-<DD>add text to an image
+<dt><b><a href="ppmlabel.html">ppmlabel</a></b>
+<dd>add text to an image
 
-<DT><B><a href="pamtris.html">pamtris</a></B>
-<DD>triangle rasterizer
+<dt><b><a href="pamtris.html">pamtris</a></b>
+<dd>triangle rasterizer
 
-<DT><B><a href="pamsummcol.html">pamsummcol</a></B>
-<DD>summarize (sum, average, etc) an image by column
+<dt><b><a href="pamsummcol.html">pamsummcol</a></b>
+<dd>summarize (sum, average, etc) an image by column
 
-<DT><B><a href="ppmfade.html">ppmfade</a></B>
-<DD>produce series of images fading from one to another
+<dt><b><a href="ppmfade.html">ppmfade</a></b>
+<dd>produce series of images fading from one to another
 
-</DL>
+</dl>
 
 
-<H2 id="analyzers">Image Analyzers</H2>
+<h2 id="analyzers">Image Analyzers</h2>
 
-<P>
+<p>
 These all work on the Netpbm formats as input.
 
-<DL COMPACT>
+<dl compact>
 
-<DT><B><a href="pamfile.html">pamfile</a></B>
-<DD>describe an image's vital characteristics
+<dt><b><a href="pamfile.html">pamfile</a></b>
+<dd>describe an image's vital characteristics
 
-<DT><B><a href="pamtable.html">pamtable</a></B>
-<DD>print an image's raster in decimal
+<dt><b><a href="pamtable.html">pamtable</a></b>
+<dd>print an image's raster in decimal
 
-<DT><B><a href="pamslice.html">pamslice</a></B>
-<DD>print a row or column of an image in decimal
+<dt><b><a href="pamslice.html">pamslice</a></b>
+<dd>print a row or column of an image in decimal
 
-<DT><B><a href="pamfind.html">pamfind</a></B>
-<DD>tell where all tuples of a certain value are in an image
+<dt><b><a href="pamfind.html">pamfind</a></b>
+<dd>tell where all tuples of a certain value are in an image
 
-<DT><B><a href="pnmpsnr.html">pnmpsnr</a></B>
-<DD>measure difference between two images
+<dt><b><a href="pnmpsnr.html">pnmpsnr</a></b>
+<dd>measure difference between two images
 
-<DT><B><a href="pgmhist.html">pgmhist</a></B>
-<DD>print a histogram of the values in a PGM image
+<dt><b><a href="pgmhist.html">pgmhist</a></b>
+<dd>print a histogram of the values in a PGM image
 
-<DT><B><a href="ppmhist.html">ppmhist</a></B>
-<DD>print a histogram of a PPM
+<dt><b><a href="ppmhist.html">ppmhist</a></b>
+<dd>print a histogram of a PPM
 
-<DT><B><a href="pnmhistmap.html">pnmhistmap</a></B>
-<DD>draw a histogram of a PGM or PPM
+<dt><b><a href="pnmhistmap.html">pnmhistmap</a></b>
+<dd>draw a histogram of a PGM or PPM
 
-<DT><B><a href="pnmcolormap.html">pnmcolormap</a></B>
-<DD>choose the N best colors to represent an image; create a colormap
+<dt><b><a href="pnmcolormap.html">pnmcolormap</a></b>
+<dd>choose the N best colors to represent an image; create a colormap
 
-<DT><B><a href="pamsumm.html">pamsumm</a></B>
-<DD>summarize (sum, average, etc.) all samples in an image
+<dt><b><a href="pamsumm.html">pamsumm</a></b>
+<dd>summarize (sum, average, etc.) all samples in an image
 
-<DT><B><a href="pamgetcolor.html">pamgetcolor</a></B>
-<DD>display the average colors from specified regions in an image
+<dt><b><a href="pamgetcolor.html">pamgetcolor</a></b>
+<dd>display the average colors from specified regions in an image
 
-<DT><B><a href="pgmtexture.html">pgmtexture</a></B>
-<DD>calculate textural features on a PGM image
+<dt><b><a href="pgmtexture.html">pgmtexture</a></b>
+<dd>calculate textural features on a PGM image
 
-<DT><B><a href="pamsharpness.html">pamsharpness</a></B>
-<DD>measure the sharpness of an image
+<dt><b><a href="pamsharpness.html">pamsharpness</a></b>
+<dd>measure the sharpness of an image
 
-<DT><B><a href="pamsharpmap.html">pamsharpmap</a></B>
-<DD>create map of sharpness in an image
+<dt><b><a href="pamsharpmap.html">pamsharpmap</a></b>
+<dd>create map of sharpness in an image
 
-<DT><B><a href="pamtilt.html">pamtilt</a></B>
-<DD>measure the tilt of an image, i.e. document skew
+<dt><b><a href="pamtilt.html">pamtilt</a></b>
+<dd>measure the tilt of an image, i.e. document skew
 
-<DT><B><a href="pgmminkowski.html">pgmminkowski</a></B>
-<DD>compute Minkowski integral over a PGM image</DD>
+<dt><b><a href="pgmminkowski.html">pgmminkowski</a></b>
+<dd>compute Minkowski integral over a PGM image</dd>
 
-<DT><B><a href="pbmminkowski.html">pbmminkowski</a></B>
-<DD>compute Minkowski integral over a PBM image</DD>
+<dt><b><a href="pbmminkowski.html">pbmminkowski</a></b>
+<dd>compute Minkowski integral over a PBM image</dd>
 
-<DT><B><a href="pammosaicknit.html">pammosaicknit</a></B>
-<DD>validate a mosaic knitting pattern
+<dt><b><a href="pammosaicknit.html">pammosaicknit</a></b>
+<dd>validate a mosaic knitting pattern
 
-</DL>
+</dl>
 
 
-<H2 id="miscellaneous">Miscellaneous</H2>
+<h2 id="miscellaneous">Miscellaneous</h2>
 
-<DL COMPACT>
+<dl compact>
 
-<DT><B><a href="pamchannel.html">pamchannel</a></B>
-<DD>extract individual planes (channel, e.g. R, G, or B) from an image
+<dt><b><a href="pamchannel.html">pamchannel</a></b>
+<dd>extract individual planes (channel, e.g. R, G, or B) from an image
 
-<DT><B><a href="pamstack.html">pamstack</a></B>
-<DD>stack the planes of multiple PAM images into a single output image
+<dt><b><a href="pamstack.html">pamstack</a></b>
+<dd>stack the planes of multiple PAM images into a single output image
 
-<DT><B><a href="pampick.html">pampick</a></B>
-<DD>pick images out of a multi-image Netpbm image stream
+<dt><b><a href="pampick.html">pampick</a></b>
+<dd>pick images out of a multi-image Netpbm image stream
 
-<DT><B><a href="pamsplit.html">pamsplit</a></B>
-<DD>split a multi-image Netpbm file into multiple 1-image files
+<dt><b><a href="pamsplit.html">pamsplit</a></b>
+<dd>split a multi-image Netpbm file into multiple 1-image files
 
-<DT><B><a href="pamexec.html">pamexec</a></B>
-<DD>run a shell command on each image of a multi-image stream
+<dt><b><a href="pamexec.html">pamexec</a></b>
+<dd>run a shell command on each image of a multi-image stream
 
-<DT><B><a href="pamendian.html">pamendian</a></B>
-<DD>swap bytes in multi-byte samples of a PAM image
+<dt><b><a href="pamendian.html">pamendian</a></b>
+<dd>swap bytes in multi-byte samples of a PAM image
 
-<DT><B><a href="pamfix.html">pamfix</a></B>
+<dt><b><a href="pamfix.html">pamfix</a></b>
 <dd>salvage a Netpbm image whose file is truncated or has invalid sample values
 
-<DT><B><a href="pamvalidate.html">pamvalidate</a></B>
+<dt><b><a href="pamvalidate.html">pamvalidate</a></b>
 <dd>copy Netpbm image stream, if and only if entire stream is valid Netpbm.
 
-<DT><B><a href="pbmmask.html">pbmmask</a></B>
-<DD>create a mask bitmap from a regular bitmap
+<dt><b><a href="pbmmask.html">pbmmask</a></b>
+<dd>create a mask bitmap from a regular bitmap
 
-<DT><B><a href="ppmcolormask.html">ppmcolormask</a></B>
-<DD>create mask of areas of a certain color in an image
+<dt><b><a href="ppmcolormask.html">ppmcolormask</a></b>
+<dd>create mask of areas of a certain color in an image
 
-<DT><B><a href="pambackground.html">pambackground</a></B>
-<DD>create mask of the background of an image
+<dt><b><a href="pambackground.html">pambackground</a></b>
+<dd>create mask of the background of an image
 
-<DT><B><a href="pambayer.html">pambayer</a></B>
-<DD>interpret Bayer patterns
+<dt><b><a href="pambayer.html">pambayer</a></b>
+<dd>interpret Bayer patterns
 
-<DT><B><a href="pnmmontage.html">pnmmontage</a></B>
-<DD>build multiple Netpbm images into a single montage image
+<dt><b><a href="pnmmontage.html">pnmmontage</a></b>
+<dd>build multiple Netpbm images into a single montage image
 
-<DT><B><a href="pbmlife.html">pbmlife</a></B>
-<DD>apply Conway's rules of Life to a PBM image
+<dt><b><a href="pbmlife.html">pbmlife</a></b>
+<dd>apply Conway's rules of Life to a PBM image
 
-<DT><B><a href="pampop9.html">pampop9</a></B>
-<DD>simulate a multi-lens camera such as the Pop9
+<dt><b><a href="pampop9.html">pampop9</a></b>
+<dd>simulate a multi-lens camera such as the Pop9
 
-<DT><B><a href="ppmdmkfont.html">ppmdmkfont</a></B>
-<DD>create Ppmdfont "standard"
+<dt><b><a href="ppmdmkfont.html">ppmdmkfont</a></b>
+<dd>create Ppmdfont "standard"
 
-<DT><B><a href="ppmddumpfont.html">ppmddumpfont</a></B>
-<DD>dump a Ppmdfont file
+<dt><b><a href="ppmddumpfont.html">ppmddumpfont</a></b>
+<dd>dump a Ppmdfont file
 
-<DT><B><a href="ppmdcfont.html">ppmdcfont</a></B>
-<DD>turn a Ppmdfont file into C source for a builtin font
+<dt><b><a href="ppmdcfont.html">ppmdcfont</a></b>
+<dd>turn a Ppmdfont file into C source for a builtin font
 
-<DT><B><a href="pnmindex.html">pnmindex</a></B>
-<DD>build a visual index of a bunch of Netpbm images
+<dt><b><a href="pnmindex.html">pnmindex</a></b>
+<dd>build a visual index of a bunch of Netpbm images
 
-<DT><B><a href="pgmkernel.html">pgmkernel</a></B>
-<DD>generate a convolution kernel
+<dt><b><a href="pgmkernel.html">pgmkernel</a></b>
+<dd>generate a convolution kernel
 
-<DT><B><a href="ppmsvgalib.html">ppmsvgalib</a></B>
-<DD>display a PPM image on a Linux virtual console using Svgalib
+<dt><b><a href="ppmsvgalib.html">ppmsvgalib</a></b>
+<dd>display a PPM image on a Linux virtual console using Svgalib
 
-<DT><B><a href="pamx.html">pamx</a></B>
-<DD>display a Netpbm image in an X Window System window
+<dt><b><a href="pamx.html">pamx</a></b>
+<dd>display a Netpbm image in an X Window System window
 
-</DL>
+</dl>
 
 
-<H3 id="obsolete">Obsolete Names</H3>
+<h3 id="obsolete">Obsolete Names</h3>
 <p>There used to be programs by the following names.  Each has been either
 renamed to a more illustrative name, or superseded by a more general
 function.  In most cases, Netpbm is installed with symbolic links that allow
 old programs and procedures to use these names but run the replacement
 programs:
 
-<UL>
-<LI><B><a href="ppmtotga.html">ppmtotga</a></B>
-<LI><B><a href="pnmnoraw.html">pnmnoraw</a></B>
-<LI><B><a href="gemtopbm.html">gemtopbm</a></B>
-<LI><B><a href="pnminterp.html">pnminterp</a></B>
-<LI><B><a href="pgmoil.html">pgmoil</a></B>
-<LI><B><a href="ppmtojpeg.html">ppmtojpeg</a></B>
-<LI><B><a href="bmptoppm.html">bmptoppm</a></B>
-<LI><B><a href="pgmnorm.html">pgmnorm</a></B>
-<LI><B><a href="ppmnorm.html">ppmnorm</a></B>
-<LI><B><a href="pnmfile.html">pnmfile</a></B>
-<LI><B><a href="pnmarith.html">pnmarith</a></B>
-<LI><B><a href="pgmedge.html">pgmedge</a></B>
-<LI><B><a href="ppmtouil.html">ppmtouil</a></B>
-<LI><B><a href="pnmtoplainpnm.html">pnmtoplainpnm</a></B>
-<LI><B><a href="pnmflip.html">pnmflip</a></B>
-<LI><B><a href="pnmtofits.html">pnmtofits</a></B>
-<LI><B><a href="pnmtotiff.html">pnmtotiff</a></B>
-<LI><B><a href="pnmsplit.html">pnmsplit</a></B>
-<LI><B><a href="pnmdepth.html">pnmdepth</a></B>
-<LI><B><a href="pnmcut.html">pnmcut</a></B>
-<LI><B><a href="pnmscale.html">pnmscale</a></B>
-<LI><B><a href="pgmtopbm.html">pgmtopbm</a></B>
-<LI><B><a href="ppmtogif.html">ppmtogif</a></B>
-<LI><B><a href="pngtopnm.html">pngtopnm</a></B>
-<LI><B><a href="icontopbm.html">icontopbm</a></B>
-<LI><B><a href="pbmtoicon.html">pbmtoicon</a></B>
-<LI><B><a href="ppmquant.html">ppmquant</a></B>
-<LI><B><a href="ppmquantall.html">ppmquantall</a></B>
-<LI><B><a href="pamfixtrunc.html">pamfixtrunc</a></B>
-<LI><B><a href="pgmcrater.html">pgmcrater</a></B>
-<LI><B><a href="pamrgbatopng.html">pamrgbatopng</a></B>
-<LI><B><a href="pbmtox10bm.html">pbmtox10bm</a></B>
-<LI><B><a href="pgmslice.html">pgmslice</a></B>
-<LI><B><a href="pnmenlarge.html">pnmenlarge</a></B>
-<LI><B><a href="ppmtomap.html">ppmtomap</a></B>
-
-</UL>
+<ul>
+<li><b><a href="ppmtotga.html">ppmtotga</a></b>
+<li><b><a href="pnmnoraw.html">pnmnoraw</a></b>
+<li><b><a href="gemtopbm.html">gemtopbm</a></b>
+<li><b><a href="pnminterp.html">pnminterp</a></b>
+<li><b><a href="pgmoil.html">pgmoil</a></b>
+<li><b><a href="ppmtojpeg.html">ppmtojpeg</a></b>
+<li><b><a href="bmptoppm.html">bmptoppm</a></b>
+<li><b><a href="pgmnorm.html">pgmnorm</a></b>
+<li><b><a href="ppmnorm.html">ppmnorm</a></b>
+<li><b><a href="pnmfile.html">pnmfile</a></b>
+<li><b><a href="pnmarith.html">pnmarith</a></b>
+<li><b><a href="pgmedge.html">pgmedge</a></b>
+<li><b><a href="ppmtouil.html">ppmtouil</a></b>
+<li><b><a href="pnmtoplainpnm.html">pnmtoplainpnm</a></b>
+<li><b><a href="pnmflip.html">pnmflip</a></b>
+<li><b><a href="pnmtofits.html">pnmtofits</a></b>
+<li><b><a href="pnmtotiff.html">pnmtotiff</a></b>
+<li><b><a href="pnmsplit.html">pnmsplit</a></b>
+<li><b><a href="pnmdepth.html">pnmdepth</a></b>
+<li><b><a href="pnmcut.html">pnmcut</a></b>
+<li><b><a href="pnmscale.html">pnmscale</a></b>
+<li><b><a href="pgmtopbm.html">pgmtopbm</a></b>
+<li><b><a href="ppmtogif.html">ppmtogif</a></b>
+<li><b><a href="pngtopnm.html">pngtopnm</a></b>
+<li><b><a href="icontopbm.html">icontopbm</a></b>
+<li><b><a href="pbmtoicon.html">pbmtoicon</a></b>
+<li><b><a href="ppmquant.html">ppmquant</a></b>
+<li><b><a href="ppmquantall.html">ppmquantall</a></b>
+<li><b><a href="pamfixtrunc.html">pamfixtrunc</a></b>
+<li><b><a href="pgmcrater.html">pgmcrater</a></b>
+<li><b><a href="pamrgbatopng.html">pamrgbatopng</a></b>
+<li><b><a href="pbmtox10bm.html">pbmtox10bm</a></b>
+<li><b><a href="pgmslice.html">pgmslice</a></b>
+<li><b><a href="pnmenlarge.html">pnmenlarge</a></b>
+<li><b><a href="ppmtomap.html">ppmtomap</a></b>
+
+</ul>
 
 
 </body> </html>
diff --git a/faxformat.html b/faxformat.html
index cb5d710c..44b1ba58 100644
--- a/faxformat.html
+++ b/faxformat.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD><TITLE>Fax Formats</TITLE></HEAD>
-<BODY>
-<H1>Fax Formats</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Fax Formats</title></head>
+<body>
+<h1>Fax Formats</h1>
 Updated: 03 December 2008
-<BR>
+<br>
 
 <p>This page, part of the <a href="index.html">Netpbm user's guide</a>,
 describes FAX formats in relation to Netpbm facilities.
@@ -94,5 +94,5 @@ others.  These are particularly useful when you receive a fax as a TIFF file.
 <p><b>pamtotiff</b> can convert to any of these; you use command options
 to choose which.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/gemtopbm.html b/gemtopbm.html
index 402e4895..cb166161 100644
--- a/gemtopbm.html
+++ b/gemtopbm.html
@@ -1,20 +1,22 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD>
-<TITLE>Gemtopbm User Manual</TITLE>
-</HEAD><BODY>
-<H1>gemtopbm</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Gemtopbm User Manual</title></head>
+<body>
+<h1>gemtopbm</h1>
 Updated: May 2000
-<BR>
-<H2>NAME</H2>
-<B>gemtopbm</B> - replaced by gemtopnm
-<H2>DESCRIPTION</H2>
+
+<h2>NAME</h2>
+
+gemtopbm - replaced by gemtopnm
+
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
+
 <p><b>gemtopbm</b> was replaced in Netpbm 9.1 (May 2000) by 
 <b><a href="gemtopnm.html">gemtopnm</a></b>.
 
-<P><B>gemtopnm</b> is backward compatible with <b>gemtopbm</b>, but
+<p><b>gemtopnm</b> is backward compatible with <b>gemtopbm</b>, but
 works on color images as well.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/index.html b/index.html
index a7c8e20e..d16070aa 100644
--- a/index.html
+++ b/index.html
@@ -1,56 +1,56 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD><TITLE>User manual for Netpbm</TITLE></HEAD>
-<BODY>
-<H1>Netpbm</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html>
+<head><title>User manual for Netpbm</title></head>
+<body>
+<h1>Netpbm</h1>
 Updated: 31 January 2014
-<BR>
+<br>
 <?makeman .SH NAME ?>
 <?makeman netpbm - netpbm library overview ?>
 
-<H2 id="overview">Overview Of Netpbm</H2>
+<h2 id="overview">Overview Of Netpbm</h2>
 <?makeman .UN overview ?>
 
-<P><B>Netpbm</B> is a package of graphics programs and a programming
-library.  <P> There are over 220 separate programs in the package,
+<p><b>Netpbm</b> is a package of graphics programs and a programming
+library.  <p> There are over 220 separate programs in the package,
 most of which have "pbm", "pgm", "ppm",
 "pam", or "pnm" in their names.  For example,
-<B><a href="pamscale.html">pamscale</a></B> and <B><a
-href="giftopnm.html">giftopnm</a></B>.
+<b><a href="pamscale.html">pamscale</a></b> and <b><a
+href="giftopnm.html">giftopnm</a></b>.
 
-<P>For example, you might use <B>pamscale</B> to shrink an image by
-10%.  Or use <B>pamcomp</B> to overlay one image on top of another.
-Or use <B>pbmtext</B> to create an image of text.  Or reduce the number
-of colors in an image with <B>pnmquant</B>.
+<p>For example, you might use <b>pamscale</b> to shrink an image by
+10%.  Or use <b>pamcomp</b> to overlay one image on top of another.
+Or use <b>pbmtext</b> to create an image of text.  Or reduce the number
+of colors in an image with <b>pnmquant</b>.
 
 <p><b>Netpbm</b> is an open source software package, distributed via
 the <a href="http://sourceforge.net/projects/netpbm">Sourceforge 
 <b>netpbm</b> project</a>.
 
-<H2 id="index">Table Of Contents</H2>
-<UL>
-<LI><A HREF="#overview">Overview Of Netpbm</A>
-<LI><A HREF="#formats">The Netpbm Formats</A>
-<UL>
-  <LI><A HREF="#impconv">Implied Format Conversion</A>
-  <LI><A HREF="#transparency">Netpbm and Transparency</A>
-  </UL>
-<LI><A HREF="#programs">The Netpbm Programs</A>
-<UL>
-  <LI><A HREF="#commonoptions">Common Options</A>
-  <LI><A HREF="#directory">Directory</A>
-  <LI><A HREF="#prognotes">How To Use The Programs</A>
-  </UL>
-<LI><A HREF="#libnetpbm">The Netpbm Library</A>
-<LI><A HREF="#config">netpbm-config</A>
+<h2 id="index">Table Of Contents</h2>
+<ul>
+<li><a href="#overview">Overview Of Netpbm</a>
+<li><a href="#formats">The Netpbm Formats</a>
+<ul>
+  <li><a href="#impconv">Implied Format Conversion</a>
+  <li><a href="#transparency">Netpbm and Transparency</a>
+  </ul>
+<li><a href="#programs">The Netpbm Programs</a>
+<ul>
+  <li><a href="#commonoptions">Common Options</a>
+  <li><a href="#directory">Directory</a>
+  <li><a href="#prognotes">How To Use The Programs</a>
+  </ul>
+<li><a href="#libnetpbm">The Netpbm Library</a>
+<li><a href="#config">netpbm-config</a>
 <li><a href="#memoryusage">Memory Usage</a>
 <li><a href="#cpuusage">CPU Usage</a>
-<LI><A HREF="#netpbmforgimp">Netpbm For Gimp</A>
-<LI><A HREF="#companion">Companion Software</A>
+<li><a href="#netpbmforgimp">Netpbm For Gimp</a>
+<li><a href="#companion">Companion Software</a>
 <ul>
-  <LI><A HREF="#phpnetpbm">PHP-NetPBM</A>
+  <li><a href="#phpnetpbm">PHP-NetPBM</a>
   </ul>
-<LI><A HREF="#othersoftware">Other Graphics Software</A>
+<li><a href="#othersoftware">Other Graphics Software</a>
 <ul>
   <li><a href="#viewers">Image Viewers</a>
   <li><a href="#capturers">Image Capturers</a>
@@ -60,14 +60,14 @@ the <a href="http://sourceforge.net/projects/netpbm">Sourceforge
   <li><a href="#document">Document/Graphics Software</a>
   <li><a href="#otherothersoftware">Other</a>
   </ul>
-<LI><A HREF="#otherfmt">Other Graphics Formats</A>
-<LI><A HREF="#history">History</A>
-<LI><A HREF="#author">Author</A>
-</UL>
+<li><a href="#otherfmt">Other Graphics Formats</a>
+<li><a href="#history">History</a>
+<li><a href="#author">Author</a>
+</ul>
 
-<H2 id="programs">The Netpbm Programs</H2>
+<h2 id="programs">The Netpbm Programs</h2>
 
-<P>The Netpbm programs are generally useful run by a person from a
+<p>The Netpbm programs are generally useful run by a person from a
 command shell, but are also designed to be used by programs.  A common
 characteristic of Netpbm programs is that they are simple, fundamental
 building blocks.  They are most powerful when stacked in pipelines.
@@ -76,50 +76,50 @@ input from a user.  The only programs that display graphics at all are
 the very primitive display programs <b>pamx</b> and <b>ppmsvgalib</b>,
 and they don't do anything but that.
 
-<P>Each of these programs has its own manual, as linked in the
+<p>Each of these programs has its own manual, as linked in the
 directory below.
 
-<P>The Netpbm programs can read and write files greater than 2 GiB wherever
+<p>The Netpbm programs can read and write files greater than 2 GiB wherever
 the underlying system can.  There may be exceptions where the programs use
 external libraries (The JPEG library, etc.) to access files and the external
 library does not have large file capability.  Before Netpbm 10.15 (April
 2003), no Netpbm program could read a file that large.
 
-<H3 id="commonoptions">Common Options</H3>
+<h3 id="commonoptions">Common Options</h3>
 
-<P>
+<p>
 There are a few options that are present on all programs that are based
 on the Netpbm library, including virtually all Netpbm programs.  These
 are not mentioned in the individual manuals for the programs.
 
 <p>You can use two hyphens instead of one on these options if you like.
 
-<DL COMPACT>
+<dl compact>
 
-<DT><B>-quiet</B>
+<dt><b>-quiet</b>
 
-<DD> Suppress all informational messages that would otherwise be
+<dd> Suppress all informational messages that would otherwise be
 issued to Standard Error.  (To be precise, this only works to the
 extent that the program in question implements the Netpbm convention
-of issuing all informational messages via the <B>pm_message()</B>
+of issuing all informational messages via the <b>pm_message()</b>
 service of the Netpbm library).
 
-<DT><B>-version</B>
+<dt><b>-version</b>
 
-<DD>Instead of doing anything else, report the version of the
-<B>libnetpbm</B> library linked with the program (it may have been
+<dd>Instead of doing anything else, report the version of the
+<b>libnetpbm</b> library linked with the program (it may have been
 linked statically into the program, or dynamically linked at run
 time).  Normally, the Netpbm programs and the library are installed
 at the same time, so this tells you the version of the program and all
 the other Netpbm files it uses as well.
 
-<DT><B>-plain</b>
+<dt><b>-plain</b>
 
-<DD>If the program generates an image in PNM format, generate it in the
+<dd>If the program generates an image in PNM format, generate it in the
 "plain" (aka "ascii") version of the format, as opposed to the "raw" (aka
 "binary") version.
 
-<P>Note that the other Netpbm format, PAM, does not have plain and raw
+<p>Note that the other Netpbm format, PAM, does not have plain and raw
 versions, so this option has no effect on a program that generates PAM output.
 
 <p>
@@ -128,39 +128,39 @@ This option was introduced in Netpbm 10.10 (October 2002).  From Netpbm 10.32
 a program that generates PAM output (instead of ignoring the option, the
 program fails).
      
-</DL>
+</dl>
 
-<H3 id="directory">Directory</H3>
-<P>Here is a complete list of all the Netpbm programs (with links to
+<h3 id="directory">Directory</h3>
+<p>Here is a complete list of all the Netpbm programs (with links to
 their manuals):
 
 <p>
 <a href="directory.html">Netpbm program directory</a>
 
 
-<H3 id="prognotes">How To Use The Programs</H3>
+<h3 id="prognotes">How To Use The Programs</h3>
 
-<P>
+<p>
 As a collection of primitive tools, the power of Netpbm is multiplied
 by the power of all the other unix tools you can use with them.  These
 notes remind you of some of the more useful ways to do this.  Often,
 when people want to add high level functions to the Netpbm tools, they
 have overlooked some existing tool that, in combination with Netpbm,
 already does it.
-<P>
+<p>
 Often, you need to apply some conversion or edit to a whole bunch of files.
-<P>
+<p>
 As a rule, Netpbm programs take one input file and produce one output file,
 usually on Standard Output.  This is for flexibility, since you so often 
 have to pipeline many tools together.
-<P>
+<p>
 Here is an example of a shell command to convert all your of PNG files
 (named *.png) to JPEG files named *.jpg:
 <pre>
 for i in *.png; do pngtopam $i | ppmtojpeg &gt;`basename $i .png`.jpg; done
 </pre>
 
-<P>
+<p>
 Or you might just generate a stream of individual shell commands, one
 per file, with awk or perl.  Here's how to brighten 30 YUV images that
 make up one second of a movie, keeping the images in the same files:
@@ -174,38 +174,38 @@ ls *.yuv
    | sh
 </pre>
 
-<P>The tools <B>find</B> (with the <B>-exec</B> option) and 
-<B>xargs</B> are also useful for simple manipulation of groups of files.
+<p>The tools <b>find</b> (with the <b>-exec</b> option) and 
+<b>xargs</b> are also useful for simple manipulation of groups of files.
 
-<P>
+<p>
 Some shells' "process substitution" facility can help where a
 non-Netpbm program expects you to identify a disk file for input and
 you want it to use the result of a Netpbm manipulation.  Say
 the hypothetical program <b>printcmyk</b>
 takes the filename of a Tiff CMYK file as input and what you have is a
 PNG file 
-<B>abc.png</B>.
+<b>abc.png</b>.
 
 Try:
 <pre>
 printcmyk &lt;({ pngtopam abc.png | pnmtotiffcmyk ; })
 </pre>
 
-<P>It works in the other direction too, if you have a program that
+<p>It works in the other direction too, if you have a program that
 makes you name its output file and you want the output to go through a
 Netpbm tool.
 
 
-<H2 id="formats">The Netpbm Formats</H2>
+<h2 id="formats">The Netpbm Formats</h2>
 
-<P>
+<p>
 All of the programs work with a set of graphics formats called the 
 "netpbm" formats.  Specifically, these formats are
-<A HREF="pbm.html">pbm</A>,
-<A HREF="pgm.html">pgm</A>,
-<A HREF="ppm.html">ppm</A>,
+<a href="pbm.html">pbm</a>,
+<a href="pgm.html">pgm</a>,
+<a href="ppm.html">ppm</a>,
 and
-<A HREF="pam.html">pam</A>.
+<a href="pam.html">pam</a>.
 
 The first three of these are sometimes known generically as
 "pnm".
@@ -217,7 +217,7 @@ combination of Netpbm programs to convert from one non-Netpbm format
 to another non-Netpbm format.  Netpbm has converters for about 100
 graphics formats, and as a package Netpbm lets you do more graphics
 format conversions than any other computer graphics facility.
-<P>
+<p>
 The Netpbm formats are all raster formats, i.e. they describe an image
 as a matrix of rows and columns of pixels.  In the PBM format, the
 pixels are black and white.  In the PGM format, pixels are shades of
@@ -226,28 +226,28 @@ is more sophisticated.  A replacement for all three of the other formats,
 it can represent matrices of general data including but not limited to
 black and white, grayscale, and color images.
 
-<P>
+<p>
 Programs designed to work with PBM images have "pbm" in their names.
 Programs designed to work with PGM, PPM, and PAM images similarly have
 "pgm", "ppm", and "pam" in their names.
 
-<P>
+<p>
 All Netpbm programs designed to read PGM images see PBM images as if
 they were PGM too.  All Netpbm programs designed to read PPM images
 see PGM and PBM images as if they were PPM.  See <a href="#impconv">
 Implied Format Conversion</a>.
 
-<P> Programs that have "pnm" in their names read PBM, PGM,
+<p> Programs that have "pnm" in their names read PBM, PGM,
 and PPM but unlike "ppm" programs, they distinguish between
-those formats and their function depends on the format.  For example, <B><a
-href="pnmtopng.html">pnmtopng</a></B> creates a black and white PNG
+those formats and their function depends on the format.  For example, <b><a
+href="pnmtopng.html">pnmtopng</a></b> creates a black and white PNG
 output image if its input is PBM or PGM, but a color PNG output image
-if its input is PPM.  And <B>pnmrotate</B> produces an output image of
-the same format as the input.  A hypothetical <B>ppmrotate</B> program
+if its input is PPM.  And <b>pnmrotate</b> produces an output image of
+the same format as the input.  A hypothetical <b>ppmrotate</b> program
 would also read all three PNM input formats, but would see them all as
 PPM and would always generate PPM output.
 
-<P>Programs that have "pam" in their names read all the Netpbm
+<p>Programs that have "pam" in their names read all the Netpbm
 formats: PBM, PGM, PPM, and PAM.  They sometimes treat them all as if
 they are PAM, using an implied conversion, but often they recognize
 the individual formats and behave accordingly, like a "pnm" program
@@ -259,22 +259,22 @@ PBM, PGM, and/or PPM see those PAM images as if they were the former.
 For example, <b>ppmhist</b> can analyze a PAM image of tuple type
 RGB (i.e. a color image) as if it were PPM.
 
-<P> If it seems wasteful to you to have three separate PNM formats, be
+<p> If it seems wasteful to you to have three separate PNM formats, be
 aware that there is a historical reason for it.  In the beginning,
 there were only PBMs.  PGMs came later, and then PPMs.  Much later
 came PAM, which realizes the possibility of having just one aggregate
 format.
 
-<P>The formats are described in the specifications of
-<B><A HREF="pbm.html">pbm</A></B>,
-<B><A HREF="pgm.html">pgm</A></B>,
-<B><A HREF="ppm.html">ppm</A></B>,
+<p>The formats are described in the specifications of
+<b><a href="pbm.html">pbm</a></b>,
+<b><a href="pgm.html">pgm</a></b>,
+<b><a href="ppm.html">ppm</a></b>,
 and
-<B><A HREF="pam.html">pam</A></B>.
+<b><a href="pam.html">pam</a></b>.
 
-<H3 id="impconv">Implied Format Conversion</H3>
+<h3 id="impconv">Implied Format Conversion</h3>
 
-<P>A program that uses the PGM library subroutines to read an image
+<p>A program that uses the PGM library subroutines to read an image
 can read a PBM image as well as a PGM image.  The program sees the PBM
 image as if it were the equivalent PGM image, with a maxval of 255.
 <strong>note:</strong> This sometimes confuses people who are looking
@@ -282,13 +282,13 @@ at the formats at a lower layer than they ought to be because a zero
 value in a PBM raster means white, while a zero value in a PGM raster
 means black.
 
-<P>A program that uses the PPM library subroutines to read an image
+<p>A program that uses the PPM library subroutines to read an image
 can read a PGM image as well as a PPM image and a PBM image as well as
 a PGM image.  The program sees the PBM or PGM image as if it were the
 equivalent PPM image, with a maxval of 255 in the PBM case and the
 same maxval as the PGM in the PGM case.
 
-<P>A program that uses the PAM library subroutines to read an image
+<p>A program that uses the PAM library subroutines to read an image
 can read a PBM, PGM, or PPM image as well as a PAM image.  The program
 sees a PBM image as if it were the equivalent PAM image with tuple
 type <b>BLACKANDWHITE</b>.  It sees a PGM image as if it were the
@@ -311,22 +311,22 @@ reading PAM.  There is nothing similar for PBM, so if you need for a
 PBM program to read a PAM image, run it through <b>pamtopnm</b>.
 
 
-<H3 id="transparency">Netpbm and Transparency</H3>
+<h3 id="transparency">Netpbm and Transparency</h3>
 
-<P>In many graphics formats, there's a means of indicating that certain
+<p>In many graphics formats, there's a means of indicating that certain
 parts of the image are wholly or partially transparent, meaning that
 if it were displayed "over" another image, the other image
 would show through there.  Netpbm formats deliberately omit that
 capability, since their purpose is to be extremely simple.
 
-<P>In Netpbm, you handle transparency via a transparency mask in a
+<p>In Netpbm, you handle transparency via a transparency mask in a
 separate (slightly redefined) PGM image.  In this pseudo-PGM, what
 would normally be a pixel's intensity is instead an opaqueness value.
-See <B><A HREF="pgm.html">pgm</A></B>.  <B><a
-href="pamcomp.html">pamcomp</a></B> is an example of a program that uses
+See <b><a href="pgm.html">pgm</a></b>.  <b><a
+href="pamcomp.html">pamcomp</a></b> is an example of a program that uses
 a PGM transparency mask.
 
-<P>Another means of representing transparency information has recently
+<p>Another means of representing transparency information has recently
 developed in Netpbm, using PAM images.  In spite of the argument given
 above that Netpbm formats should be too simple to have transparency
 information built in, it turns out to be extremely inconvenient to
@@ -345,20 +345,20 @@ information.  See <a href="pam.html">the PAM specification</a>.
 
 
 
-<H2 id="libnetpbm">The Netpbm Library</H2>
+<h2 id="libnetpbm">The Netpbm Library</h2>
 
-<P>The Netpbm programming library, <B><a
-href="libnetpbm.html">libnetpbm</a></B>, makes it easy to write programs
+<p>The Netpbm programming library, <b><a
+href="libnetpbm.html">libnetpbm</a></b>, makes it easy to write programs
 that manipulate graphic images.  Its main function is to read and
 write files in the Netpbm formats, and because the Netpbm package
 contains converters for all the popular graphics formats, if your
 program reads and writes the Netpbm formats, you can use it with any
 formats.
 
-<P>
+<p>
 But the library also contain some utility functions, such as character
 drawing and RGB/YCrCb conversion.
-<P>
+<p>
 The library has the conventional C linkage.  Virtually all programs
 in the Netpbm package are based on the Netpbm library.
 
@@ -510,9 +510,9 @@ image that approximates a grayscale image).
 "unsigned int" size integers to work with them.
 
 
-<H2 id="netpbmforgimp">Netpbm For Gimp</H2>
+<h2 id="netpbmforgimp">Netpbm For Gimp</h2>
 
-<P>The Gimp is a visual image editor for Unix and X, so it does the kinds
+<p>The Gimp is a visual image editor for Unix and X, so it does the kinds
 of things that Netpbm does, but interactively in a user-friendly way.
 The Gimp knows a variety of graphics file formats and image transformations,
 but you can extend it with plugins.
@@ -552,18 +552,18 @@ at it and was unable to make sense of it.  Some documentation is in
 fractured English and other is in an unusual character set.  But a PHP
 expert might be able to figure it out and get some use out of it.
 
-<H2 id="othersoftware">Other Graphics Software</H2>
+<h2 id="othersoftware">Other Graphics Software</h2>
 
-<P>Netpbm contains primitive building blocks.  It certainly is not a
+<p>Netpbm contains primitive building blocks.  It certainly is not a
 complete graphics software library.
 
 <h3 id="othercmdline">Command Line Programs</h3>
 
-<P><B>ImageMagick</B> does many of the same things &mdash; mainly the more
+<p><b>ImageMagick</b> does many of the same things &mdash; mainly the more
 popular ones &mdash; that Netpbm does, including conversion between popular
 formats and basic editing.  <b>convert</b>, <b>mogrify</b>, <b>montage</b>, and
-<b>animate</b> are popular programs from the <B>ImageMagick</B>
-package.  <B>ImageMagick</B> runs on Unix, Windows, Windows NT, Macintosh, and
+<b>animate</b> are popular programs from the <b>ImageMagick</b>
+package.  <b>ImageMagick</b> runs on Unix, Windows, Windows NT, Macintosh, and
 VMS.
 
 <p><b>ImageMagick</b> also contains the program <b>display</b>, which is a
@@ -571,20 +571,20 @@ VMS.
 
 <h3 id="viewers">Image Viewers</h3>
 
-<P>The first thing you will want to make use of any of these tools is a
-viewer.  (On GNU/Linux, you can use Netpbm's <b>pamx</b> or <B>ppmsvgalib</B>
-in a pinch, but it is pretty limiting).  <B>zgv</B> is a good full service
+<p>The first thing you will want to make use of any of these tools is a
+viewer.  (On GNU/Linux, you can use Netpbm's <b>pamx</b> or <b>ppmsvgalib</b>
+in a pinch, but it is pretty limiting).  <b>zgv</b> is a good full service
 viewer to use on a GNU/Linux system with the SVGALIB graphics display driver
-library.  You can find <B>zgv</B>
-at <B><A HREF="ftp://ftp.ibiblio.org/pub/Linux/apps/graphics/viewers/svga">ftp://ftp.ibiblio.org/pub/Linux/apps/graphics/viewers/svga</A>.</B>
+library.  You can find <b>zgv</b>
+at <b><a href="ftp://ftp.ibiblio.org/pub/Linux/apps/graphics/viewers/svga">ftp://ftp.ibiblio.org/pub/Linux/apps/graphics/viewers/svga</a>.</b>
 
-<P><B>zgv</B> even has a feature in it wherein you can visually crop
+<p><b>zgv</b> even has a feature in it wherein you can visually crop
 an image and write an output file of the cropped image using
-<B><a href="pamcut.html">pamcut</a></B>.
+<b><a href="pamcut.html">pamcut</a></b>.
 
-See the <B>-s</B> option to <B>zgv</B>.
+See the <b>-s</b> option to <b>zgv</b>.
 
-<P>For the X inclined, there is also <B>xzgv</B>.
+<p>For the X inclined, there is also <b>xzgv</b>.
 
 <p><b>xwud</b> (X Window Undump) is a classic application program in the X
 Window System that displays an image in an X window.  It takes the special X
@@ -592,19 +592,19 @@ Window Dump format as input; you can use
 Netpbm's <a href="pnmtoxwd.html"><b>pnmtoxwd</b></a> to create it.  You're
 probably better off just using Netpbm's <a href="pamx.html"><b>pamx</b></a>.
 
-<P><B>xloadimage</B> and its extension <B>xli</B> are also common
+<p><b>xloadimage</b> and its extension <b>xli</b> are also common
 ways to display a graphic image in X.
 
 <p><b>gqview</b> is a more modern X-based image viewer.
 
 <p><b>qiv</b> is a small, very fast viewer for X.
 
-<P>To play mpeg movies, such as produced by <B>ppmtompeg</B>,
+<p>To play mpeg movies, such as produced by <b>ppmtompeg</b>,
 try <b><a href="http://www.mplayerhq.hu/design7/info.html">mplayer</a></b> or
 <b><a href="http://sourceforge.net/projects/xine">xine</a>.</b>
 
-<p>See <B><A
-HREF="ftp://metalab.unc.edu/pub/Linux/apps/graphics/viewers/X">ftp://metalab.unc.edu/pub/Linux/apps/graphics/viewers/X</A></B>.
+<p>See <b><a
+href="ftp://metalab.unc.edu/pub/Linux/apps/graphics/viewers/X">ftp://metalab.unc.edu/pub/Linux/apps/graphics/viewers/X</a></b>.
 
 <h3 id="capturers">Image Capturers</h3>
 
@@ -629,16 +629,16 @@ This is fundamentally different from what Netpbm programs do.
 Unix world.  It does not have much in the way of current support,
 or maintenance, though.
 
-<P>Gimp is a visual image editor for Unix and the X Window System, in the same
+<p>Gimp is a visual image editor for Unix and the X Window System, in the same
 category as the more famous, less capable, and much more expensive Adobe
 Photoshop, etc. for Windows.
-See <B><A HREF="http://www.gimp.org">http://www.gimp.org</A></B>.  And you can
+See <b><a href="http://www.gimp.org">http://www.gimp.org</a></b>.  And you can
 add most of Netpbm's function to Gimp
 using <a href="http://netpbm2gimp.sourceforge.net/">Netpbm2gimp</a>.
 
 <p><b>ImageMagick</b> contains the program <b>display</b>, which is another
 visual image editor.  It has fewer functions than Gimp.  This program uses the
-X Window System.  The package also contains <a href="othercmdline">command
+X Window System.  The package also contains <a href="#othercmdline">command
 line</a> graphics programs.
 
 <p>Electric Eyes, <b>kuickshow</b>, and <b>gthumb</b> are also visual
@@ -647,7 +647,7 @@ are specifically for KDE.
 
 <h3 id="programmingtools">Programming Tools</h3>
 
-<P>If you're writing a program in C to draw and manipulate images, check out
+<p>If you're writing a program in C to draw and manipulate images, check out
 <a href="http://www.boutell.com/gd">gd</a>.  Netpbm contains a C library for
 drawing images (<b>libnetpbm</b>'s "ppmd" routines), but it is
 probably not as capable or documented as <b>gd</b>.  You can easily run any
@@ -657,14 +657,14 @@ functions that do the same thing.
 
 <p><a href="http://cairographics.org/">Cairo</a> is similar.
 
-<P><B>Ilib</B> is a C subroutine library with functions for adding
+<p><b>Ilib</b> is a C subroutine library with functions for adding
 text to an image (as you might do at a higher level with
-<B>pbmtext</B>, <B>pamcomp</B>, etc.).  It works with Netpbm input and
-output.  Find it at <B><A
-HREF="http://www.k5n.us/Ilib.php">k5n.us</A></B>.
-Netpbm also includes character drawing functions in the <B><a
-href="libnetpbm.html">libnetpbm</a></B> library, but they do not have as
-fancy font capabilities (see <B><a href="ppmdraw.html">ppmdraw</a></B>
+<b>pbmtext</b>, <b>pamcomp</b>, etc.).  It works with Netpbm input and
+output.  Find it at <b><a
+href="http://www.k5n.us/Ilib.php">k5n.us</a></b>.
+Netpbm also includes character drawing functions in the <b><a
+href="libnetpbm.html">libnetpbm</a></b> library, but they do not have as
+fancy font capabilities (see <b><a href="ppmdraw.html">ppmdraw</a></b>
 for an example of use of the Netpbm character drawing functions).
 
 <p><a href="http://www.pango.org/">Pango</a> is another text rendering
@@ -672,7 +672,7 @@ library, with an emphasis on internationalization.
 
 <p>Pango and Cairo complement each other and work well together.
 
-<P><B>GD</B> is a library of graphics routines that is part of PHP.
+<p><b>GD</b> is a library of graphics routines that is part of PHP.
 It has a subset of Netpbm's functions and has been found to resize
 images more slowly and with less quality.
 
@@ -687,24 +687,24 @@ building block simplicity.
 <p><a href="http://mjpeg.sourceforge.net"><b>MJPEGTools</b></a> is software
 for dealing with the MJPEG movie format.
 
-<P>To create an animated GIF, or extract a frame from one, use
-<B>gifsicle</B>.  <B>gifsicle</B> converts between animated GIF and
-still GIF, and you can use <B>pamtogif</B> and <B>giftopnm</B> to
-connect up to all the Netpbm utilities.  See <B><A
-HREF="http://www.lcdf.org/gifsicle">http://www.lcdf.org/gifsicle</A></B>.
+<p>To create an animated GIF, or extract a frame from one, use
+<b>gifsicle</b>.  <b>gifsicle</b> converts between animated GIF and
+still GIF, and you can use <b>pamtogif</b> and <b>giftopnm</b> to
+connect up to all the Netpbm utilities.  See <b><a
+href="http://www.lcdf.org/gifsicle">http://www.lcdf.org/gifsicle</a></b>.
 
-<P>To convert an image of text to text (optical character recognition
-- OCR), use <B>gocr</B> (think of it as an inverse of <B>pbmtext</B>).
-See <B> <a
+<p>To convert an image of text to text (optical character recognition
+- OCR), use <b>gocr</b> (think of it as an inverse of <b>pbmtext</b>).
+See <b> <a
 href="http://jocr.sourceforge.net/">http://jocr.sourceforge.net/</a></b>.
 
-<P><B><A HREF="http://schaik.com/pngsuite">http://schaik.com/pngsuite</A></B>
+<p><b><a href="http://schaik.com/pngsuite">http://schaik.com/pngsuite</a></b>
 contains a PNG test suite -- a whole bunch of PNG images exploiting the
 various features of the PNG format.
 
-<P>Other versions of Netpbm's <B>pnmtopng</B>/<B>pngtopam</B> are at
-<A HREF="http://www.schaik.com/png/pnmtopng.html">
-http://www.schaik.com/png/pnmtopng.html</A>.
+<p>Other versions of Netpbm's <b>pnmtopng</b>/<b>pngtopam</b> are at
+<a href="http://www.schaik.com/png/pnmtopng.html">
+http://www.schaik.com/png/pnmtopng.html</a>.
 
 <p>The version in Netpbm was actually based on that package a long time
 ago, and you can expect to find better exploitation of the PNG format,
@@ -716,41 +716,41 @@ Netpbm format enhancements, though.
 C++ library for creating PNG images.  With it, you plot an image pixel
 by pixel.  You can also render text with the FreeType2 library.
 
-<P><B>jpegtran</B> Does some of the same transformations as Netpbm is
+<p><b>jpegtran</b> Does some of the same transformations as Netpbm is
 famous for, but does them specifically on JPEG files and does them
 without loss of information.  By contrast, if you were to use Netpbm,
 you would first decompress the JPEG image to Netpbm format, then
 transform the image, then compress it back to JPEG format.  In that
 recompression, you lose a little image information because JPEG is a
 lossy compression.  Of course, only a few kinds of lossless
-transformation are possible.  <B>jpegtran</B> comes with the
-Independent JPEG Group's (<A
-HREF="http://www.ijg.org">http://www.ijg.org)</A> JPEG library.
+transformation are possible.  <b>jpegtran</b> comes with the
+Independent JPEG Group's (<a
+href="http://www.ijg.org">http://www.ijg.org)</a> JPEG library.
 
-<P> Some tools to deal with EXIF files (see also Netpbm's <B><a
-href="jpegtopnm.html">jpegtopnm</a></B> and <B><a
-href="pnmtojpeg.html">pnmtojpeg</a></B>):
+<p> Some tools to deal with EXIF files (see also Netpbm's <b><a
+href="jpegtopnm.html">jpegtopnm</a></b> and <b><a
+href="pnmtojpeg.html">pnmtojpeg</a></b>):
 
-To dump (interpret) an EXIF header: Exifdump ((<A
-HREF="http://www.math.u-psud.fr/~bousch/exifdump.py">http://www.math.u-psud.fr/~bousch/exifdump.py)</A>)
-or <A HREF="http://www.sentex.net/~mwandel/jhead">Jhead</a>.
+To dump (interpret) an EXIF header: Exifdump ((<a
+href="http://www.math.u-psud.fr/~bousch/exifdump.py">http://www.math.u-psud.fr/~bousch/exifdump.py)</a>)
+or <a href="http://www.sentex.net/~mwandel/jhead">Jhead</a>.
 
-<P>A Python EXIF library and dumper: <A
-HREF="http://pyexif.sourceforge.net.">http://pyexif.sourceforge.net.</A>
+<p>A Python EXIF library and dumper: <a
+href="http://pyexif.sourceforge.net.">http://pyexif.sourceforge.net.</a>
 
-<P>Here's some software to work with IOCA (Image Object Content
+<p>Here's some software to work with IOCA (Image Object Content
 Architecture): <a
 href="http://www.forminnovation.com">ImageToolbox</a> ($2500, demo
 available).  This can convert from TIFF -&gt; IOCA and back again.
 <a href="http://www.thethinktanksoftware.com/details.html">Ameri-Imager</a>
 ($40 Windows only).
 
-<P><B>pnm2ppa</B> converts to HP's "Winprinter" format (for
+<p><b>pnm2ppa</b> converts to HP's "Winprinter" format (for
 HP 710, 720, 820, 1000, etc).  It is a superset of Netpbm's
-<B>pbmtoppa </B> and handles, notably, color.  However, it is more of
+<b>pbmtoppa </b> and handles, notably, color.  However, it is more of
 a printer driver than a Netpbm-style primitive graphics building
-block.  See <A
-HREF="http://sourceforge.net/projects/pnm2ppa">The Pnm2ppa /Sourceforge
+block.  See <a
+href="http://sourceforge.net/projects/pnm2ppa">The Pnm2ppa /Sourceforge
 Project</a>
 
 <p><b>DjVuLibre</b> is a package of software for using the DjVu
@@ -779,15 +779,15 @@ Netpbm-format device drivers that are part of it.  <b>pnmtops</b> and
 printing the image.  But to really use PDF and Postscript files, you
 generally need more complex document processing software.
 
-<P>Adobe invented Postscript and PDF and products from Adobe are for many
+<p>Adobe invented Postscript and PDF and products from Adobe are for many
 purposes the quintessential Postscript and PDF tools.
 
-<P>Adobe's free Acrobat Reader displays PDF and converts to
+<p>Adobe's free Acrobat Reader displays PDF and converts to
 Postscript.  The Acrobat Reader for unix has a program name of
 "acroread" and the -toPostScript option (also see the
 -level2 option) is useful.
 
-<P>Other software from Adobe, available for purchase, interprets and creates
+<p>Other software from Adobe, available for purchase, interprets and creates
 Postscript and PDF files.  "Distill" is a program that converts Postscript to
 PDF.
 
@@ -803,7 +803,7 @@ to PDF.
 <p><a href="http://dktools.sourceforge.net/bmpp.html">bmpp</a> converts from
 Netpbm and other formats to PDF.
   
-<P>Two packages that produce more kinds of Encapsulated Postscript
+<p>Two packages that produce more kinds of Encapsulated Postscript
 than the Netpbm programs, including compressed kinds, are <a
 href="http://dktools.sourceforge.net/bmpp.html">bmpp</a> and <a
 href="http://imgtops.sourceforge.net/">imgtops</a>.
@@ -817,11 +817,11 @@ a Microsoft Word document (.doc file) to various other formats.  While
 the web page doesn't seem to mention it, it reportedly can extract an
 embedded image in a Word document as a PNG.
 
-<p><A href="http://www.verypdf.com/artprint">Document Printer</a>
+<p><a href="http://www.verypdf.com/artprint">Document Printer</a>
 converts various print document formats (Microsoft Word, PDF, HTML, etc.)
 to various graphic image formats.  ($38, Windows only).
 
-<P>Latex2html converts Latex document source to HTML document source.
+<p>Latex2html converts Latex document source to HTML document source.
 Part of that involves graphics, and Latex2html uses Netpbm tools for
 some of that.  But Latex2html through its history has had some rather
 esoteric codependencies with Netpbm.  Older Latex2html doesn't work
@@ -829,25 +829,25 @@ with current Netpbm.  Latex2html-99.2beta8 works, though.
 
 <h3 id="otherothersoftware">Other</h3>
 
-<P>The <B>file</B> program looks at a file and tells you what kind of
+<p>The <b>file</b> program looks at a file and tells you what kind of
 file it is.  It recognizes most of the graphics formats with which
 Netpbm deals, so it is pretty handy for graphics work.  Netpbm's
-<B><a href="anytopnm.html">anytopnm</a></B> program depends on <B>file.</B>
+<b><a href="anytopnm.html">anytopnm</a></b> program depends on <b>file.</b>
 See 
-<B><A HREF="ftp://ftp.astron.com/pub/file">ftp://ftp.astron.com/pub/file</A></B>.
+<b><a href="ftp://ftp.astron.com/pub/file">ftp://ftp.astron.com/pub/file</a></b>.
 
-<P>The <a href="http://www.cs.utah.edu/gdc/projects/urt">Utah Raster
+<p>The <a href="http://www.cs.utah.edu/gdc/projects/urt">Utah Raster
 Toolkit</a> from the <a href="http://www.cs.utah.edu/gdc">Geometric Design And
 Computation group</a> in the Department of Computer Science at University of
 Utah serves a lot of the same purpose as Netpbm, but without the emphasis on
 format conversions.  This package is based on the RLE format, which you can
 convert to and from the Netpbm formats.
 
-<P><B>Ivtools</B> is a suite of free X Window System drawing editors for
+<p><b>Ivtools</b> is a suite of free X Window System drawing editors for
 Postscript, Tex, and web graphics production, as well as an embeddable
 and extendable vector graphic shell.  It uses the Netpbm facilities.
-See <B><A
-HREF="http://www.ivtools.org">http://www.ivtools.org</A></B>.
+See <b><a
+href="http://www.ivtools.org">http://www.ivtools.org</a></b>.
 
 <p>Chisato Yamauchi &lt;cyamauch@ir.isas.jaxa.jp&gt; has written a free
 c/Fortran graphic library: <a
@@ -856,17 +856,17 @@ He says he tried to write the ultimate easy-to-use graphic kit for X.  It is
 for drawing upon an X11 window, but for storage, it outputs PPM.  He suggests
 Netpbm to convert to other formats.
 
-<P>The program <B>morph</B> morphs one image into another.  It uses
-Targa format images, but you can use <B>tgatoppm</B> and
-<B>ppmtotga</B> to deal with that format.  You have to use the
+<p>The program <b>morph</b> morphs one image into another.  It uses
+Targa format images, but you can use <b>tgatoppm</b> and
+<b>ppmtotga</b> to deal with that format.  You have to use the
 graphical (X/Tk) Xmorph to create the mesh files that you must feed to
-<B>morph</B>.  <B>morph</B> is part of the Xmorph package.  See <B><A
-HREF="http://xmorph.sourceforge.net/">http://xmorph.sourceforge.net/</A></B>.
+<b>morph</b>.  <b>morph</b> is part of the Xmorph package.  See <b><a
+href="http://xmorph.sourceforge.net/">http://xmorph.sourceforge.net/</a></b>.
 
 
-<H2 id="otherfmt">Other Graphics Formats</H2>
+<h2 id="otherfmt">Other Graphics Formats</h2>
 
-<P>People never seem to tire of inventing new graphics formats, often
+<p>People never seem to tire of inventing new graphics formats, often
 completely redundant with pre-existing ones.  Netpbm cannot keep up
 with them.  Here is a list of a few that we know Netpbm does
 <em>not</em> handle (yet).
@@ -876,7 +876,7 @@ Netpbm does not, especially formats typically used with Windows programs.
 ImageMagick is probably the most used free image format converter and it
 also handles lots of formats Netpbm does not.
 
-<UL>
+<ul>
 
 <li>WebP was announced by Google in October 2010 as a more compressed
 replacement for JFIF (aka JPEG) on the web.
@@ -888,7 +888,7 @@ information.  <a href="http://charls.codeplex.com">CharLS</a> is a programming
 library for JPEG-LS.
 
 
-<LI>Lossless JPEG is a similarly lossless variation of JPEG.  It predates
+<li>Lossless JPEG is a similarly lossless variation of JPEG.  It predates
 every other lossless JPEG variation, but had only brief interest.  You can
 find code for encoding and decoding Lossless JPEG
 on <a href="https://github.com/thorfdbg/libjpeg">GitHub</a>.
@@ -913,15 +913,15 @@ screen, and consumes less client resources than competing formats.
 <p>For more information, see <a
 href="http://djvu.sourceforge.net/"> the DjVu website.</a>
 
-<LI> <a
+<li> <a
 href="http://www.web3d.org/x3d/specifications/vrml">VRML
 (Virtual Reality Modelling Language)</a>
 
-<LI>
+<li>
 CALS (originated by US Department Of Defense, favored by architects).
 It is described in this 1997 listing of graphics formats:
-<A HREF="http://www.faqs.org/faqs/graphics/fileformats-faq/part3/">
-http://www.faqs.org/faqs/graphics/fileformats-faq/part3/</A>.  CALS
+<a href="http://www.faqs.org/faqs/graphics/fileformats-faq/part3/">
+http://www.faqs.org/faqs/graphics/fileformats-faq/part3/</a>.  CALS
 has at times been an abbreviation of various things, all of which appear
 to be essentially the same format, but possibly slightly different:
 
@@ -937,33 +937,33 @@ The US Navy publishes <a
 href="https://www.navsea.navy.mil/Home/Warfare-Centers/NSWC-Carderock/Resources/Technical-Information-Systems/IETMs/Specifications-Standards/CALS-Standards/">specs</a>
 for it.
 
-<LI>
+<li>
 array formats dx, general, netcdf, CDF, hdf, cm
-<LI>
+<li>
 CGM+
 
 <li>HDR formats OpenEXR, SGI TIFF LogLuv, floating point TIFF,
 Radiance RGBE
 
-<LI>Windows Meta File (.WMF).  Libwmf converts from WMF to things like
+<li>Windows Meta File (.WMF).  Libwmf converts from WMF to things like
 Latex, PDF, PNG.  Some of these can be input to Netpbm.
 
-<LI>Microsoft Word .doc format.  Microsoft keeps a proprietary hold on
+<li>Microsoft Word .doc format.  Microsoft keeps a proprietary hold on
 this format.  Any software you see that can handle it is likely to
 cost money.
 
 <li>RTF
 
-<LI>
+<li>
 DXF (AutoCAD)
-<LI>
+<li>
 IOCA (Image Object Content Architecture)
 The specification of this format is documented by IBM:
 <a href="http://publibz.boulder.ibm.com/epubs/pdf/c3168055.pdf">
 Data Stream and Object Architectures: Image Object Content Architecture
 Reference</a>.  See above for software that processes this format.
 
-<LI>OpenEXR is an HDR format (like <a href="pamtopfm.html">PFM</a>).
+<li>OpenEXR is an HDR format (like <a href="pamtopfm.html">PFM</a>).
 See <a href="http://www.openexr.com">
 http://www.openexr.com</a>.
 
@@ -991,22 +991,22 @@ uses a YUV representation of data, which is more convenient than the
 Netpbm formats' RGB representation for working with data that is
 ultimately MPEG2.
 
-</UL>
+</ul>
 
-<H2 id="history">History</H2>
+<h2 id="history">History</h2>
 
-<P>Netpbm has a long history, starting with Jef Poskanzer's Pbmplus
+<p>Netpbm has a long history, starting with Jef Poskanzer's Pbmplus
 package in 1988.  See the <a
 href="http://netpbm.sourceforge.net/history.html">Netpbm web site</a>
 for details.
 
-<p>The file <B>doc/HISTORY</B> in the Netpbm source code contains a
+<p>The file <b>doc/HISTORY</b> in the Netpbm source code contains a
 detailed change history release by release.
 
 
-<H2 id="author">Author</H2>
+<h2 id="author">Author</h2>
 
-<P>Netpbm is based on the Pbmplus package by Jef Poskanzer, first
+<p>Netpbm is based on the Pbmplus package by Jef Poskanzer, first
 distributed in 1988 and maintained by him until 1991.  But the package
 contains work by countless other authors, added since Jef's original
 work.  In fact, the name is derived from the fact that the work was
@@ -1014,9 +1014,9 @@ contributed by people all over the world via the Internet, when such
 collaboration was still novel enough to merit naming the package after
 it.
 
-<P>Bryan Henderson has been maintaining Netpbm since 1999.  In
+<p>Bryan Henderson has been maintaining Netpbm since 1999.  In
 addition to packaging work by others, Bryan has also written a
 significant amount of new material for the package.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/jpeg2ktopam.html b/jpeg2ktopam.html
index d9bde090..8f18303a 100644
--- a/jpeg2ktopam.html
+++ b/jpeg2ktopam.html
@@ -16,7 +16,7 @@ jpeg2ktopam - convert JPEG-2000 code stream to PAM/PNM
 [<b>-debuglevel=</b><i>number</i>]
 <i>filename</i>
 
-<?makeman .sh option usage ?>
+<?makeman .SH OPTION USAGE ?>
 
 <p>Minimum unique abbreviation of option is acceptable.  You may use double
 hyphens instead of single hyphen to denote options.  You may use white
diff --git a/liberror.html b/liberror.html
index 82cbc7b0..23a36528 100644
--- a/liberror.html
+++ b/liberror.html
@@ -1,10 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD>
-<TITLE>Netpbm User Manual</TITLE>
-</HEAD>
-<BODY>
-<H1>Error Handling</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html>
+<head>
+<title>Netpbm User Manual</title>
+</head>
+<body>
+<h1>Error Handling</h1>
 
 <h2 id="error">Netpbm Programming Library Errors</h2>
 
@@ -96,7 +96,7 @@ setjmp() first, then tell the Netpbm programming library with
 </code>
 </pre>
 
-<P>This example should look really strange to you if you haven't read
+<p>This example should look really strange to you if you haven't read
 the documentation of <b>setjmp()</b>.  Remember that there is a
 hyperjump such that the program is executing the <b>pnm_readpam()</b>
 and then suddenly is returning a second time from the setjmp()!
@@ -138,9 +138,9 @@ appropriate one of these.
 <h4>Overview</h4>
 
 <p>
-<B>void pm_error(</b>
-<b>char *</B> <I>fmt</I><B>,</B>
-<B>... );</B>
+<b>void pm_error(</b>
+<b>char *</b> <i>fmt</i><b>,</b>
+<b>... );</b>
 
 <h4>Example</h4>
 
@@ -152,7 +152,7 @@ if (argc-1 &lt; 3)
 </code>
 </pre>
 
-<P><B>pm_error()</B> is a <B>printf()</B> style routine that 
+<p><b>pm_error()</b> is a <b>printf()</b> style routine that 
 simply throws an error.  It issues an error message exactly like
 <b>pm_errormsg()</b> would in the process.
 
@@ -162,9 +162,9 @@ simply throws an error.  It issues an error message exactly like
 <h4>Overview</h4>
 
 <p>
-<B>void pm_errormsg(</b>
-<b>char *</B> <I>fmt</I><B>,</B>
-<B>... );</B>
+<b>void pm_errormsg(</b>
+<b>char *</b> <i>fmt</i><b>,</b>
+<b>... );</b>
 
 <h4>Example</h4>
 
@@ -176,7 +176,7 @@ if (rc = -1)
 </code>
 </pre>
 
-<P><B>pm_errormsg()</B> is a <B>printf()</B> style routine that 
+<p><b>pm_errormsg()</b> is a <b>printf()</b> style routine that 
 issues an error message.  By default, it writes the message to Standard
 Error, but you can register a user error message routine to be called
 instead, and that might do something such as write the message into a 
@@ -196,7 +196,7 @@ newlines or tabs in it.
 <h4>Overview</h4>
 
 <p>
-<B>void pm_setusererrormsgfn(pm_usererrormsgfn *</B> <I>function</I><B>);</b>
+<b>void pm_setusererrormsgfn(pm_usererrormsgfn *</b> <i>function</i><b>);</b>
 
 <h4>Example</h4>
 
@@ -215,7 +215,7 @@ newlines or tabs in it.
 </code>
 </pre>
 
-<P><B>pm_setusererrormsgfn()</B> registers a handler for error messages,
+<p><b>pm_setusererrormsgfn()</b> registers a handler for error messages,
 called a user error message routine.  Any library function that wants
 to issue an error message in the future will call that function with
 the message as an argument.
diff --git a/libmaketmpfile.html b/libmaketmpfile.html
index 07c01256..5dc7641d 100644
--- a/libmaketmpfile.html
+++ b/libmaketmpfile.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
 <html> <head>
 <title>Netpbm subroutine library: pm_make_tmpfile() function</title>
 <meta name="manual_section" content="3">
@@ -53,7 +53,7 @@ strfree(myfilename);
 
 </pre>
 
-<h2>DESCRIPTION</H2>
+<h2>DESCRIPTION</h2>
 
 <p>This library function is part of <a href="index.html">Netpbm</a>.
 
diff --git a/libmaketmpfilefd.html b/libmaketmpfilefd.html
index 587648ad..52e49cc9 100644
--- a/libmaketmpfilefd.html
+++ b/libmaketmpfilefd.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
 <html> <head>
 <title>Netpbm subroutine library: pm_make_tmpfile_fd() function</title>
 <meta name="manual_section" content="3">
@@ -53,7 +53,7 @@ strfree(myfilename);
 
 </pre>
 
-<h2>DESCRIPTION</H2>
+<h2>DESCRIPTION</h2>
 
 <p>This library function is part of <a href="index.html">Netpbm</a>.
 
diff --git a/libnetpbm.html b/libnetpbm.html
index d012317c..ba120562 100644
--- a/libnetpbm.html
+++ b/libnetpbm.html
@@ -1,13 +1,13 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD>
-<TITLE>Libnetpbm manual</TITLE>
-<META NAME="manual_section" CONTENT="3">
-</HEAD>
-<BODY>
-<H1>libnetpbm</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html>
+<head>
+<title>Libnetpbm manual</title>
+<meta name="manual_section" content="3">
+</head>
+<body>
+<h1>libnetpbm</h1>
 Updated: December 2003
-<BR>
+<br>
 <?makeman .SH NAME ?>
 <?makeman libnetpbm - general introduction to the netpbm library ?>
 <?makeman .SH DESCRIPTION ?>
@@ -75,9 +75,9 @@ basics on using <b>libnetpbm</b> in a program.
 <p>You can look up the reference information for a particular function
 in <a href="libnetpbm_dir.html">The libnetpbm Directory</a>.
 
-<P>Before Netpbm release 10 (June 2002), this library was split into
+<p>Before Netpbm release 10 (June 2002), this library was split into
 four: libpbm, libpgm, libppm, and libpnm.  That's largely the reason
 for the multiple sets of functions and scattered documentation.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/libnetpbm_dir.html b/libnetpbm_dir.html
index d839f68d..02aff15f 100644
--- a/libnetpbm_dir.html
+++ b/libnetpbm_dir.html
@@ -1,6 +1,6 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD><TITLE>Libnetpbm Directory</TITLE></HEAD>
-<BODY>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Libnetpbm Directory</title></head>
+<body>
 <p>This is a directory of all the Netpbm programming library (<b>libnetpbm</b>)
 services.
 
@@ -189,5 +189,5 @@ services.
   <li><a href="libpnm.html">pnm_backgroundxel()</a>
 </ul>
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/libnetpbm_draw.html b/libnetpbm_draw.html
index 673f7850..6e9c3690 100644
--- a/libnetpbm_draw.html
+++ b/libnetpbm_draw.html
@@ -1,14 +1,14 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD>
-<TITLE>Libnetpbm PPM Drawing Function Manual</TITLE>
-<META NAME="manual_section" CONTENT="3">
-</HEAD>
-<BODY>
-<H1>Libnetpbm PPM Drawing Function Manual</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html>
+<head>
+<title>Libnetpbm PPM Drawing Function Manual</title>
+<meta name="manual_section" content="3">
+</head>
+<body>
+<h1>Libnetpbm PPM Drawing Function Manual</h1>
 Updated: April 2018
 <br>
-<p><A HREF="#toc">Table Of Contents</A>
+<p><a href="#toc">Table Of Contents</a>
 <?makeman .SH NAME ?>
 <?makeman libnetpbm_draw \- Libnetpbm PPM Drawing Function Manual ?>
 <?makeman .SH DESCRIPTION ?>
@@ -123,7 +123,7 @@ fill with a pattern.
 
 <h3 id="ppmd_makeLineLeg">ppmd_makeLineLeg</h3>
 
-<P>This function returns a data structure of type <b>ppmd_pathleg</b>, to
+<p>This function returns a data structure of type <b>ppmd_pathleg</b>, to
 be used in a data structure of type <b>ppmd_path</b>, to be use with
 function <b>ppmd_fill_path</b>.
 
@@ -193,14 +193,14 @@ make the path building more efficient.
 <p>This facility was new in Netpbm 10.78 (March 2017).  Before that, you
 have to build the <b>ppmd_path</b> by directly setting its members.
 
-<h3 id="ppmd_path_builder_create">ppmd_path_builder</h3>
+<h3 id="ppmd_pathbuilder_create">ppmd_path_builder</h3>
 
 <p>This creates a <b>ppmd_path_builder</b> object (i.e. allocates memory for
 it and initializes it).  You must ultimately destroy it
 with <b>ppmd_path_builder_destroy</b>.
 
 
-<h3 id="ppmd_path_builder_destroy">ppmd_path_builder_destroy</h3>
+<h3 id="ppmd_pathbuilder_destroy">ppmd_path_builder_destroy</h3>
 
 <p>This destroys a <b>ppmd_path_builder</b> object created with
 <b>ppmd_path_builder_create</b> (i.e. frees the memory).
@@ -432,15 +432,15 @@ can't use the handle after this.
 font to which to set it with a handle such as you get from
 <b>ppmd_read_font</b> or <b>ppmd_get_font</b>.
 
-<HR>
-<H2 id="toc">Table Of Contents</H2>
+<hr>
+<h2 id="toc">Table Of Contents</h2>
 
 <ul>
   <li><a href="#basicfunctions">Basic Functions</a>
     <ul>
       <li><a href="#ppmd_setlinetype">ppmd_setlinetype</a>
       <li><a href="#ppmd_setlineclip">ppmd_setlineclip</a>
-      <li><a href="#ppmd_setline">ppmd_setline</a>
+      <li><a href="#ppmd_line">ppmd_line</a>
       <li><a href="#ppmd_spline3">ppmd_spline3</a>
       <li><a href="#ppmd_polyspline">ppmd_polyspline</a>
       <li><a href="#ppmd_circle">ppmd_circle</a>
@@ -476,5 +476,5 @@ font to which to set it with a handle such as you get from
 
 
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/libnetpbm_font.html b/libnetpbm_font.html
index f3b7c9b2..e1b3c03c 100644
--- a/libnetpbm_font.html
+++ b/libnetpbm_font.html
@@ -1,16 +1,16 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD>
-<TITLE>Libnetpbm PBM Font Function Manual</TITLE>
-<META NAME="manual_section" CONTENT="3">
-</HEAD>
-<BODY>
-<H1>Libnetpbm PBM Font Function Manual</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html>
+<head>
+<title>Libnetpbm PBM Font Function Manual</title>
+<meta name="manual_section" content="3">
+</head>
+<body>
+<h1>Libnetpbm PBM Font Function Manual</h1>
 Updated: April 2018
 <br>
-<p><A HREF="#toc">Table Of Contents</A>
+<p><a href="#toc">Table Of Contents</a>
 <?makeman .SH NAME ?>
-<?makeman libnetpbm_draw \- Libnetpbm PPM Drawing Function Manual ?>
+<?makeman libnetpbm_font \- Libnetpbm PBM Font Function Manual ?>
 <?makeman .SH DESCRIPTION ?>
 
 <p>This reference manual covers functions in the <b>libnetpbm</b> library for
@@ -30,7 +30,7 @@ in this facility.
 <p><b>libnetpbm</b> represents a font with an object of type
 <b>struct font</b>.  The library provides functions to create these objects.
   
-<P>The object these functions create is in newly allocated memory and you
+<p>The object these functions create is in newly allocated memory and you
 can't actually free it.  The memory may be in multiple pieces, pointing to
 each other, and <b>libnetpbm</b> provides no destroy function.  (This is only
 because of implementation laziness).
@@ -73,7 +73,7 @@ available in the
 collection named &quot;font-adobe-75dpi&quot;, in a file named
 <b>timR12.pcf.gz</b>.
 
-<P>Ergo, it is likely that the font was copied into Netpbm from that font in
+<p>Ergo, it is likely that the font was copied into Netpbm from that font in
 1991.
 
 <p>You may need a copyright license from the copyright owners of that original
@@ -112,7 +112,7 @@ or <b>pbm_loadbdffont</b> accordingly.
 
 <h3 id="pbm_loadpbmfont"><b>pbm_loadpbmfont</b></h3>
 
-<h3 id="pbm_loadbffont2"><b>pbm_loadbdffont2</b></h3>
+<h3 id="pbm_loadbdffont2"><b>pbm_loadbdffont2</b></h3>
 
 <h3 id="pbm_loadbdffont"><b>pbm_loadbdffont</b></h3>
 
@@ -124,19 +124,19 @@ instead.
 <h3 id="pbm_dumpfont"><b>pbm_dumpfont</b></h3>
 
 
-<HR>
-<H2 id="toc">Table Of Contents</H2>
+<hr>
+<h2 id="toc">Table Of Contents</h2>
 
 <ul>
   <li><a href="#fontobject">Font Object</a>
   <li><a href="#thefunctions">The Functions</a>
     <ul>
-      <li><a href="#pbm_default_font">pbm_default_font</a>
+      <li><a href="#pbm_defaultfont">pbm_defaultfont</a>
       <li><a href="#pbm_dissectfont">pbm_dissectfont</a>
       <li><a href="#pbm_loadfont">pbm_loadfont</a>
       <li><a href="#pbm_loadpbmfont">pbm_loadpbmfont</a>
       <li><a href="#pbm_loadbdffont2">pbm_loadbdffont2</a>
-      <li><a href="#pbm_lodbdffont">pbm_loadbdffont</a>
+      <li><a href="#pbm_loadbdffont">pbm_loadbdfont</a>
       <li><a href="#pbm_expandbdffont">pbm_expandbdffont</a>
       <li><a href="#pbm_dumpfont">pbm_dumpfont</a>
       </ul>
@@ -144,5 +144,5 @@ instead.
 
 
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/libnetpbm_ug.html b/libnetpbm_ug.html
index 94d4fd4d..92df98a9 100644
--- a/libnetpbm_ug.html
+++ b/libnetpbm_ug.html
@@ -1,11 +1,11 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD>
-<TITLE>Libnetpbm Image Processing Manual</TITLE>
-<META NAME="manual_section" CONTENT="3">
-</HEAD>
-<BODY>
-<H1>Libnetpbm User's Guide</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html>
+<head>
+<title>Libnetpbm Image Processing Manual</title>
+<meta name="manual_section" content="3">
+</head>
+<body>
+<h1>Libnetpbm User's Guide</h1>
 <?makeman .SH NAME ?>
 <?makeman libnetpbm_ug - netpbm sample code ?>
 
@@ -24,7 +24,7 @@ href="index.html">Netpbm</a>.
 <li><a href="#reference">Reference</a>
 </ul>
 
-<H2 id="example">Example</H2>
+<h2 id="example">Example</h2>
 
 <p>Here is an example of a C program that uses <b>libnetpbm</b> to read a
 Netpbm image input and produce a Netpbm image output.
@@ -104,15 +104,15 @@ up the process to use the library, as described in <a href="libpm.html#initializ
 <b>pm_init()</b> in the example above.
 
 
-<H2 id="pamstruct">The <b>pam</b> Structure</H2>
+<h2 id="pamstruct">The <b>pam</b> Structure</h2>
 
-<P>The PAM functions take most of their arguments in the form of a
-single <B>pam</B> structure.  This is not an opaque object, but just a
+<p>The PAM functions take most of their arguments in the form of a
+single <b>pam</b> structure.  This is not an opaque object, but just a
 convenient way to organize the information upon which most the
 functions depend.  So you are free to access or set the elements of
 the structure however you want.  But you will find in most cases it is
-most convenient to call <B>pnm_readpaminit()</B> or
-<B>pnm_writepaminit()</B> to set the members in the <B>pam</B>
+most convenient to call <b>pnm_readpaminit()</b> or
+<b>pnm_writepaminit()</b> to set the members in the <b>pam</b>
 structure before calling any other pam functions, and then just to
 pass the structure unchanged in all future calls to pam functions.
 
@@ -130,28 +130,28 @@ a subset of the members defined here, according to its setting of the
 <b>len</b> member.  But this normally happens only because the library is old
 and predates the existence of the omitted members.
 
-<P>The members are:
+<p>The members are:
 
-<DL COMPACT>
-<DT><B>size</B>
-<DD>
+<dl compact>
+<dt><b>size</b>
+<dd>
 The storage size in bytes of this entire structure.
 
-<DT><B>len</B>
+<dt><b>len</b>
 
-<DD>The length, in bytes, of the information in this structure.  The
+<dd>The length, in bytes, of the information in this structure.  The
 information starts in the first byte and is contiguous.  This cannot
-be greater than <B>size</B>.  <B>size</B> and <B>len</B> can be used
+be greater than <b>size</b>.  <b>size</b> and <b>len</b> can be used
 to make programs compatible with newer and older versions of the
 Netpbm libraries.
 
-<DT><B>file</B>
+<dt><b>file</b>
 
-<DD>The file.
+<dd>The file.
 
-<DT><B>format</B>
+<dt><b>format</b>
 
-<DD>The format code of the image, which tells which of the various Netpbm
+<dd>The format code of the image, which tells which of the various Netpbm
 image formats is being processed.  The following macros stand for those
 format codes:
 
@@ -194,8 +194,8 @@ meaningful.  A Netpbm format code conveys two pieces of information:
 The format type (PBM, PGM, PPM, or PAM) and the plainness (plain PBM
 vs raw PBM, etc.).  But when writing, <b>libnetpbm</b> ignores the
 plainness part and instead takes the plainness from the
-<b>plainformat</b> member.  So <B>PBM_FORMAT</B> and
-<B>RPBM_FORMAT</B> are identical when writing.
+<b>plainformat</b> member.  So <b>PBM_FORMAT</b> and
+<b>RPBM_FORMAT</b> are identical when writing.
 <p>
 This quirk exists for historical purposes; it's necessary for consistency
 with the older functions such as <b>pnm_writepnmrow()</b> whose
@@ -212,9 +212,9 @@ an output image.  When you do that, your output image will be raw
 format regardless of whether your input image was plain or raw, and
 this is the conventional behavior of Netpbm programs.
 
-<DT><B>plainformat</B>
+<dt><b>plainformat</b>
 
-<DD>This is a boolean value (0 = false, 1 = true), meaningful only
+<dd>This is a boolean value (0 = false, 1 = true), meaningful only
 when writing an image file.  It means to write in the plain (text)
 version of the format indicated by <b>format</b> as opposed to the
 raw (binary) version.  Note that the format code in <b>format</b>
@@ -233,33 +233,33 @@ it affected reading as well as writing.
 <b>libnetpbm</b> image reading functions set this member to false, for your
 convenience in building an output image pam from an input image pam.
 
-<DT><B>height</B>
+<dt><b>height</b>
 
-<DD>The height of the image in rows.
+<dd>The height of the image in rows.
 
-<DT><B>width</B>
+<dt><b>width</b>
 
-<DD>The width of the image in number of columns (tuples per row).
+<dd>The width of the image in number of columns (tuples per row).
 
-<DT><B>depth</B>
+<dt><b>depth</b>
 
-<DD>The depth of the image (degree of or number of samples in each tuple).
+<dd>The depth of the image (degree of or number of samples in each tuple).
 
-<DT><B>maxval</B>
+<dt><b>maxval</b>
 
-<DD>The maxval of the image.  See definitions in <A HREF="pam.html">pam</A>.
+<dd>The maxval of the image.  See definitions in <a href="pam.html">pam</a>.
 
-<DT><B>bytes_per_sample</B>
+<dt><b>bytes_per_sample</b>
 
-<DD>The number of bytes used to represent each sample in the image
-file.  See the format definition in <A HREF="pam.html">pam</A>.  This
-is entirely redundant with <B>maxval</B>.  It exists as a separate
+<dd>The number of bytes used to represent each sample in the image
+file.  See the format definition in <a href="pam.html">pam</a>.  This
+is entirely redundant with <b>maxval</b>.  It exists as a separate
 member for computational speed.
 
-<DT><B>tuple_type</B>
+<dt><b>tuple_type</b>
 
-<DD>The tuple type of the image.  See definitions in <A
-HREF="pam.html">pam</A>.  Netpbm defines values for the most common
+<dd>The tuple type of the image.  See definitions in <a
+href="pam.html">pam</a>.  Netpbm defines values for the most common
 types of visual images, but any value is legal.  There are macros for
 these values:
 
@@ -280,7 +280,7 @@ image.
 <dd>color with a transparency (alpha) information.
 </dl>
 
-<DT><B>allocation_depth</B>
+<dt><b>allocation_depth</b>
 
 <dd>The number of samples for which memory is allocated for any tuple
 associated with this PAM structure.  This must be at least as great as
@@ -339,39 +339,39 @@ an image that contains no comments.
 
 <p>This member does not exist before Netpbm 10.35 (August 2006).  Before that,
 there is no way with libnetpbm to get or set comments.  The macro
-<B>PAM_HAVE_COMMENT_P</B> is defined in <b>pam.h</b> where the member
+<b>PAM_HAVE_COMMENT_P</b> is defined in <b>pam.h</b> where the member
 exists.
 
-</DL>
+</dl>
 
 
 
-<H2 id="plainvsraw">Plain  Versus Raw Format</H2>
+<h2 id="plainvsraw">Plain  Versus Raw Format</h2>
 
-<P>The PNM formats each come in two varieties: the older plain (text)
+<p>The PNM formats each come in two varieties: the older plain (text)
 format and the newer raw (binary) format.  There are different format
 codes for the plain and raw formats, but which of the two formats the
 pnm and pam functions write is independent of the format code you pass
 to them.
 
-<P>The pam functions always write raw formats.  If you specify the format
+<p>The pam functions always write raw formats.  If you specify the format
 code for a plain format, a pam function assumes instead the raw
 version of that format.
 
-<P>The pnm functions choose between plain and raw based on the
-<I>forceplain</I> parameter that every write-type pnm function has.
+<p>The pnm functions choose between plain and raw based on the
+<i>forceplain</i> parameter that every write-type pnm function has.
 If this boolean value is true, the function writes the plain version
 of the format specified by the format code.  If it is false, the
 function writes the raw version of the format specified by the format
 code.
 
-<P>We are trying to stamp out the older plain formats, so it would be
-a wise choice not to write a program that sets <I>forceplain</I> true
+<p>We are trying to stamp out the older plain formats, so it would be
+a wise choice not to write a program that sets <i>forceplain</i> true
 under any circumstance.  A user who needs a plain format can use the
-<B>pnmtoplainpnm</B> program to convert the output of your program to
+<b>pnmtoplainpnm</b> program to convert the output of your program to
 plain format.
 
-<H2 id="reference">Reference</h2>
+<h2 id="reference">Reference</h2>
 
 <p>The <a href="libnetpbm_image.html">Libnetpbm Netpbm Image
 Processing Manual</a> describes the the <b>libnetpbm</b> functions for
@@ -381,5 +381,5 @@ processing image data.
 describes the functions that are not specifically related to the Netpbm
 image formats.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/libpbm.html b/libpbm.html
index 74a86a97..c70ab3f3 100644
--- a/libpbm.html
+++ b/libpbm.html
@@ -1,182 +1,182 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD>
-<TITLE>User manual for old pbm functions</TITLE>
-<META NAME="manual_section" CONTENT="3">
-</HEAD>
-<BODY>
-
-<H1>pbm Functions</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html>
+<head>
+<title>User manual for old pbm functions</title>
+<meta name="manual_section" content="3">
+</head>
+<body>
+
+<h1>pbm Functions</h1>
 Updated: 8 September 2007
-<BR>
-<A HREF="#index">Table Of Contents</A>
-<H2>NAME</H2>
+<br>
+<a href="#index">Table Of Contents</a>
+<h2>NAME</h2>
 libpbm - libnetpbm functions to read and write PBM image files
 
-<H2 id="synopsis">SYNOPSIS</H2>
-
-<B>#include &lt;netpbm/pbm.h&gt;</B>
-
-<P>
-<B>bit **pbm_allocarray(int</B>
-<I>cols</I><B>,  int </B><I>rows</I><B>);</B>
-
-<P>
-<B>bit *pbm_allocrow(int</B>
-<I>cols</I><B>);</B>
-
-<P>
-<B>pbm_freearray(bit </B>
-<B>**</B><I>bits</I><B>, int </B><I>rows</I><B>);</B>
-
-<P>
-<B>pbm_freerow(bit</B>
-<B>*</B><I>bitrow</I><B>);</B>
-
-<P>
-<B>void pbm_readpbminit(FILE *</B>
-<I>fp</I><B>,
-int *</B><I>colsP</I><B>,
-int *</B><I>rowsP</I><B>,
-int *</B><I>formatP</I><B>);</B>
-
-<P>
-<B>void pbm_readpbmrow(FILE *</B>
-<I>fp</I><B>,
-bit *</B><I>bitrow</I><B>,
-int </B><I>cols</I><B>,
-int </B><I>format</I><B>);</B>
-
-<P>
-<B>void pbm_readpbmrow_packed(FILE *</B>
-<I>fp</I><B>,</B>
-
-<BR>
-
-<B>unsigned char * const </B><I>packed_bits</I><B>,</B>
-<B>const int </B><I>cols</I><B>,</B>
-<B>const int </B><I>format</I><B>);</B>
-
-<P>
-<B>void bit** pbm_readpbm(FILE *</B>
-<I>fp</I><B>, int *</B><I>colsP</I><B>, int *</B><I>rowsP</I><B>);</B>
-
-<P>
-<B>void pbm_writepbminit(FILE *</B>
-<I>fp</I><B>,
-int </B><I>cols</I><B>,
-int </B><I>rows</I><B>,
-int </B><I>forceplain</I><B>);</B>
-
-<P>
-<B>void pbm_writepbmrow(FILE *</B>
-<I>fp</I><B>,
-bit *</B><I>bitrow</I><B>,
-int </B><I>cols</I><B>,
-int </B><I>forceplain</I><B>);</B>
-
-<P>
-<B>void pbm_writepbmrow_packed(FILE *</B>
-<I>fp</I><B>,</B>
-
-<BR>
-
-<B>unsigned char * const </B><I>packed_bits</I><B>,</B>
-<B>const int </B><I>cols</I><B>,</B>
-<B>const int </B><I>forceplain</I><B>);</B>
-
-<P>
-<B>void pbm_writepbm(FILE *</B>
-<I>fp</I><B>,
-bit **</B><I>bits</I><B>,
-int </B><I>cols</I><B>,
-int </B><I>rows</I><B>,
-int </B><I>forceplain</I><B>);</B>
-
-<P>
-<B>#define pbm_packed_bytes(</B><I>cols</I><B>) ...</B>
-
-<P>
-<B>void pbm_nextimage(</B>
-<B>FILE *</B><I>file</I><B>,</B>
-<B>int * const </B><I>eofP</I><B>);</B>
-
-<P>
-<B>void pbm_check(</B>
-<B>FILE * </B><I>file</I><B>,</B>
-<B>const enum pm_check_type </B><I>check_type</I><B>,</B>
-<B>const int </B><I>format</I><B>,</B>
-<B>const int </B><I>cols</I><B>,</B>
-<B>const int </B><I>rows</I><B>,</B>
-<B>enum pm_check_code * const </B><I>retval</I><B>);</B>
-
-
-<H2 id="description">DESCRIPTION</H2>
+<h2 id="synopsis">SYNOPSIS</h2>
+
+<b>#include &lt;netpbm/pbm.h&gt;</b>
+
+<p>
+<b>bit **pbm_allocarray(int</b>
+<i>cols</i><b>,  int </b><i>rows</i><b>);</b>
+
+<p>
+<b>bit *pbm_allocrow(int</b>
+<i>cols</i><b>);</b>
+
+<p>
+<b>pbm_freearray(bit </b>
+<b>**</b><i>bits</i><b>, int </b><i>rows</i><b>);</b>
+
+<p>
+<b>pbm_freerow(bit</b>
+<b>*</b><i>bitrow</i><b>);</b>
+
+<p>
+<b>void pbm_readpbminit(FILE *</b>
+<i>fp</i><b>,
+int *</b><i>colsP</i><b>,
+int *</b><i>rowsP</i><b>,
+int *</b><i>formatP</i><b>);</b>
+
+<p>
+<b>void pbm_readpbmrow(FILE *</b>
+<i>fp</i><b>,
+bit *</b><i>bitrow</i><b>,
+int </b><i>cols</i><b>,
+int </b><i>format</i><b>);</b>
+
+<p>
+<b>void pbm_readpbmrow_packed(FILE *</b>
+<i>fp</i><b>,</b>
+
+<br>
+
+<b>unsigned char * const </b><i>packed_bits</i><b>,</b>
+<b>const int </b><i>cols</i><b>,</b>
+<b>const int </b><i>format</i><b>);</b>
+
+<p>
+<b>void bit** pbm_readpbm(FILE *</b>
+<i>fp</i><b>, int *</b><i>colsP</i><b>, int *</b><i>rowsP</i><b>);</b>
+
+<p>
+<b>void pbm_writepbminit(FILE *</b>
+<i>fp</i><b>,
+int </b><i>cols</i><b>,
+int </b><i>rows</i><b>,
+int </b><i>forceplain</i><b>);</b>
+
+<p>
+<b>void pbm_writepbmrow(FILE *</b>
+<i>fp</i><b>,
+bit *</b><i>bitrow</i><b>,
+int </b><i>cols</i><b>,
+int </b><i>forceplain</i><b>);</b>
+
+<p>
+<b>void pbm_writepbmrow_packed(FILE *</b>
+<i>fp</i><b>,</b>
+
+<br>
+
+<b>unsigned char * const </b><i>packed_bits</i><b>,</b>
+<b>const int </b><i>cols</i><b>,</b>
+<b>const int </b><i>forceplain</i><b>);</b>
+
+<p>
+<b>void pbm_writepbm(FILE *</b>
+<i>fp</i><b>,
+bit **</b><i>bits</i><b>,
+int </b><i>cols</i><b>,
+int </b><i>rows</i><b>,
+int </b><i>forceplain</i><b>);</b>
+
+<p>
+<b>#define pbm_packed_bytes(</b><i>cols</i><b>) ...</b>
+
+<p>
+<b>void pbm_nextimage(</b>
+<b>FILE *</b><i>file</i><b>,</b>
+<b>int * const </b><i>eofP</i><b>);</b>
+
+<p>
+<b>void pbm_check(</b>
+<b>FILE * </b><i>file</i><b>,</b>
+<b>const enum pm_check_type </b><i>check_type</i><b>,</b>
+<b>const int </b><i>format</i><b>,</b>
+<b>const int </b><i>cols</i><b>,</b>
+<b>const int </b><i>rows</i><b>,</b>
+<b>enum pm_check_code * const </b><i>retval</i><b>);</b>
+
+
+<h2 id="description">DESCRIPTION</h2>
 
 <p>These library functions are part of <a href="index.html">Netpbm</a>.
 
-<H3 id="types">TYPES AND CONSTANTS</H3>
+<h3 id="types">TYPES AND CONSTANTS</h3>
 
-<B>typedef ... bit;</B>
+<b>typedef ... bit;</b>
 
-<P>
-<B>#define PBM_WHITE ...</B>
+<p>
+<b>#define PBM_WHITE ...</b>
 
-<P>
-<B>#define PBM_BLACK ...</B>
+<p>
+<b>#define PBM_BLACK ...</b>
 
-<P>Each <B>bit</B> should contain only the values of <B>PBM_WHITE</B>
-or <B>PBM_BLACK</B>.
+<p>Each <b>bit</b> should contain only the values of <b>PBM_WHITE</b>
+or <b>PBM_BLACK</b>.
 
-<P><B>#define PBM_FORMAT ...</B>
+<p><b>#define PBM_FORMAT ...</b>
 
-<P><B>#define RPBM_FORMAT ...</B>
+<p><b>#define RPBM_FORMAT ...</b>
 
-<P><B>#define PBM_TYPE PBM_FORMAT</B>
+<p><b>#define PBM_TYPE PBM_FORMAT</b>
 
-<P><B>#define </B>
-<B>PBM_FORMAT_TYPE(</B><I>f</I><B>) ...</B>
+<p><b>#define </b>
+<b>PBM_FORMAT_TYPE(</b><i>f</i><b>) ...</b>
 
-<P>These are for distinguishing different file formats and types.
+<p>These are for distinguishing different file formats and types.
 
-<H3 id="initialization">INITIALIZATION</H3>
+<h3 id="initialization">INITIALIZATION</h3>
 
 <p><b>pbm_init()</b> is obsolete (at least since Netpbm 9.25 (March 2002)).
 Use <a href="libpm.html#initialization"><b>pm_proginit()</b></a> instead.
 
-<P><b>pbm_init()</b> is identical to <b>pm_proginit</b>.
+<p><b>pbm_init()</b> is identical to <b>pm_proginit</b>.
 
-<H3 id="memorymanagement">MEMORY MANAGEMENT</H3>
+<h3 id="memorymanagement">MEMORY MANAGEMENT</h3>
 
-<B>pbm_allocarray()</B> allocates an array of bits.
-<B>pbm_allocrow()</B> allocates a row of the given number of bits.
-<B>pbm_freearray()</B> frees the array allocated with
-<B>pbm_allocarray()</B> containing the given number of rows.
-<B>pbm_freerow()</B> frees a row of bits.
+<b>pbm_allocarray()</b> allocates an array of bits.
+<b>pbm_allocrow()</b> allocates a row of the given number of bits.
+<b>pbm_freearray()</b> frees the array allocated with
+<b>pbm_allocarray()</b> containing the given number of rows.
+<b>pbm_freerow()</b> frees a row of bits.
 
 
-<H3 id="reading">READING PBM IMAGE FILES</H3>
+<h3 id="reading">READING PBM IMAGE FILES</h3>
 
-<P><B>pbm_readpbminit()</B> reads the header from a PBM image in a PBM
+<p><b>pbm_readpbminit()</b> reads the header from a PBM image in a PBM
 file, filling in the rows, cols and format variables.
-<B>pbm_readpbmrow()</B> reads a row of bits into the <I>bitrow </I>
-array.  Format and cols were filled in by <B>pbm_readpbminit()</B>.
+<b>pbm_readpbmrow()</b> reads a row of bits into the <i>bitrow </i>
+array.  Format and cols were filled in by <b>pbm_readpbminit()</b>.
 
-<B>pbm_readpbmrow_packed()</B> is like <B>pbm_readpbmrow()</B> except
-instead of returning a <B>bits</B> array, it returns an array
-<I>packed_bits</I> of bytes with the pixels of the image row packed
+<b>pbm_readpbmrow_packed()</b> is like <b>pbm_readpbmrow()</b> except
+instead of returning a <b>bits</b> array, it returns an array
+<i>packed_bits</i> of bytes with the pixels of the image row packed
 into them.  The pixels are in order from left to right across the row
 and from the beginning of the array to the end.  Within a byte, the
 bits are in order from the most significant bit to the least
 significant bit.  If the number of pixels in the row is not a multiple
 of 8, the last byte returned is padded on the least significant bit
-side with undefined bits.  White is represented by a <B>PBM_WHITE</B>
-bit; black by <B>PBM_BLACK</B>.
+side with undefined bits.  White is represented by a <b>PBM_WHITE</b>
+bit; black by <b>PBM_BLACK</b>.
 
-<P><B>pbm_readpbm()</B> reads an entire bitmap file into memory,
+<p><b>pbm_readpbm()</b> reads an entire bitmap file into memory,
 returning the allocated array and filling in the rows and cols
-variables.  This function combines <B>pbm_readpbminit()</B>,
-<B>pbm_allocarray()</B> and <B>pbm_readpbmrow()</B>.
+variables.  This function combines <b>pbm_readpbminit()</b>,
+<b>pbm_allocarray()</b> and <b>pbm_readpbmrow()</b>.
 
 <p><b>pbm_readpbminit()</b> and <b>pbm_readpbm</b> abort the program with
 a message to Standard Error if the PBM image header is not syntactically
@@ -190,32 +190,32 @@ valid, including if it contains a number too large to be processed using
 the system's normal data structures (to wit, a number that won't fit in
 a C 'int').
 
-<H3 id="writing">WRITING PBM IMAGE FILES</H3>
+<h3 id="writing">WRITING PBM IMAGE FILES</h3>
 
-<B>pbm_writepbminit()</B> writes the header for a PBM image in a PBM
-file.  <I>forceplain</I> is a boolean value specifying that a plain
+<b>pbm_writepbminit()</b> writes the header for a PBM image in a PBM
+file.  <i>forceplain</i> is a boolean value specifying that a plain
 format (text) file to be written, as opposed to a raw format (binary)
-one.  <B>pbm_writepbmrow()</B> writes a row to a PBM file.
-<B>pbm_writepbmrow_packed()</B> is the same as
-<B>pbm_writepbmrow()</B> except that you supply the row to write as an
-array of bytes packed with bits instead of as a <B>bits</B> array.
-The format of <I>packed_bits </I> is the same as that returned by
-<B>pbm_readpbmrow()</B>.
+one.  <b>pbm_writepbmrow()</b> writes a row to a PBM file.
+<b>pbm_writepbmrow_packed()</b> is the same as
+<b>pbm_writepbmrow()</b> except that you supply the row to write as an
+array of bytes packed with bits instead of as a <b>bits</b> array.
+The format of <i>packed_bits </i> is the same as that returned by
+<b>pbm_readpbmrow()</b>.
 
-<P><B>pbm_writepbm()</B> writes the header and all data for a PBM
-image to a PBM file.  This function combines <B>pbm_writepbminit()</B>
-and <B>pbm_writepbmrow()</B>.
+<p><b>pbm_writepbm()</b> writes the header and all data for a PBM
+image to a PBM file.  This function combines <b>pbm_writepbminit()</b>
+and <b>pbm_writepbmrow()</b>.
 
-<H3 id="miscellaneous">MISCELLANEOUS</H3>
+<h3 id="miscellaneous">MISCELLANEOUS</h3>
 
-<P><B>pbm_nextimage()</B> positions a PBM input file to the next image
-in it (so that a subsequent <B>pbm_readpbminit()</B> reads its
+<p><b>pbm_nextimage()</b> positions a PBM input file to the next image
+in it (so that a subsequent <b>pbm_readpbminit()</b> reads its
 header).
 
-<P>Immediately before a call to <B>pbm_nextimage()</B>, the file must
+<p>Immediately before a call to <b>pbm_nextimage()</b>, the file must
 be positioned either at its beginning (i.e. nothing has been read from
 the file yet) or just after an image (i.e. as left by a
-<B>pbm_readpbmrow() </B> of the last row in the image).
+<b>pbm_readpbmrow() </b> of the last row in the image).
 
 <p>Note that in the raw PNM and PAM format, the next image always
 starts immediately after the previous image, so all
@@ -223,82 +223,82 @@ starts immediately after the previous image, so all
 image or the file is positioned at end-of-file.  In plain PNM, though,
 there may be white space between images.
 
-<P>If <B>pbm_nextimage() </B> successfully positions to the next
-image, it returns <B>*</B><I>eofP</I> false (0).  If there is no next
-image in the file, it returns <B>*</B><I>eofP</I> true .  If it can't
+<p>If <b>pbm_nextimage() </b> successfully positions to the next
+image, it returns <b>*</b><i>eofP</i> false (0).  If there is no next
+image in the file, it returns <b>*</b><i>eofP</i> true .  If it can't
 position or determine the file status because of a file error, it
 <a href="liberror.html#error">throws an error</a>.
 
-<P><B>pbm_check()</B> checks for the common file integrity error where
+<p><b>pbm_check()</b> checks for the common file integrity error where
 the file is the wrong size to contain all the image data.
-<B>pbm_check()</B> assumes the file is positioned after an image
-header (as if <B>pbm_readpbminit() </B> was the last operation on the
+<b>pbm_check()</b> assumes the file is positioned after an image
+header (as if <b>pbm_readpbminit() </b> was the last operation on the
 file).  It checks the file size to see if the number of bytes left in
 the file are the number required to contain the image raster.  If the
-file is too short, <B>pbm_check()</B> causes the program t <a
+file is too short, <b>pbm_check()</b> causes the program t <a
 href="liberror.html#error">throws an error</a>.  Otherwise, it returns
-one of the following values (enumerations of the <B>enum
-pm_check_code</B> type) as <B>*</B><I>retval</I>:
+one of the following values (enumerations of the <b>enum
+pm_check_code</b> type) as <b>*</b><i>retval</i>:
 
-<DL COMPACT>
-<DT><B>PM_CHECK_OK</B>
+<dl compact>
+<dt><b>PM_CHECK_OK</b>
 
-<DD>The file's size is exactly what is required to hold the image raster.
+<dd>The file's size is exactly what is required to hold the image raster.
 
-<DT><B>PM_CHECK_UNKNOWN_TYPE</B>
+<dt><b>PM_CHECK_UNKNOWN_TYPE</b>
 
-<DD><I>format</I> is not a format whose size <B>pbm_check()</B> can
-anticipate.  The only format with which <B>pbm_check()</B> can deal is
+<dd><i>format</i> is not a format whose size <b>pbm_check()</b> can
+anticipate.  The only format with which <b>pbm_check()</b> can deal is
 raw PBM format.
 
-<DT><B>PM_CHECK_TOO_LONG</B>
+<dt><b>PM_CHECK_TOO_LONG</b>
 
-<DD>The file is longer than it needs to be to contain the image
+<dd>The file is longer than it needs to be to contain the image
 raster.  The extra data might be another image.
 
-<DT><B>PM_CHECK_UNCHECKABLE</B>
+<dt><b>PM_CHECK_UNCHECKABLE</b>
 
-<DD>The file is not a kind that has a predictable size, so there is no
-simple way for <B>pbm_check()</B> to know if it is the right size.
+<dd>The file is not a kind that has a predictable size, so there is no
+simple way for <b>pbm_check()</b> to know if it is the right size.
 Only a regular file has predictable size.  A pipe is a common example
 of a file that does not.
 
-</DL>
+</dl>
 
-<P><I>check_type</I> must have the value <B>PM_CHECK_BASIC </B> (an
-enumerated value of the <B>pm_check_type</B> enumerated type).
-Otherwise, the effect of <B>pbm_check()</B> is unpredictable.  This
+<p><i>check_type</i> must have the value <b>PM_CHECK_BASIC </b> (an
+enumerated value of the <b>pm_check_type</b> enumerated type).
+Otherwise, the effect of <b>pbm_check()</b> is unpredictable.  This
 argument exists for future backward compatible expansion of the
-function of <B>pbm_check()</B>.
+function of <b>pbm_check()</b>.
 
-<H2 id="seealso">SEE ALSO</H2>
+<h2 id="seealso">SEE ALSO</h2>
 
-<B><A HREF="libpgm.html">libpgm</A></B>,
-<B><A HREF="libppm.html">libppm</A></B>,
-<B><A HREF="libpnm.html">libpnm</A></B>,
-<B><A HREF="pbm.html">pbm</A></B>
+<b><a href="libpgm.html">libpgm</a></b>,
+<b><a href="libppm.html">libppm</a></b>,
+<b><a href="libpnm.html">libpnm</a></b>,
+<b><a href="pbm.html">pbm</a></b>
 
-<H2 id="author">AUTHOR</H2>
+<h2 id="author">AUTHOR</h2>
 
 Copyright (C) 1989, 1991 by Tony Hansen and Jef Poskanzer.
 
 
-<HR>
-<H2 id="index">Table Of Contents</H2>
-
-<UL>
-<LI><A HREF="#synopsis">SYNOPSIS</A>
-<LI><A HREF="#description">DESCRIPTION</A>
-  <UL>
-  <LI><A HREF="#types">TYPES AND CONSTANTS</A>
-  <LI><A HREF="#initialization">INITIALIZATION</A>
-  <LI><A HREF="#memorymanagement">MEMORY MANAGEMENT</A>
-  <LI><A HREF="#reading">READING PBM IMAGE FILES</A>
-  <LI><A HREF="#writing">WRITING PBM IMAGE FILES</A>
-  <LI><A HREF="#miscellaneous">MISCELLANEOUS</A>
-  </UL>
-<LI><A HREF="#seealso">SEE ALSO</A>
-<LI><A HREF="#author">AUTHOR</A>
-</UL>
-</BODY>
-</HTML>
+<hr>
+<h2 id="index">Table Of Contents</h2>
+
+<ul>
+<li><a href="#synopsis">SYNOPSIS</a>
+<li><a href="#description">DESCRIPTION</a>
+  <ul>
+  <li><a href="#types">TYPES AND CONSTANTS</a>
+  <li><a href="#initialization">INITIALIZATION</a>
+  <li><a href="#memorymanagement">MEMORY MANAGEMENT</a>
+  <li><a href="#reading">READING PBM IMAGE FILES</a>
+  <li><a href="#writing">WRITING PBM IMAGE FILES</a>
+  <li><a href="#miscellaneous">MISCELLANEOUS</a>
+  </ul>
+<li><a href="#seealso">SEE ALSO</a>
+<li><a href="#author">AUTHOR</a>
+</ul>
+</body>
+</html>
diff --git a/libpgm.html b/libpgm.html
index 7ab50524..47bf2335 100644
--- a/libpgm.html
+++ b/libpgm.html
@@ -1,206 +1,206 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD>
-<TITLE>User manual for old pgm functions</TITLE>
-<META NAME="manual_section" CONTENT="3">
-</HEAD>
-<BODY>
-<H1>pgm Functions</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html>
+<head>
+<title>User manual for old pgm functions</title>
+<meta name="manual_section" content="3">
+</head>
+<body>
+<h1>pgm Functions</h1>
 Updated: 8 September 2007
-<BR>
-<A HREF="#index">Table Of Contents</A>
-<H2>NAME</H2>
+<br>
+<a href="#index">Table Of Contents</a>
+<h2>NAME</h2>
 libpgm - libnetpbm functions to read and write PGM image files
 
-<H2 id="synopsis">SYNOPSIS</H2>
-
-<B>#include &lt;netpbm/pgm.h&gt;</B>
-
-<P>
-<B>void pgm_init( </B>
-<B>int *</B><I>argcP</I><B>,</B>
-<B>char *</B><I>argv</I><B>[]</B>
-<B>);</B>
-
-<P>
-<B>gray ** pgm_allocarray(</B>
-<B>int </B><I>cols</I><B>,</B>
-<B>int </B><I>rows</I><B> );</B>
-
-<P>
-<B>gray * pgm_allocrow(</B>
-<B>int</B><I>cols</I><B> );</B>
-
-<P>
-<B>void pgm_freearray(</B>
-<B>gray **</B><I>grays</I><B>,</B>
-<B>int</B><I>rows</I><B> );</B>
-
-<P>
-<B>void pgm_freerow(</B>
-<B>gray *</B><I>grayrow</I><B>);</B>
-
-<P>
-<B>void pgm_readpgminit( </B>
-<B>FILE *</B><I>fp</I><B>,</B>
-<B>int *</B><I>colsP</I><B>,</B>
-<B>int *</B><I>rowsP</I><B>,</B>
-<B>gray *</B><I>maxvalP</I><B>,</B>
-<B>int *</B><I>formatP</I><B> );</B>
-
-<P>
-<B>void pgm_readpgmrow( </B>
-<B>FILE *</B><I>fp</I><B>,</B>
-<B>gray *</B><I>grayrow</I><B>,</B>
-<B>int </B><I>cols</I><B>,</B>
-<B>gray </B><I>maxval</I><B>,</B>
-<B>int </B><I>format</I><B> );</B>
-
-<P>
-<B>gray ** pgm_readpgm( </B>
-<B>FILE *</B><I>fp</I><B>,</B>
-<B>int *</B><I>colsP</I><B>,</B>
-<B>int *</B><I>rowsP</I><B>,</B>
-<B>gray *</B><I>maxvalP</I><B> );</B>
-
-<P>
-<B>void pgm_writepgminit( </B>
-<B>FILE *  fp , </B>
-<B>int </B><I>cols</I><B>,</B>
-<B>int </B><I>rows</I><B>,</B>
-<B>gray </B><I>maxval</I><B>,</B>
-<B>int </B><I>forceplain</I><B> );</B>
-
-<P>
-<B>void pgm_writepgmrow( </B>
-<B>FILE *</B><I>fp</I><B>,</B>
-<B>gray *</B><I>grayrow</I><B>,</B>
-<B>int cols</B><I>,</I>
-<B>gray </B><I>maxval</I><B>,</B>
-<B>int </B><I>forceplain</I><B> );</B>
-
-<P>
-<B>void pgm_writepgm( </B>
-<B>FILE *</B><I>fp</I><B>,</B>
-<B>gray ** </B><I>grays</I><B>,</B>
-<B>int </B><I>cols</I><B>,</B>
-<B>int </B><I>rows</I><B>,</B>
-<B>gray </B><I>maxval</I><B>,</B>
-<B>int </B><I>forceplain</I><B> );</B>
-
-<P>
-<B>void pgm_writepgm( </B>
-<B>FILE *</B><I>fp</I><B>,</B>
-<B>gray **</B><I>grays</I><B>,</B>
-<B>int </B><I>cols</I><B>,</B>
-<B>int </B><I>rows</I><B>,</B>
-<B>gray </B><I>maxval</I><B>,</B>
-<B>int </B><I>forceplain</I><B> );</B>
-
-<P>
-<B>void pgm_nextimage(</B>
-<B>FILE *</B><I>file</I><B>,</B>
-<B>int * const </B><I>eofP</I><B>);</B>
-
-<P>
-<B>void pgm_check(</B>
-<B>FILE * </B><I>file</I><B>,</B>
-<B>const enum pm_check_type </B><I>check_type</I><B>,</B>
-<B>const int </B><I>format</I><B>,</B>
-<B>const int </B><I>cols</I><B>,</B>
-<B>const int </B><I>rows</I><B>,</B>
-<B>const int </B><I>maxval</I><B>,</B>
-<B>enum pm_check_code * const </B><I>retval</I><B>);</B>
-
-<P>
-<B>typedef ... gray;</B>
-
-<P>
-<B>#define PGM_MAXMAXVAL ...</B>
-
-<P>
-<B>#define PGM_OVERALLMAXVAL ...</B>
-
-<P>
-<B>#define PGM_FORMAT ...</B>
-
-<P>
-<B>#define RPGM_FORMAT ...</B>
-
-<P>
-<B>#define PGM_TYPE PGM_FORMAT</B>
-
-<P>
-<B>#define </B>
-
-<B>PGM_FORMAT_TYPE(</B><I>format</I><B>)</B>
-<B>...</B>
-
-<H2 id="description">DESCRIPTION</H2>
+<h2 id="synopsis">SYNOPSIS</h2>
+
+<b>#include &lt;netpbm/pgm.h&gt;</b>
+
+<p>
+<b>void pgm_init( </b>
+<b>int *</b><i>argcP</i><b>,</b>
+<b>char *</b><i>argv</i><b>[]</b>
+<b>);</b>
+
+<p>
+<b>gray ** pgm_allocarray(</b>
+<b>int </b><i>cols</i><b>,</b>
+<b>int </b><i>rows</i><b> );</b>
+
+<p>
+<b>gray * pgm_allocrow(</b>
+<b>int</b><i>cols</i><b> );</b>
+
+<p>
+<b>void pgm_freearray(</b>
+<b>gray **</b><i>grays</i><b>,</b>
+<b>int</b><i>rows</i><b> );</b>
+
+<p>
+<b>void pgm_freerow(</b>
+<b>gray *</b><i>grayrow</i><b>);</b>
+
+<p>
+<b>void pgm_readpgminit( </b>
+<b>FILE *</b><i>fp</i><b>,</b>
+<b>int *</b><i>colsP</i><b>,</b>
+<b>int *</b><i>rowsP</i><b>,</b>
+<b>gray *</b><i>maxvalP</i><b>,</b>
+<b>int *</b><i>formatP</i><b> );</b>
+
+<p>
+<b>void pgm_readpgmrow( </b>
+<b>FILE *</b><i>fp</i><b>,</b>
+<b>gray *</b><i>grayrow</i><b>,</b>
+<b>int </b><i>cols</i><b>,</b>
+<b>gray </b><i>maxval</i><b>,</b>
+<b>int </b><i>format</i><b> );</b>
+
+<p>
+<b>gray ** pgm_readpgm( </b>
+<b>FILE *</b><i>fp</i><b>,</b>
+<b>int *</b><i>colsP</i><b>,</b>
+<b>int *</b><i>rowsP</i><b>,</b>
+<b>gray *</b><i>maxvalP</i><b> );</b>
+
+<p>
+<b>void pgm_writepgminit( </b>
+<b>FILE *  fp , </b>
+<b>int </b><i>cols</i><b>,</b>
+<b>int </b><i>rows</i><b>,</b>
+<b>gray </b><i>maxval</i><b>,</b>
+<b>int </b><i>forceplain</i><b> );</b>
+
+<p>
+<b>void pgm_writepgmrow( </b>
+<b>FILE *</b><i>fp</i><b>,</b>
+<b>gray *</b><i>grayrow</i><b>,</b>
+<b>int cols</b><i>,</i>
+<b>gray </b><i>maxval</i><b>,</b>
+<b>int </b><i>forceplain</i><b> );</b>
+
+<p>
+<b>void pgm_writepgm( </b>
+<b>FILE *</b><i>fp</i><b>,</b>
+<b>gray ** </b><i>grays</i><b>,</b>
+<b>int </b><i>cols</i><b>,</b>
+<b>int </b><i>rows</i><b>,</b>
+<b>gray </b><i>maxval</i><b>,</b>
+<b>int </b><i>forceplain</i><b> );</b>
+
+<p>
+<b>void pgm_writepgm( </b>
+<b>FILE *</b><i>fp</i><b>,</b>
+<b>gray **</b><i>grays</i><b>,</b>
+<b>int </b><i>cols</i><b>,</b>
+<b>int </b><i>rows</i><b>,</b>
+<b>gray </b><i>maxval</i><b>,</b>
+<b>int </b><i>forceplain</i><b> );</b>
+
+<p>
+<b>void pgm_nextimage(</b>
+<b>FILE *</b><i>file</i><b>,</b>
+<b>int * const </b><i>eofP</i><b>);</b>
+
+<p>
+<b>void pgm_check(</b>
+<b>FILE * </b><i>file</i><b>,</b>
+<b>const enum pm_check_type </b><i>check_type</i><b>,</b>
+<b>const int </b><i>format</i><b>,</b>
+<b>const int </b><i>cols</i><b>,</b>
+<b>const int </b><i>rows</i><b>,</b>
+<b>const int </b><i>maxval</i><b>,</b>
+<b>enum pm_check_code * const </b><i>retval</i><b>);</b>
+
+<p>
+<b>typedef ... gray;</b>
+
+<p>
+<b>#define PGM_MAXMAXVAL ...</b>
+
+<p>
+<b>#define PGM_OVERALLMAXVAL ...</b>
+
+<p>
+<b>#define PGM_FORMAT ...</b>
+
+<p>
+<b>#define RPGM_FORMAT ...</b>
+
+<p>
+<b>#define PGM_TYPE PGM_FORMAT</b>
+
+<p>
+<b>#define </b>
+
+<b>PGM_FORMAT_TYPE(</b><i>format</i><b>)</b>
+<b>...</b>
+
+<h2 id="description">DESCRIPTION</h2>
 
 <p>These library functions are part of <a href="index.html">Netpbm</a>.
 
-<H3 id="types">TYPES AND CONSTANTS</H3>
+<h3 id="types">TYPES AND CONSTANTS</h3>
 
-<P>Each <B>gray</B> should contain only the values between <B>0</B>
-and <B>PGM_OVERALLMAXVAL</B>.
+<p>Each <b>gray</b> should contain only the values between <b>0</b>
+and <b>PGM_OVERALLMAXVAL</b>.
 
-<P><B>PGM_OVERALLMAXVAL</B> is the maximum value of a maxval in a PGM
-file.  <B>PGM_MAXMAXVAL</B> is the maximum value of a maxval in a PGM
+<p><b>PGM_OVERALLMAXVAL</b> is the maximum value of a maxval in a PGM
+file.  <b>PGM_MAXMAXVAL</b> is the maximum value of a maxval in a PGM
 file that is compatible with the PGM format as it existed before April
 2000.  It is also the maximum value of a maxval that results in the
 minimum possible raster size for a particular image.  I.e an image
-with a maxval higher than <B>PGM_MAXMAXVAL</B> cannot be read or
+with a maxval higher than <b>PGM_MAXMAXVAL</b> cannot be read or
 generated by old PGM processing programs and requires more file space.
 
-<P><B>PGM_FORMAT </B> is the format code for a Plain PGM format image
-file.  <B>RPGM_FORMAT</B> is the format code for a Raw PGM format
-image file.  <B>PGM_TYPE </B> is the format type code for the PGM
-formats.  <B>PGM_FORMAT_TYPE</B> is a macro that generates code to
+<p><b>PGM_FORMAT </b> is the format code for a Plain PGM format image
+file.  <b>RPGM_FORMAT</b> is the format code for a Raw PGM format
+image file.  <b>PGM_TYPE </b> is the format type code for the PGM
+formats.  <b>PGM_FORMAT_TYPE</b> is a macro that generates code to
 compute the format type code of a PBM or PGM format from the format
 code which is its argument.
 
-<H3 id="initialization">INITIALIZATION</H3>
+<h3 id="initialization">INITIALIZATION</h3>
 
 <p><b>pgm_init()</b> is obsolete (at least since Netpbm 9.25 (March 2002)).
 Use <a href="libpm.html#initialization"><b>pm_proginit()</b></a> instead.
 
-<P><b>pgm_init()</b> is identical to <b>pm_proginit</b>.
+<p><b>pgm_init()</b> is identical to <b>pm_proginit</b>.
 
 
-<H3 id="memorymanagement">MEMORY MANAGEMENT</H3>
+<h3 id="memorymanagement">MEMORY MANAGEMENT</h3>
 
-<B>pgm_allocarray()</B> allocates an array of grays.
+<b>pgm_allocarray()</b> allocates an array of grays.
 
-<P><B>pgm_allocrow()</B> allocates a row of the given number of grays.
+<p><b>pgm_allocrow()</b> allocates a row of the given number of grays.
 
-<P><B>pgm_freearray()</B> frees the array allocated with
-<B>pgm_allocarray()</B> containing the given number of rows.
+<p><b>pgm_freearray()</b> frees the array allocated with
+<b>pgm_allocarray()</b> containing the given number of rows.
 
-<P><B>pgm_freerow()</B> frees a row of grays allocated with
-<B>pgm_allocrow()</B>.
+<p><b>pgm_freerow()</b> frees a row of grays allocated with
+<b>pgm_allocrow()</b>.
 
-<H3 id="reading">READING FILES</H3>
+<h3 id="reading">READING FILES</h3>
 
-<P>If a function in this section is called on a PBM format file, it
+<p>If a function in this section is called on a PBM format file, it
 translates the PBM file into a PGM file on the fly and functions as if
-it were called on the equivalent PGM file.  The <I>format</I> value
-returned by <B>pgm_readpgminit()</B> is, however, not translated.  It
+it were called on the equivalent PGM file.  The <i>format</i> value
+returned by <b>pgm_readpgminit()</b> is, however, not translated.  It
 represents the actual format of the PBM file.
 
-<P><B>pgm_readpgminit()</B> reads the header of a PGM file, returning
+<p><b>pgm_readpgminit()</b> reads the header of a PGM file, returning
 all the information from the header and leaving the file positioned
 just after the header.
 
-<P><B>pgm_readpgmrow()</B> reads a row of grays into the <I>grayrow
-</I> array.  <I>format</I>, <I>cols</I>, and <I>maxval </I> are the
-values returned by <B>pgm_readpgminit()</B>.
+<p><b>pgm_readpgmrow()</b> reads a row of grays into the <i>grayrow
+</i> array.  <i>format</i>, <i>cols</i>, and <i>maxval </i> are the
+values returned by <b>pgm_readpgminit()</b>.
 
-<P><B>pgm_readpgm()</B> reads an entire PGM image into memory,
+<p><b>pgm_readpgm()</b> reads an entire PGM image into memory,
 returning the allocated array as its return value and returning the
-information from the header as <I>rows</I>, <I>cols</I>, and
-<I>maxval</I>.  This function combines <B>pgm_readpgminit()</B>,
-<B>pgm_allocarray()</B>, and <B>pgm_readpgmrow()</B>.
+information from the header as <i>rows</i>, <i>cols</i>, and
+<i>maxval</i>.  This function combines <b>pgm_readpgminit()</b>,
+<b>pgm_allocarray()</b>, and <b>pgm_readpgmrow()</b>.
 
 <p><b>pgm_readpgminit()</b> and <b>pgm_readpgm</b> abort the program with
 a message to Standard Error if the PGM image header is not syntactically
@@ -209,59 +209,59 @@ the system's normal data structures (to wit, a number that won't fit in
 a C 'int').
 
 
-<H3 id="writing">WRITING FILES</H3>
+<h3 id="writing">WRITING FILES</h3>
 
-<B>pgm_writepgminit()</B> writes the header for a PGM file and leaves
+<b>pgm_writepgminit()</b> writes the header for a PGM file and leaves
 it positioned just after the header.
 
-<P><I>forceplain</I> is a logical value that tells
-<B>pgm_writepgminit() </B> to write a header for a plain PGM format
+<p><i>forceplain</i> is a logical value that tells
+<b>pgm_writepgminit() </b> to write a header for a plain PGM format
 file, as opposed to a raw PGM format file.
 
-<P><B>pgm_writepgmrow()</B> writes the row <I>grayrow</I> to a PGM
-file.  For meaningful results, <I>cols</I>, <I>maxval</I>, and
-<I>forceplain</I> must be the same as was used with
-<B>pgm_writepgminit()</B>.
+<p><b>pgm_writepgmrow()</b> writes the row <i>grayrow</i> to a PGM
+file.  For meaningful results, <i>cols</i>, <i>maxval</i>, and
+<i>forceplain</i> must be the same as was used with
+<b>pgm_writepgminit()</b>.
 
-<P><B>pgm_writepgm()</B> write the header and all data for a PGM
-image.  This function combines <B>pgm_writepgminit()</B> and
-<B>pgm_writepgmrow()</B>.
+<p><b>pgm_writepgm()</b> write the header and all data for a PGM
+image.  This function combines <b>pgm_writepgminit()</b> and
+<b>pgm_writepgmrow()</b>.
 
-<H3 id="miscellaneous">MISCELLANEOUS</H3>
+<h3 id="miscellaneous">MISCELLANEOUS</h3>
 
-<P><B>pgm_nextimage()</B> positions a PGM input file to the next image
-in it (so that a subsequent <B>pgm_readpgminit()</B> reads its
+<p><b>pgm_nextimage()</b> positions a PGM input file to the next image
+in it (so that a subsequent <b>pgm_readpgminit()</b> reads its
 header).
 
-<P><B>pgm_nextimage()</B> is analogous to <B>pbm_nextimage()</B>, but
+<p><b>pgm_nextimage()</b> is analogous to <b>pbm_nextimage()</b>, but
 works on PGM and PBM files.
 
-<P><B>pgm_check() </B> checks for the common file integrity error
+<p><b>pgm_check() </b> checks for the common file integrity error
 where the file is the wrong size to contain all the image data.
 
-<P><B>pgm_check() </B> is analogous to <B>pbm_check()</B>, but works
+<p><b>pgm_check() </b> is analogous to <b>pbm_check()</b>, but works
 on PGM and PBM files.
 
-<H2 id="seealso">SEE ALSO</H2>
-
-<B><A HREF="libpbm.html">libpbm</A></B>,
-<B><A HREF="libppm.html">libppm</A></B>,
-<B><A HREF="libpnm.html">libpnm</A></B>
-
-<HR>
-<H2 id="index">Table Of Contents</H2>
-<UL>
-<LI><A HREF="#synopsis">SYNOPSIS</A>
-<LI><A HREF="#description">DESCRIPTION</A>
-  <UL>
-  <LI><A HREF="#types">TYPES AND CONSTANTS</A>
-  <LI><A HREF="#initialization">INITIALIZATION</A>
-  <LI><A HREF="#memorymanagement">MEMORY MANAGEMENT</A>
-  <LI><A HREF="#reading">READING FILES</A>
-  <LI><A HREF="#writing">WRITING FILES</A>
-  <LI><A HREF="#miscellaneous">MISCELLANEOUS</A>
-  </UL>
-<LI><A HREF="#seealso">SEE ALSO</A>
-</UL>
-</BODY>
-</HTML>
+<h2 id="seealso">SEE ALSO</h2>
+
+<b><a href="libpbm.html">libpbm</a></b>,
+<b><a href="libppm.html">libppm</a></b>,
+<b><a href="libpnm.html">libpnm</a></b>
+
+<hr>
+<h2 id="index">Table Of Contents</h2>
+<ul>
+<li><a href="#synopsis">SYNOPSIS</a>
+<li><a href="#description">DESCRIPTION</a>
+  <ul>
+  <li><a href="#types">TYPES AND CONSTANTS</a>
+  <li><a href="#initialization">INITIALIZATION</a>
+  <li><a href="#memorymanagement">MEMORY MANAGEMENT</a>
+  <li><a href="#reading">READING FILES</a>
+  <li><a href="#writing">WRITING FILES</a>
+  <li><a href="#miscellaneous">MISCELLANEOUS</a>
+  </ul>
+<li><a href="#seealso">SEE ALSO</a>
+</ul>
+</body>
+</html>
diff --git a/libpm.html b/libpm.html
index c60f1e91..34dcbcd1 100644
--- a/libpm.html
+++ b/libpm.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
 <html> <head>
 <title>Libnetbpm Utility Functions</title>
 <meta name="manual_section" content="3">
@@ -8,7 +8,7 @@
 
 <p>Updated: 27 August 2006
 
-<p><A HREF="#toc">Table Of Contents</A>
+<p><a href="#toc">Table Of Contents</a>
 
 <p>These library functions are part of <a href="index.html">Netpbm</a>.
 
@@ -25,23 +25,23 @@ Manual</a>
 
 <p>To use these services, #include <b>pam.h</b>.
 
-<H2 id="functions">Functions</H2>
+<h2 id="functions">Functions</h2>
 
 <h3 id="initialization">Initialization</h3>
 
 <h4>Overview</h4>
 
 <p>
-<B>void pm_init(</B>
-<B>const char * </B><I>progname</I><B>,</B>
-<B>unsigned int </B><I>flags</I>
-<B>);</B>
+<b>void pm_init(</b>
+<b>const char * </b><i>progname</i><b>,</b>
+<b>unsigned int </b><i>flags</i>
+<b>);</b>
 
 <p>
-<B>void pm_proginit(</B>
-<B>int * </B><I>argcP</I><B>,</B>
-<B>char * </B><I>argv</I><B>[]</B>
-<B>);</B>
+<b>void pm_proginit(</b>
+<b>int * </b><i>argcP</i><b>,</b>
+<b>char * </b><i>argv</i><b>[]</b>
+<b>);</b>
 
 <h4>Description</h4>
 
@@ -54,7 +54,7 @@ them from the argument list.
 services, need not invoke <b>pm_proginit</b>.  But such a program
 must invoke <b>pm_init()</b>.
 
-<P>By "Netpbm program," we mean a program that is part of
+<p>By "Netpbm program," we mean a program that is part of
 the Netpbm package or is intended to act like one.  <b>pm_proginit()</b>
 does things that all Netpbm programs do by convention.  For example,
 it scans the argument list for <a href="index.html#commonoptions">
@@ -92,56 +92,56 @@ for backward compatibility and are identical the <b>pm_proginit()</b>.
 <h3 id="file">File Or Image Stream Access</h3>
 
 <h4>Overview</h4>
-<P>
-<B>FILE *pm_openr(</b>
-<b>char *</B> <I>name</I>
-<B>);</B>
-
-<P>
-<B>FILE *pm_openw(</b>
-<b>char *</B> <I>name</I>
-<B>);</B>
-
-<P>
-<B>FILE *pm_openr_seekable(</b>
-<b>const char *</B> <I>name</I>
-<B>);</B>
-
-<P>
-<B>FILE *pm_close(</b>
-<b>FILE *</B> <I>fp</I>
-<B>);</B>
-
-<P>
-<B>void pm_tell2(</b>
-<b>FILE * </B> <I>fileP</I><B>,</b>
-<b>pm_filepos *</B> <I>fileposP</I><B>,</b>
+<p>
+<b>FILE *pm_openr(</b>
+<b>char *</b> <i>name</i>
+<b>);</b>
+
+<p>
+<b>FILE *pm_openw(</b>
+<b>char *</b> <i>name</i>
+<b>);</b>
+
+<p>
+<b>FILE *pm_openr_seekable(</b>
+<b>const char *</b> <i>name</i>
+<b>);</b>
+
+<p>
+<b>FILE *pm_close(</b>
+<b>FILE *</b> <i>fp</i>
+<b>);</b>
+
+<p>
+<b>void pm_tell2(</b>
+<b>FILE * </b> <i>fileP</i><b>,</b>
+<b>pm_filepos *</b> <i>fileposP</i><b>,</b>
 <b>unsigned int</b> <i>fileposSize</i>
-<B>);</B>
+<b>);</b>
 
-<P>
-<B>unsigned int pm_tell(</b>
-<b>FILE *</B> <I>fileP</I>
-<B>);</B>
+<p>
+<b>unsigned int pm_tell(</b>
+<b>FILE *</b> <i>fileP</i>
+<b>);</b>
 
-<P>
-<B>void pm_seek2(</b>
-<b>FILE * </B> <I>fileP</I><B>,</b>
-<b>const pm_filepos *</B> <I>fileposP</I><B>,</b>
+<p>
+<b>void pm_seek2(</b>
+<b>FILE * </b> <i>fileP</i><b>,</b>
+<b>const pm_filepos *</b> <i>fileposP</i><b>,</b>
 <b>unsigned int</b> <i>fileposSize</i>
-<B>);</B>
+<b>);</b>
 
-<P>
-<B>void pm_seek(</b>
-<b>FILE * </B> <I>fileP</I><B>,</b>
-<b>unsigned long</B> <I>filepos</I>
-<B>);</B>
+<p>
+<b>void pm_seek(</b>
+<b>FILE * </b> <i>fileP</i><b>,</b>
+<b>unsigned long</b> <i>filepos</i>
+<b>);</b>
 
-<P>
-<B>char *pm_read_unknown_size(</b>
-<b>FILE *</B> <I>fp</I><B>,</b>
-<b>long *</B> <I>nread</I>
-<B>);</B>
+<p>
+<b>char *pm_read_unknown_size(</b>
+<b>FILE *</b> <i>fp</i><b>,</b>
+<b>long *</b> <i>nread</i>
+<b>);</b>
 
 
 <h4>Description</h4>
@@ -154,30 +154,30 @@ using the standard large file interface.  Before Netpbm 10.15 (April 2003),
 though, they would fail to open any file that large or process any offset
 in a file that could not be represented in 32 bits.
 
-<p><B>pm_openr()</B> opens the given file for reading, with
-appropriate error checking.  A filename of <B>-</B> is taken to mean
-Standard Input.  <B>pm_openw()</B> opens the given file for writing,
-with appropriate error checking.  <B>pm_close()</B> closes the file
+<p><b>pm_openr()</b> opens the given file for reading, with
+appropriate error checking.  A filename of <b>-</b> is taken to mean
+Standard Input.  <b>pm_openw()</b> opens the given file for writing,
+with appropriate error checking.  <b>pm_close()</b> closes the file
 descriptor, with appropriate error checking.
 
-<P><B>pm_openr_seekable()</B> appears to open the file just like
-<B>pm_openr()</B>, but the file thus opened is guaranteed to be
+<p><b>pm_openr_seekable()</b> appears to open the file just like
+<b>pm_openr()</b>, but the file thus opened is guaranteed to be
 seekable (you can use ftell() and fseek() on it).
-<B>pm_openr_seekable()</B> pulls this off by copying the entire file
+<b>pm_openr_seekable()</b> pulls this off by copying the entire file
 to a temporary file and giving you the handle of the temporary file,
 if it has to.  If the file you name is a regular file, it's already
-seekable so <B>pm_openr_seekable()</B> just does the same thing as
-<B>pm_openr()</B>.
+seekable so <b>pm_openr_seekable()</b> just does the same thing as
+<b>pm_openr()</b>.
 
 But if it is, say, a pipe, it isn't seekable.  So
-<B>pm_openr_seekable()</B> reads the pipe until EOF into a temporary
+<b>pm_openr_seekable()</b> reads the pipe until EOF into a temporary
 file, then opens that temporary file and returns the handle of the
-temporary file.  The temporary file is seekable.  <P> The file
-<B>pm_openr_seekable()</B> creates is one that the operating system
+temporary file.  The temporary file is seekable.  <p> The file
+<b>pm_openr_seekable()</b> creates is one that the operating system
 recognizes as temporary, so when you close the file, by any means, it
 gets deleted.
 
-<P>
+<p>
 You need a seekable file if you intend to make multiple passes through
 the file.  The only alternative is to read the entire image into
 memory and work from that copy.  That may use too much memory.  Note
@@ -186,11 +186,11 @@ memory.  As much as 96 times less space!  Each sample is an integer in
 the buffer, which is usually 96 bits.  In the file, a sample may be as
 small as 1 bit and rarely more than 8 bits.
 
-<P><B>pm_tell2()</B> returns a handle for the current position of the
+<p><b>pm_tell2()</b> returns a handle for the current position of the
 image stream (file), whether it be the header or a row of the raster.
-Use the handle as an argument to <B>pm_seek2()</B> to reposition the
+Use the handle as an argument to <b>pm_seek2()</b> to reposition the
 file there later.  The file must be seekable (which you can ensure by
-opening it with <B>pm_openr_seekable()</B>) or this may fail.
+opening it with <b>pm_openr_seekable()</b>) or this may fail.
 
 <p>The file position handle is of type <b>pm_filepos</b>, which is
 intended to be opaque, i.e. used only with these two functions.  In
@@ -209,145 +209,145 @@ bits.
 <p><b>pm_tell2()</b> and <b>pm_seek2()</b> replaced <b>pm_tell()</b> and
 <b>pm_seek()</b> in Netpbm 10.15 (April 2003).
 
-<P><B>pm_read_unknown_size()</B> reads an entire file or input stream
+<p><b>pm_read_unknown_size()</b> reads an entire file or input stream
 of unknown size to a buffer.  It allocates more memory as needed.  The
-calling routine has to free the allocated buffer with <B>free()</B>.
+calling routine has to free the allocated buffer with <b>free()</b>.
 
-<P><B>pm_read_unknown_size()</B> returns a pointer to the allocated
-buffer.  The <B>nread</B> argument returns the number of bytes read.
+<p><b>pm_read_unknown_size()</b> returns a pointer to the allocated
+buffer.  The <b>nread</b> argument returns the number of bytes read.
 
 
 <h3 id="endian">Endian I/O</h3>
 
 <h4>Entry Points</h4>
 
-<P>
-<B>void pm_readchar(</b>
-<b>FILE *</B> <I>in</I><B>,</b>
-<b>char *</B> <I>sP</I>
-<B>);</B>
-
-<P>
-<B>void pm_writechar(</b>
-<b>FILE *</B> <I>out</I><B>,</b>
-<b>char</B> <I>s</I>
-<B>);</B>
-
-<P>
-<B>int pm_readbigshort(</b>
-<b>FILE *</B> <I>in</I><B>,</b>
-<b>short *</B> <I>sP</I>
-<B>);</B>
-
-<P>
-<B>int pm_writebigshort(</b>
-<b>FILE *</B> <I>out</I><B>,</b>
-<b>short</B> <I>s</I>
-<B>);</B>
-
-<P>
-<B>int pm_readbiglong(</b>
-<b>FILE *</B> <I>in</I><B>,</b>
-<b>long *</B> <I>lP</I>
-<B>);</B>
-
-<P>
-<B>int pm_writebiglong(</b>
-<b>FILE *</B> <I>out</I><B>,</b>
-<b>long</B> <I>l</I>
-<B>);</B>
-
-<P>
-<B>int pm_readlittleshort(</b>
-<b>FILE *</B> <I>in</I><B>,</b>
-<b>short *</B> <I>sP</I>
-<B>);</B>
-
-<P>
-<B>int pm_writelittleshort(</b>
-<b>FILE *</B> <I>out</I><B>,</b>
-<b>short</B> <I>s</I>
-<B>);</B>
-
-<P>
-<B>int pm_readlittlelong(</b>
-<b>FILE *</B> <I>in</I><B>,</b>
-<b>long *</B> <I>lP</I>
-<B>);</B>
-
-<P>
-<B>int pm_writelittlelong(</b>
-<b>FILE *</B> <I>out</I><B>,</b>
-<b>long</B> <I>l</I>
-<B>);</B>
-
-<P>
-<B>void pm_readcharu(</b>
-<b>FILE *</B> <I>in</I><B>,</b>
-<b>char *</B> <I>sP</I>
-<B>);</B>
-
-<P>
-<B>void pm_writecharu(</b>
-<b>FILE *</B> <I>out</I><B>,</b>
-<b>char</B> <I>s</I>
-<B>);</B>
-
-<P>
-<B>int pm_readbigshortu(</b>
-<b>FILE *</B> <I>in</I><B>,</b>
-<b>short *</B> <I>sP</I>
-<B>);</B>
-
-<P>
-<B>int pm_writebigshortu(</b>
-<b>FILE *</B> <I>out</I><B>,</b>
-<b>short</B> <I>s</I>
-<B>);</B>
-
-<P>
-<B>int pm_readbiglongu(</b>
-<b>FILE *</B> <I>in</I><B>,</b>
-<b>long *</B> <I>lP</I>
-<B>);</B>
-
-<P>
-<B>int pm_writebiglongu(</b>
-<b>FILE *</B> <I>out</I><B>,</b>
-<b>long</B> <I>l</I>
-<B>);</B>
-
-<P>
-<B>int pm_readlittleshortu(</b>
-<b>FILE *</B> <I>in</I><B>,</b>
-<b>short *</B> <I>sP</I>
-<B>);</B>
-
-<P>
-<B>int pm_writelittleshortu(</b>
-<b>FILE *</B> <I>out</I><B>,</b>
-<b>short</B> <I>s</I>
-<B>);</B>
-
-<P>
-<B>int pm_readlittlelongu(</b>
-<b>FILE *</B> <I>in</I><B>,</b>
-<b>long *</B> <I>lP</I>
-<B>);</B>
-
-<P>
-<B>int pm_writelittlelongu(</b>
-<b>FILE *</B> <I>out</I><B>,</b>
-<b>long</B> <I>l</I>
-<B>);</B>
+<p>
+<b>void pm_readchar(</b>
+<b>FILE *</b> <i>in</i><b>,</b>
+<b>char *</b> <i>sP</i>
+<b>);</b>
+
+<p>
+<b>void pm_writechar(</b>
+<b>FILE *</b> <i>out</i><b>,</b>
+<b>char</b> <i>s</i>
+<b>);</b>
+
+<p>
+<b>int pm_readbigshort(</b>
+<b>FILE *</b> <i>in</i><b>,</b>
+<b>short *</b> <i>sP</i>
+<b>);</b>
+
+<p>
+<b>int pm_writebigshort(</b>
+<b>FILE *</b> <i>out</i><b>,</b>
+<b>short</b> <i>s</i>
+<b>);</b>
+
+<p>
+<b>int pm_readbiglong(</b>
+<b>FILE *</b> <i>in</i><b>,</b>
+<b>long *</b> <i>lP</i>
+<b>);</b>
+
+<p>
+<b>int pm_writebiglong(</b>
+<b>FILE *</b> <i>out</i><b>,</b>
+<b>long</b> <i>l</i>
+<b>);</b>
+
+<p>
+<b>int pm_readlittleshort(</b>
+<b>FILE *</b> <i>in</i><b>,</b>
+<b>short *</b> <i>sP</i>
+<b>);</b>
+
+<p>
+<b>int pm_writelittleshort(</b>
+<b>FILE *</b> <i>out</i><b>,</b>
+<b>short</b> <i>s</i>
+<b>);</b>
+
+<p>
+<b>int pm_readlittlelong(</b>
+<b>FILE *</b> <i>in</i><b>,</b>
+<b>long *</b> <i>lP</i>
+<b>);</b>
+
+<p>
+<b>int pm_writelittlelong(</b>
+<b>FILE *</b> <i>out</i><b>,</b>
+<b>long</b> <i>l</i>
+<b>);</b>
+
+<p>
+<b>void pm_readcharu(</b>
+<b>FILE *</b> <i>in</i><b>,</b>
+<b>char *</b> <i>sP</i>
+<b>);</b>
+
+<p>
+<b>void pm_writecharu(</b>
+<b>FILE *</b> <i>out</i><b>,</b>
+<b>char</b> <i>s</i>
+<b>);</b>
+
+<p>
+<b>int pm_readbigshortu(</b>
+<b>FILE *</b> <i>in</i><b>,</b>
+<b>short *</b> <i>sP</i>
+<b>);</b>
+
+<p>
+<b>int pm_writebigshortu(</b>
+<b>FILE *</b> <i>out</i><b>,</b>
+<b>short</b> <i>s</i>
+<b>);</b>
+
+<p>
+<b>int pm_readbiglongu(</b>
+<b>FILE *</b> <i>in</i><b>,</b>
+<b>long *</b> <i>lP</i>
+<b>);</b>
+
+<p>
+<b>int pm_writebiglongu(</b>
+<b>FILE *</b> <i>out</i><b>,</b>
+<b>long</b> <i>l</i>
+<b>);</b>
+
+<p>
+<b>int pm_readlittleshortu(</b>
+<b>FILE *</b> <i>in</i><b>,</b>
+<b>short *</b> <i>sP</i>
+<b>);</b>
+
+<p>
+<b>int pm_writelittleshortu(</b>
+<b>FILE *</b> <i>out</i><b>,</b>
+<b>short</b> <i>s</i>
+<b>);</b>
+
+<p>
+<b>int pm_readlittlelongu(</b>
+<b>FILE *</b> <i>in</i><b>,</b>
+<b>long *</b> <i>lP</i>
+<b>);</b>
+
+<p>
+<b>int pm_writelittlelongu(</b>
+<b>FILE *</b> <i>out</i><b>,</b>
+<b>long</b> <i>l</i>
+<b>);</b>
 
 <h4>Description</h4>
 
-<B>pm_readchar()</B>, <B>pm_writechar()</B>, <B>pm_readbigshort()</B>,
-<B>pm_writebigshort()</B>, <B>pm_readbiglong()</B>,
-<B>pm_writebiglong()</B>, <B>pm_readlittleshort()</B>,
-<B>pm_writelittleshort()</B>, <B>pm_readlittlelong()</B>, and
-<B>pm_writelittlelong()</B> are routines to read and write 1-byte,
+<b>pm_readchar()</b>, <b>pm_writechar()</b>, <b>pm_readbigshort()</b>,
+<b>pm_writebigshort()</b>, <b>pm_readbiglong()</b>,
+<b>pm_writebiglong()</b>, <b>pm_readlittleshort()</b>,
+<b>pm_writelittleshort()</b>, <b>pm_readlittlelong()</b>, and
+<b>pm_writelittlelong()</b> are routines to read and write 1-byte,
 2-byte, and 4-byte pure binary integers in either big- or
 little-endian byte order.  Note that a "long int" C type might
 be wider than 4 bytes, but the "long" routines still read and
@@ -356,7 +356,7 @@ write 4 bytes.
 <p><b>pm_readbiglongu()</b>, etc. (names ending in <b>u</b>) are the same
 except they work on unsigned versions of the type.
 
-<P>The routines with declared return values always return 0.  Before
+<p>The routines with declared return values always return 0.  Before
 Netpbm 10.27 (March 2005), they returned -1 on failure, including EOF.
 Now, they issue an error message to Standard Error and abort the program
 if the I/O fails or encounters EOF.
@@ -364,48 +364,48 @@ if the I/O fails or encounters EOF.
 <p>The 1-byte routines were new in Netpbm 10.27 (March 2005).
 The unsigned versions were new somewhere around Netpbm 10.21 (2004).
 
-<H3 id="maxval">Maxval Arithmetic</H3>
+<h3 id="maxval">Maxval Arithmetic</h3>
 
 <h4>Entry Points</h4>
-<P>
-<B>int pm_maxvaltobits(</b>
-<b>int</B> <I>maxval</I>
-<B>);</B>
-
-<P>
-<B>int pm_bitstomaxval(</b>
-<b>int</B> <I>bits</I>
-<B>);</B>
-
-<P>
-<B>unsigned int pm_lcm(</b>
-<b>unsigned int</B> <I>x</I><B>,</B>
-<B>unsigned int</B> <I>y</I><B>,</B>
-<B>unsigned int</B> <I>z</I><B>,</B>
-<B>unsigned int</B> <I>limit</I>
-<B>);</B>
+<p>
+<b>int pm_maxvaltobits(</b>
+<b>int</b> <i>maxval</i>
+<b>);</b>
+
+<p>
+<b>int pm_bitstomaxval(</b>
+<b>int</b> <i>bits</i>
+<b>);</b>
+
+<p>
+<b>unsigned int pm_lcm(</b>
+<b>unsigned int</b> <i>x</i><b>,</b>
+<b>unsigned int</b> <i>y</i><b>,</b>
+<b>unsigned int</b> <i>z</i><b>,</b>
+<b>unsigned int</b> <i>limit</i>
+<b>);</b>
 
 <h4>Description</h4>
 
-<p><B>pm_maxvaltobits()</B> and <B>pm_bitstomaxval()</B> convert
+<p><b>pm_maxvaltobits()</b> and <b>pm_bitstomaxval()</b> convert
 between a maxval and the minimum number of bits required to hold it.
 
-<P><B>pm_lcm()</B> computes the least common multiple of 3 integers.
+<p><b>pm_lcm()</b> computes the least common multiple of 3 integers.
 You also specify a limit and if the LCM would be higher than that
-limit, <B>pm_lcm()</B> just returns that limit.
+limit, <b>pm_lcm()</b> just returns that limit.
 
-<H3 id="gamma">Gamma Arithmetic</H3>
+<h3 id="gamma">Gamma Arithmetic</h3>
 
 <h4>Entry Points</h4>
-<P>
-<B>float pm_gamma709(</b>
-<b>float</B> <I>intensity</I>
-<B>);</B>
+<p>
+<b>float pm_gamma709(</b>
+<b>float</b> <i>intensity</i>
+<b>);</b>
 
-<P>
-<B>float pm_ungamma709(</b>
-<b>float</B> <I>brightness</I>
-<B>);</B>
+<p>
+<b>float pm_ungamma709(</b>
+<b>float</b> <i>brightness</i>
+<b>);</b>
 
 
 <h4>Description</h4>
@@ -444,34 +444,34 @@ value to a gamma-adjusted intensity value (roughly proportional to
 brightness, which is the human subjective perception of intensity),
 using the ITU-R Recommendation BT.709 gamma transfer function.
 
-<P><B>pm_ungamma709</b> is the inverse of <b>pm_gamma709</b>.
+<p><b>pm_ungamma709</b> is the inverse of <b>pm_gamma709</b>.
 
-<H3 id="message">Messages</H3>
+<h3 id="message">Messages</h3>
 
 <h4>Overview</h4>
 
-<P>
-<B>void pm_message(</b>
-<b>char *</B> <I>fmt</I><B>,</B>
-<B>... );</B>
+<p>
+<b>void pm_message(</b>
+<b>char *</b> <i>fmt</i><b>,</b>
+<b>... );</b>
 
 <p>
-<B>void pm_setusermessagefn(pm_usermessagefn *</B> <I>function</I><B>);</b>
+<b>void pm_setusermessagefn(pm_usermessagefn *</b> <i>function</i><b>);</b>
 
 <h4>Description</h4>
 
-<p><B>pm_message()</B> is a <B>printf()</B> style routine to write an
+<p><b>pm_message()</b> is a <b>printf()</b> style routine to write an
 informational message to the Standard Error file stream.
-<B>pm_message()</B> suppresses the message, however, if the user
-specified the <B>-quiet</B> <a href="index.html#commonoptions">common
+<b>pm_message()</b> suppresses the message, however, if the user
+specified the <b>-quiet</b> <a href="index.html#commonoptions">common
 option</a> on the command line.  Note that Netpbm programs are often
 used interactively, but also often used by programs.  In the
 interactive case, it is nice to issue messages about what the program
 is doing, but in the program case, such messages are usually
-undesirable.  By using <B>pm_message()</B> for all your messages, you
+undesirable.  By using <b>pm_message()</b> for all your messages, you
 make your program usable in both cases.  Without any effort on your
 part, program users of your program can avoid the messages by
-specifying the <B>-quiet</B> option.
+specifying the <b>-quiet</b> option.
 
 <p>Netpbm distinguishes between error messages and information
 messages; <b>pm_message()</b> is just for informational messages.  To
@@ -522,12 +522,12 @@ Example:
 <li><a href="libtmpfile.html">pm_tmpfile</a>
 </ul>
 
-<H3 id="keyword">Keyword Matching</H3>
+<h3 id="keyword">Keyword Matching</h3>
 
 <h4>Entry Points</h4>
 
-<P>
-<B>void pm_keymatch();</b>
+<p>
+<b>void pm_keymatch();</b>
 
 <h4>Description</h4>
 
@@ -536,13 +536,13 @@ option processing.  Today, you can do better option processing more
 easily with the shhopt facility.  See any recent program in the Netpbm
 package for an example.
 
-<B>pm_keymatch()</B> does a case-insensitive match of <B>str</B>
-against <B>keyword</B>.  <B>str</B> can be a leading substring of
-<B>keyword</B>, but at least <B>minchars</B> must be present.
+<b>pm_keymatch()</b> does a case-insensitive match of <b>str</b>
+against <b>keyword</b>.  <b>str</b> can be a leading substring of
+<b>keyword</b>, but at least <b>minchars</b> must be present.
 
 
-<HR>
-<H2 id="toc">Table Of Contents</H2>
+<hr>
+<h2 id="toc">Table Of Contents</h2>
 
 <ul>
   <li><a href="#functions">Functions</a>
diff --git a/libpnm.html b/libpnm.html
index 60b8a4c1..3d92ecdd 100644
--- a/libpnm.html
+++ b/libpnm.html
@@ -1,346 +1,346 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD>
-<TITLE>User manual for old pnm functions</TITLE>
-<META NAME="manual_section" CONTENT="3">
-</HEAD>
-<BODY>
-<H1>pnm Functions</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html>
+<head>
+<title>User manual for old pnm functions</title>
+<meta name="manual_section" content="3">
+</head>
+<body>
+<h1>pnm Functions</h1>
 Updated: 8 September 2007
-<BR>
-<A HREF="#index">Table Of Contents</A>
-<H2>NAME</H2>
+<br>
+<a href="#index">Table Of Contents</a>
+<h2>NAME</h2>
 libpnm - libnetpbm functions to read and write PNM image files
 
-<H2 id="synopsis">SYNOPSIS</H2>
-
-<B>#include &lt;netpbm/pnm.h&gt;</B>
-
-<P>
-<B>void pnm_init(</B>
-<B>int *</B><I>argcP</I><B>,</B>
-<B>char *</B><I>argv</I><B>[]</B>
-<B>);</B>
-
-<P>
-<B>xel ** pnm_allocarray(</B>
-<B>int </B><I>cols</I><B>,</B>
-<B>int </B><I>rows</I><B>);</B>
-
-<P>
-<B>xel * pnm_allocrow(</B>
-<B>int </B><I>cols</I><B>);</B>
-
-<P>
-<B>void pnm_freearray(</B>
-<B>xel **</B><I>xels</I><B>,</B>
-<B>int </B><I>rows</I><B>);</B>
-
-<P>
-<B>void pnm_freerow(</B>
-<B>xel *</B><I>xelrow</I><B>);</B>
-
-<P>
-<B>void pnm_readpnminit( </B>
-<B>FILE *</B><I>fp</I><B>,</B>
-<B>int *</B><I>colsP</I><B>,</B>
-<B>int *</B><I>rowsP</I><B>,</B>
-<B>xelval *</B><I>maxvalP</I><B>,</B>
-<B>int *</B><I>formatP</I><B> );</B>
-
-<P>
-<B>void pnm_readpnmrow( </B>
-<B>FILE *</B><I>fp</I><B>,</B>
-<B>xel *</B><I>xelrow</I><B>,</B>
-<B>int </B><I>cols</I><B>,</B>
-
-<BR>
-
-<B>xelval </B><I>maxval</I><B>,</B>
-<B>int </B><I>format</I><B> );</B>
-
-<P>
-<B>xel ** pnm_readpnm( </B>
-<B>FILE *</B><I>fp</I><B>,</B>
-<B>int *</B><I>colsP</I><B>,</B>
-<B>int *</B><I>rowsP</I><B>,</B>
-
-<BR>
-
-<B>xelval *</B><I>maxvalP</I><B>, int</B><I>*</I><B> formatP </B><I>);</I>
-
-<P>
-<B>void pnm_writepnminit( </B>
-<B>FILE *  fp , </B>
-<B>int </B><I>cols</I><B>,</B>
-<B>int </B><I>rows</I><B>,</B>
-<B>xelval </B><I>maxval</I><B>,</B>
-<B>int </B><I>format</I><B>,</B>
-<B>int </B><I>forceplain</I><B>);</B>
-
-<P>
-<B>void pnm_writepnmrow( </B>
-<B>FILE *</B><I>fp</I><B>,</B>
-<B>xel *</B><I>xelrow</I><B>,</B>
-<B>int cols</B><I>,</I>
-<B>xelval </B><I>maxval</I><B>,</B>
-<B>int </B><I>format</I><B>,</B>
-<B>int </B><I>forceplain</I><B> );</B>
-
-<P>
-<B>void pnm_writepnm( </B>
-<B>FILE *</B><I>fp</I><B>,</B>
-<B>xel ** </B><I>xels</I><B>,</B>
-<B>int </B><I>cols</I><B>,</B>
-<B>int </B><I>rows</I><B>,</B>
-<B>xelval </B><I>maxval</I><B>,</B>
-<B>int </B><I>format</I><B>,</B>
-<B>int </B><I>forceplain</I><B> );</B>
-
-<P>
-<B>void pnm_nextimage(</B><B>FILE *</B> <I>file</I><B>,</B>
-  <B>int * const</B> <I>eofP</I><B>);</B>
-
-<P>
-<B>void pnm_check(</B>
-<B>FILE * </B><I>file</I><B>,</B>
-<B>const enum pm_check_type </B><I>check_type</I><B>,</B>
-<B>const int </B><I>format</I><B>,</B>
-<B>const int </B><I>cols</I><B>,</B>
-<B>const int </B><I>rows</I><B>,</B>
-<B>const xelval </B><I>maxval</I><B>,</B>
-<B>enum pm_check_code *</B><I>retvalP</I><B>);</B>
-
-<P>
-<B>void pnm_promoteformatrow( </B>
-<B>xel *</B><I>xelrow</I><B>,</B>
-<B>int </B><I>cols</I><B>,</B>
-<B>xelval </B><I>maxval</I><B>,</B>
-<B>int </B><I>format</I><B>,</B>
-<B>xelval </B><I>newmaxval</I><B>,</B>
-<B>int </B><I>newformat</I><B>);</B>
-
-<P>
-<B>void pnm_promoteformat( </B>
-<B>xel **</B><I>xels</I><B>,</B>
-<B>int </B><I>cols</I><B>,</B>
-<B>xelval </B><I>maxval</I><B>,</B>
-<B>int </B><I>format</I><B>,</B>
-<B>xelval </B><I>newmaxval</I><B>,</B>
-<B>int </B><I>newformat</I><B>);</B>
-
-<P>
-<B>xel pnm_whitexel( </B>
-<B>xelval </B><I>maxval</I><B>,</B>
-<B>int </B><I>format</I><B>);</B>
-
-<P>
-<B>xel pnm_blackxel( </B>
-<B>xelval </B><I>maxval</I><B>,</B>
-<B>int </B><I>format</I><B>);</B>
-
-<P>
-<B>void pnm_invertxel( </B>
-<B>xel *</B><I>x</I><B>,</B>
-<B>xelval </B><I>maxval</I><B>,</B>
-<B>int </B><I>format</I><B>);</B>
-
-<P>
-<B>xel pnm_backgroundxelrow( </B>
-<B>xel *</B><I>xelrow</I><B>,</B>
-<B>int </B><I>cols</I><B>,</B>
-<B>xelval </B><I>maxval</I><B>,</B>
-<B>int </B><I>format</I><B>);</B>
-
-<P>
-<B>xel pnm_backgroundxel( </B>
-<B>xel **</B><I>xels</I><B>,</B>
-<B>int </B><I>cols</I><B>,</B>
-<B>int </B><I>rows</I><B>,</B>
-<B>xelval </B><I>maxval</I><B>,</B>
-<B>int </B><I>format</I><B>);</B>
-<P><B>typedef ... xelval;</B>
-<P><B>typedef ... xel;</B>
-
-<P>
-<B>#define </B>
-<B>PNM_ASSIGN1(</B><I>x</I><B>,</B><I>v</I><B>)</B>
-<B>...</B>
-
-<P>
-<B>#define </B>
-<B>PNM_GET1(</B><I>x</I><B>)</B>
-<B>...</B>
-
-<P>
-<B>#define </B>
-<B>PNM_EQUAL(</B><I>x</I><B>,</B><I>y</I><B>)</B>
-<B>...</B>
-
-<P>
-<B>#define </B>
-<B>PNM_FORMAT_TYPE(</B><I>format</I><B>)</B>
-<B>...</B>
-
-<H2 id="description">DESCRIPTION</H2>
+<h2 id="synopsis">SYNOPSIS</h2>
+
+<b>#include &lt;netpbm/pnm.h&gt;</b>
+
+<p>
+<b>void pnm_init(</b>
+<b>int *</b><i>argcP</i><b>,</b>
+<b>char *</b><i>argv</i><b>[]</b>
+<b>);</b>
+
+<p>
+<b>xel ** pnm_allocarray(</b>
+<b>int </b><i>cols</i><b>,</b>
+<b>int </b><i>rows</i><b>);</b>
+
+<p>
+<b>xel * pnm_allocrow(</b>
+<b>int </b><i>cols</i><b>);</b>
+
+<p>
+<b>void pnm_freearray(</b>
+<b>xel **</b><i>xels</i><b>,</b>
+<b>int </b><i>rows</i><b>);</b>
+
+<p>
+<b>void pnm_freerow(</b>
+<b>xel *</b><i>xelrow</i><b>);</b>
+
+<p>
+<b>void pnm_readpnminit( </b>
+<b>FILE *</b><i>fp</i><b>,</b>
+<b>int *</b><i>colsP</i><b>,</b>
+<b>int *</b><i>rowsP</i><b>,</b>
+<b>xelval *</b><i>maxvalP</i><b>,</b>
+<b>int *</b><i>formatP</i><b> );</b>
+
+<p>
+<b>void pnm_readpnmrow( </b>
+<b>FILE *</b><i>fp</i><b>,</b>
+<b>xel *</b><i>xelrow</i><b>,</b>
+<b>int </b><i>cols</i><b>,</b>
+
+<br>
+
+<b>xelval </b><i>maxval</i><b>,</b>
+<b>int </b><i>format</i><b> );</b>
+
+<p>
+<b>xel ** pnm_readpnm( </b>
+<b>FILE *</b><i>fp</i><b>,</b>
+<b>int *</b><i>colsP</i><b>,</b>
+<b>int *</b><i>rowsP</i><b>,</b>
+
+<br>
+
+<b>xelval *</b><i>maxvalP</i><b>, int</b><i>*</i><b> formatP </b><i>);</i>
+
+<p>
+<b>void pnm_writepnminit( </b>
+<b>FILE *  fp , </b>
+<b>int </b><i>cols</i><b>,</b>
+<b>int </b><i>rows</i><b>,</b>
+<b>xelval </b><i>maxval</i><b>,</b>
+<b>int </b><i>format</i><b>,</b>
+<b>int </b><i>forceplain</i><b>);</b>
+
+<p>
+<b>void pnm_writepnmrow( </b>
+<b>FILE *</b><i>fp</i><b>,</b>
+<b>xel *</b><i>xelrow</i><b>,</b>
+<b>int cols</b><i>,</i>
+<b>xelval </b><i>maxval</i><b>,</b>
+<b>int </b><i>format</i><b>,</b>
+<b>int </b><i>forceplain</i><b> );</b>
+
+<p>
+<b>void pnm_writepnm( </b>
+<b>FILE *</b><i>fp</i><b>,</b>
+<b>xel ** </b><i>xels</i><b>,</b>
+<b>int </b><i>cols</i><b>,</b>
+<b>int </b><i>rows</i><b>,</b>
+<b>xelval </b><i>maxval</i><b>,</b>
+<b>int </b><i>format</i><b>,</b>
+<b>int </b><i>forceplain</i><b> );</b>
+
+<p>
+<b>void pnm_nextimage(</b><b>FILE *</b> <i>file</i><b>,</b>
+  <b>int * const</b> <i>eofP</i><b>);</b>
+
+<p>
+<b>void pnm_check(</b>
+<b>FILE * </b><i>file</i><b>,</b>
+<b>const enum pm_check_type </b><i>check_type</i><b>,</b>
+<b>const int </b><i>format</i><b>,</b>
+<b>const int </b><i>cols</i><b>,</b>
+<b>const int </b><i>rows</i><b>,</b>
+<b>const xelval </b><i>maxval</i><b>,</b>
+<b>enum pm_check_code *</b><i>retvalP</i><b>);</b>
+
+<p>
+<b>void pnm_promoteformatrow( </b>
+<b>xel *</b><i>xelrow</i><b>,</b>
+<b>int </b><i>cols</i><b>,</b>
+<b>xelval </b><i>maxval</i><b>,</b>
+<b>int </b><i>format</i><b>,</b>
+<b>xelval </b><i>newmaxval</i><b>,</b>
+<b>int </b><i>newformat</i><b>);</b>
+
+<p>
+<b>void pnm_promoteformat( </b>
+<b>xel **</b><i>xels</i><b>,</b>
+<b>int </b><i>cols</i><b>,</b>
+<b>xelval </b><i>maxval</i><b>,</b>
+<b>int </b><i>format</i><b>,</b>
+<b>xelval </b><i>newmaxval</i><b>,</b>
+<b>int </b><i>newformat</i><b>);</b>
+
+<p>
+<b>xel pnm_whitexel( </b>
+<b>xelval </b><i>maxval</i><b>,</b>
+<b>int </b><i>format</i><b>);</b>
+
+<p>
+<b>xel pnm_blackxel( </b>
+<b>xelval </b><i>maxval</i><b>,</b>
+<b>int </b><i>format</i><b>);</b>
+
+<p>
+<b>void pnm_invertxel( </b>
+<b>xel *</b><i>x</i><b>,</b>
+<b>xelval </b><i>maxval</i><b>,</b>
+<b>int </b><i>format</i><b>);</b>
+
+<p>
+<b>xel pnm_backgroundxelrow( </b>
+<b>xel *</b><i>xelrow</i><b>,</b>
+<b>int </b><i>cols</i><b>,</b>
+<b>xelval </b><i>maxval</i><b>,</b>
+<b>int </b><i>format</i><b>);</b>
+
+<p>
+<b>xel pnm_backgroundxel( </b>
+<b>xel **</b><i>xels</i><b>,</b>
+<b>int </b><i>cols</i><b>,</b>
+<b>int </b><i>rows</i><b>,</b>
+<b>xelval </b><i>maxval</i><b>,</b>
+<b>int </b><i>format</i><b>);</b>
+<p><b>typedef ... xelval;</b>
+<p><b>typedef ... xel;</b>
+
+<p>
+<b>#define </b>
+<b>PNM_ASSIGN1(</b><i>x</i><b>,</b><i>v</i><b>)</b>
+<b>...</b>
+
+<p>
+<b>#define </b>
+<b>PNM_GET1(</b><i>x</i><b>)</b>
+<b>...</b>
+
+<p>
+<b>#define </b>
+<b>PNM_EQUAL(</b><i>x</i><b>,</b><i>y</i><b>)</b>
+<b>...</b>
+
+<p>
+<b>#define </b>
+<b>PNM_FORMAT_TYPE(</b><i>format</i><b>)</b>
+<b>...</b>
+
+<h2 id="description">DESCRIPTION</h2>
 
 <p>These library functions are part of <a href="index.html">Netpbm</a>.
 
 
-<H3 id="types">TYPES AND CONSTANTS</H3>
+<h3 id="types">TYPES AND CONSTANTS</h3>
 
-<P>Each <B>xel</B> contains three <B>xelval</B>s, each of which should
-contain only the values between <B>0</B> and <B>PNM_MAXMAXVAL</B>,
+<p>Each <b>xel</b> contains three <b>xelval</b>s, each of which should
+contain only the values between <b>0</b> and <b>PNM_MAXMAXVAL</b>,
 inclusive. 
 
-<H3 id="xel">XEL MANIPULATIONS</H3>
+<h3 id="xel">XEL MANIPULATIONS</h3>
 
-<p>The <B>PNM_GET1</B> macro extracts a single value from an xel, when
+<p>The <b>PNM_GET1</b> macro extracts a single value from an xel, when
 ou know it's from a PBM or PGM file.  When it's from a PPM file, use
-<B>PPM_GETR()</B>, <B>PPM_GETG()</B>, and <B>PPM_GETB()</B>.
+<b>PPM_GETR()</b>, <b>PPM_GETG()</b>, and <b>PPM_GETB()</b>.
 
-<P>The <B>PNM_ASSIGN1</B> macro assigns a single value to an xel, when
+<p>The <b>PNM_ASSIGN1</b> macro assigns a single value to an xel, when
 you know it's from a PBM or PGM file.  When it's from a PPM file, use
-<B>PPM_ASSIGN</B>.
+<b>PPM_ASSIGN</b>.
 
-The <B>PNM_EQUAL</B> macro checks two xels for equality.  The
-<B>PNM_FORMAT_TYPE</B> macro computes a
+The <b>PNM_EQUAL</b> macro checks two xels for equality.  The
+<b>PNM_FORMAT_TYPE</b> macro computes a
 format type code from a format code.  The format types are PBM, PGM,
 PPM, and PAM.  But note that PBM, PGM, and PPM each are two different
 formats: a plain one and a raw one.  So there are four format types,
-but seven formats.  <B>PNM_FORMAT_TYPE</B> does not work on the PAM
+but seven formats.  <b>PNM_FORMAT_TYPE</b> does not work on the PAM
 format code.
 
-<B>pnm_whitexel()</B> and <B>pnm_blackxel()</B> return a white or
-black xel, respectively, for the given <I>maxval</I> and
-<I>format</I>.
+<b>pnm_whitexel()</b> and <b>pnm_blackxel()</b> return a white or
+black xel, respectively, for the given <i>maxval</i> and
+<i>format</i>.
 
-<P><B>pnm_invertxel()</B> inverts an xel.
+<p><b>pnm_invertxel()</b> inverts an xel.
 
-<H3 id="initialization">INITIALIZATION</H3>
+<h3 id="initialization">INITIALIZATION</h3>
 
 <p><b>pnm_init()</b> is obsolete (at least since Netpbm 9.25 (March 2002)).
 Use <a href="libpm.html#initialization"><b>pm_proginit()</b></a> instead.
 
-<P><b>pnm_init()</b> is identical to <b>pm_proginit</b>.
+<p><b>pnm_init()</b> is identical to <b>pm_proginit</b>.
 
-<H3 id="memorymanagement">MEMORY MANAGEMENT</H3>
+<h3 id="memorymanagement">MEMORY MANAGEMENT</h3>
 
-<P><B>pnm_allocarray()</B> allocates space for an array of xels.
-<B>pnm_freearray()</B> frees an array space allocated by
-<B>pnm_allocarray()</B> or <B>pnm_readpnm()</B>.
+<p><b>pnm_allocarray()</b> allocates space for an array of xels.
+<b>pnm_freearray()</b> frees an array space allocated by
+<b>pnm_allocarray()</b> or <b>pnm_readpnm()</b>.
 
-<P><B>pnm_allocrow()</B> allocates space for a row of a PNM image.
-<B>pnm_freerow()</B> frees it.
+<p><b>pnm_allocrow()</b> allocates space for a row of a PNM image.
+<b>pnm_freerow()</b> frees it.
 
 
-<H3 id="reading">READING PNM FILES</H3>
+<h3 id="reading">READING PNM FILES</h3>
 
-<P><B>pnm_readpnminit()</B> is similar to <B>pnm_readpaminit()</B>,
+<p><b>pnm_readpnminit()</b> is similar to <b>pnm_readpaminit()</b>,
 but reads only PNM images and has a different parameter list.
 
-<P><B>pnm_readpnmrow()</B> is similar to <B>pnm_readpamrow()</B>
+<p><b>pnm_readpnmrow()</b> is similar to <b>pnm_readpamrow()</b>
 but only works on PNM images and has a different parameter list and returns
 the row as an array of xels instead of tuples.
 
-<P><B>pnm_readpnm()</B> is similar to <B>pnm_readpam()</B> except that
+<p><b>pnm_readpnm()</b> is similar to <b>pnm_readpam()</b> except that
 it reads only PNM images and uses a different parameter list and
-returns an array of rows such that <B>pnm_readpnmrow()</B> would
-return rather than such that <B>pnm_readpamrow()</B> would return.
+returns an array of rows such that <b>pnm_readpnmrow()</b> would
+return rather than such that <b>pnm_readpamrow()</b> would return.
 
 
-<H3 id="writing">WRITING FILES</H3>
+<h3 id="writing">WRITING FILES</h3>
 
-<P><B>pnm_writepnminit()</B> is similar to <B>pnm_writepaminit()</B>
+<p><b>pnm_writepnminit()</b> is similar to <b>pnm_writepaminit()</b>
 except that it can write only a PNM header and has a different
 parameter list.
 
-<P><i>forceplain</i> is a binary value.  True (nonzero) means to write
+<p><i>forceplain</i> is a binary value.  True (nonzero) means to write
 the image in the plain (ASCII) version of the selected format.  False
 (zero) means to write it in the raw (binary) version of the selected
 format.  See <a href="pnm.html">PNM format specification</a>.
 
-<P><B>pnm_writepnmrow()</B> is similar to <B>pnm_writepamrow()</B>
+<p><b>pnm_writepnmrow()</b> is similar to <b>pnm_writepamrow()</b>
 except that it works only on PNM images and has a different parameter
 list and takes an array of xels instead of an array of tuples.  See
-the description of <I>forceplain </I> above.
+the description of <i>forceplain </i> above.
 
-<P><B>pnm_writepnm()</B> is similar to <B>pnm_writepam()</B> except
+<p><b>pnm_writepnm()</b> is similar to <b>pnm_writepam()</b> except
 that it works only on PNM image, has a different parameter list, and
 takes an array of rows of xels instead of an array of rows of tuples.
-See the description of <I>forceplain</I> above.
+See the description of <i>forceplain</i> above.
 
 
-<H3 id="promotion">FORMAT PROMOTION</H3>
+<h3 id="promotion">FORMAT PROMOTION</h3>
 
-<B>pnm_promoteformatrow()</B> promotes a row of xels from one maxval
+<b>pnm_promoteformatrow()</b> promotes a row of xels from one maxval
 and format to a new set.  Use this when you are combining multiple
 anymaps of different types - just take the maximum of the maxvals and
 the maximum of the formats, and promote them all to that.
 
-<P><B>pnm_promoteformat()</B> promotes an entire anymap.
+<p><b>pnm_promoteformat()</b> promotes an entire anymap.
 
-<H3 id="miscellaneous">MISCELLANEOUS</H3>
+<h3 id="miscellaneous">MISCELLANEOUS</h3>
 
-<P><B>pnm_nextimage()</B> positions a PNM input file to the next image
-in it (so that a subsequent <B>pnm_readpnminit()</B> reads its
+<p><b>pnm_nextimage()</b> positions a PNM input file to the next image
+in it (so that a subsequent <b>pnm_readpnminit()</b> reads its
 header).
 
-<P><B>pnm_nextimage()</B> is analogous to <B>pbm_nextimage()</B>, but
+<p><b>pnm_nextimage()</b> is analogous to <b>pbm_nextimage()</b>, but
 works on PPM, PGM, and PBM files.
 
-<P> <B>pnm_check()</B> is similar to <B>pnm_checkpam()</B> except it
+<p> <b>pnm_check()</b> is similar to <b>pnm_checkpam()</b> except it
 works only on PNM images.
 
-<P><B>pnm_check()</B> is identical to <B>ppm_check()</B>.
+<p><b>pnm_check()</b> is identical to <b>ppm_check()</b>.
 
-<P><B>pnm_backgroundxelrow()</B> figures out an appropriate background
-xel based on the row of xels <I>xelrow</I>, which is <I>cols</I> xels
-wide, has maxval <I>maxval</I>, and represents an image with format
-<I>format</I>.
+<p><b>pnm_backgroundxelrow()</b> figures out an appropriate background
+xel based on the row of xels <i>xelrow</i>, which is <i>cols</i> xels
+wide, has maxval <i>maxval</i>, and represents an image with format
+<i>format</i>.
 
-<P>This estimate works best when the row is the top or bottom row of
+<p>This estimate works best when the row is the top or bottom row of
 the image.
 
-<P><B>pnm_backgroundxel()</B> does the same thing as
-<B>pnm_backgroundxelrow()</B>, except based on an entire image instead
+<p><b>pnm_backgroundxel()</b> does the same thing as
+<b>pnm_backgroundxelrow()</b>, except based on an entire image instead
 of just one row.  This tends to do a slightly better job than
-<B>pnmbackgroundxelrow()</B>.
+<b>pnmbackgroundxelrow()</b>.
 
-<H2 id="seealso">SEE ALSO</H2>
+<h2 id="seealso">SEE ALSO</h2>
 
-<B><A HREF="libnetpbm.html">Libnetpbm</A></B>,
-<B><A HREF="libnetpbm_ug.html">Libnetpbm User's Guide</A></B>,
-<B><A HREF="libnetpbm_dir.html">Libnetpbm Directory</A></B>,
-<B><A HREF="pbm.html">pbm</A></B>,
-<B><A HREF="pgm.html">pgm</A></B>,
-<B><A HREF="ppm.html">ppm</A></B>,
-<B><A HREF="pam.html">pam</A></B>,
-<B><A HREF="libpbm.html">libpbm</A></B>,
-<B><A HREF="libpgm.html">libpgm</A></B>,
-<B><A HREF="libppm.html">libppm</A></B>
+<b><a href="libnetpbm.html">Libnetpbm</a></b>,
+<b><a href="libnetpbm_ug.html">Libnetpbm User's Guide</a></b>,
+<b><a href="libnetpbm_dir.html">Libnetpbm Directory</a></b>,
+<b><a href="pbm.html">pbm</a></b>,
+<b><a href="pgm.html">pgm</a></b>,
+<b><a href="ppm.html">ppm</a></b>,
+<b><a href="pam.html">pam</a></b>,
+<b><a href="libpbm.html">libpbm</a></b>,
+<b><a href="libpgm.html">libpgm</a></b>,
+<b><a href="libppm.html">libppm</a></b>
 
-<H2 id="author">AUTHOR</H2>
+<h2 id="author">AUTHOR</h2>
 
 Copyright (C) 1989, 1991 by Tony Hansen and Jef Poskanzer.
 
-<HR>
-<H2 id="index">Table Of Contents</H2>
-<UL>
-  <LI><A HREF="#synopsis">SYNOPSIS</A>
-  <LI><A HREF="#description">DESCRIPTION</A>
-  <UL>
-    <LI><A HREF="#types">TYPES AND CONSTANTS</A>
-    <LI><A HREF="#xel">XEL MANIPULATIONS</A>
-    <LI><A HREF="#initialization">INITIALIZATION</A>
-    <LI><A HREF="#memorymanagement">MEMORY MANAGEMENT</A>
-    <LI><A HREF="#reading">READING PNM FILES</A>
-    <LI><A HREF="#writing">WRITING FILES</A>
-    <LI><A HREF="#promotion">FORMAT PROMOTION</A>
-    <LI><A HREF="#miscellaneous">MISCELLANEOUS</A>
-    </UL>
-  <LI><A HREF="#seealso">SEE ALSO</A>
-  <LI><A HREF="#author">AUTHOR</A>
-  </UL>
-</BODY>
-</HTML>
+<hr>
+<h2 id="index">Table Of Contents</h2>
+<ul>
+  <li><a href="#synopsis">SYNOPSIS</a>
+  <li><a href="#description">DESCRIPTION</a>
+  <ul>
+    <li><a href="#types">TYPES AND CONSTANTS</a>
+    <li><a href="#xel">XEL MANIPULATIONS</a>
+    <li><a href="#initialization">INITIALIZATION</a>
+    <li><a href="#memorymanagement">MEMORY MANAGEMENT</a>
+    <li><a href="#reading">READING PNM FILES</a>
+    <li><a href="#writing">WRITING FILES</a>
+    <li><a href="#promotion">FORMAT PROMOTION</a>
+    <li><a href="#miscellaneous">MISCELLANEOUS</a>
+    </ul>
+  <li><a href="#seealso">SEE ALSO</a>
+  <li><a href="#author">AUTHOR</a>
+  </ul>
+</body>
+</html>
diff --git a/libppm.html b/libppm.html
index a2b06db0..2b4fdceb 100644
--- a/libppm.html
+++ b/libppm.html
@@ -1,178 +1,178 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD>
-<TITLE>User manual for old ppm functions</TITLE>
-<META NAME="manual_section" CONTENT="3">
-</HEAD>
-<BODY>
-<H1>libppm</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html>
+<head>
+<title>User manual for old ppm functions</title>
+<meta name="manual_section" content="3">
+</head>
+<body>
+<h1>libppm</h1>
 Updated: 8 May 2009
-<BR>
-<A HREF="#index">Table Of Contents</A>
+<br>
+<a href="#index">Table Of Contents</a>
 
-<H2>NAME</H2>
+<h2>NAME</h2>
 
 libppm - functions for PPM programs
 
-<H2 id="synopsis">SYNOPSIS</H2>
+<h2 id="synopsis">SYNOPSIS</h2>
 
-<B>#include &lt;netpbm/ppm.h&gt;</B>
+<b>#include &lt;netpbm/ppm.h&gt;</b>
 
-<P>
-<B>void ppm_init(</B><B>int *</B> <I>argcP</I><B>,</B>
-  <B>char *</B> <I>argv</I><B>[]</B><B>);</B>
+<p>
+<b>void ppm_init(</b><b>int *</b> <i>argcP</i><b>,</b>
+  <b>char *</b> <i>argv</i><b>[]</b><b>);</b>
+
+<p>
+<b>pixel ** ppm_allocarray(</b>
+
+<b>int </b><i>cols</i><b>,</b><b>int</b> <i>rows</i><b>);</b>
+
+<p>
+<b>pixel * ppm_allocrow(</b><b>int</b> <i>cols</i><b>);</b>
+
+<p>
+<b>void ppm_freearray(</b><b>pixel **</b> <i>pixels</i><b>,</b>
+  <b>int</b> <i>rows</i><b>);</b>
+
+<p>
+<b>void ppm_freerow(</b><b>pixel *</b> <i>pixelrow</i><b>);</b>
+
+<p>
+<b>void ppm_readppminit(</b><b>FILE *</b> <i>fp</i><b>,</b>
+  <b>int *</b> <i>colsP</i><b>,</b>
+  <b>int *</b> <i>rowsP</i><b>,</b>
 
-<P>
-<B>pixel ** ppm_allocarray(</B>
+<b>pixval *</b> <i>maxvalP</i><b>,</b><b>int *</b> <i>formatP</i><b> );</b>
 
-<B>int </B><I>cols</I><B>,</B><B>int</B> <I>rows</I><B>);</B>
+<p>
+<b>void ppm_readppmrow(</b><b>FILE *</b><i>fp</i><b>,</b>
+  <b>pixel *</b> <i>pixelrow</i><b>,</b>
+  <b>int </b><i>cols</i><b>,</b>
+  <b>pixval </b><i>maxval</i><b>,</b>
+  <b>int </b><i>format</i><b>);</b>
 
-<P>
-<B>pixel * ppm_allocrow(</B><B>int</B> <I>cols</I><B>);</B>
+<p>
+<b>pixel ** ppm_readppm(</b><b>FILE *</b> <i>fp</i><b>,</b>
+  <b>int *</b> <i>colsP</i><b>,</b>
+  <b>int *</b> <i>rowsP</i><b>,</b>
+  <b>pixvalP *</b> <i>maxvalP</i><b>);</b>
 
-<P>
-<B>void ppm_freearray(</B><B>pixel **</B> <I>pixels</I><B>,</B>
-  <B>int</B> <I>rows</I><B>);</B>
+<p>
+<b>void ppm_writeppminit(</b><b>FILE * <i>fp</i>,</b>
+  <b>int</b> <i>cols</i><b>,</b>
+  <b>int</b> <i>rows</i><b>,</b>
+  <b>pixval</b> <i>maxval</i><b>,</b>
+  <b>int</b> <i>forceplain</i><b>);</b>
 
-<P>
-<B>void ppm_freerow(</B><B>pixel *</B> <I>pixelrow</I><B>);</B>
+<p>
+<b>void ppm_writeppmrow(</b><b>FILE *</b> <i>fp</i><b>,</b>
+  <b>pixel *</b> <i>pixelrow</i><b>,</b>
+  <b>int</b> <i>cols</i><b>,</b>
+  <b>pixval</b> <i>maxval</i><b>,</b>
+  <b>int</b> <i>forceplain</i><b>);</b>
 
-<P>
-<B>void ppm_readppminit(</B><B>FILE *</B> <I>fp</I><B>,</B>
-  <B>int *</B> <I>colsP</I><B>,</B>
-  <B>int *</B> <I>rowsP</I><B>,</B>
+<p>
+<b>void ppm_writeppm(</b><b>FILE *</b> <i>fp</i><b>,</b>
+  <b>pixel **</b> <i>pixels</i><b>,</b>
+  <b>int</b> <i>cols</i><b>,</b>
+  <b>int</b> <i>rows</i><b>,</b>
+  <b>pixval</b> <i>maxval</i><b>,</b>
+  <b>int</b> <i>forceplain</i><b>);</b>
 
-<B>pixval *</B> <I>maxvalP</I><B>,</B><B>int *</B> <I>formatP</I><B> );</B>
+<p>
+<b>void ppm_writeppm(</b><b>FILE *</b> <i>fp</i><b>,</b>
+  <b>pixel **</b> <i>pixels</i><b>,</b>
+  <b>int</b> <i>cols</i><b>,</b>
+  <b>int</b> <i>rows</i><b>,</b>
+  <b>pixval</b> <i>maxval</i><b>,</b>
+  <b>int</b> <i>forceplain</i><b>);</b>
 
-<P>
-<B>void ppm_readppmrow(</B><B>FILE *</B><I>fp</I><B>,</B>
-  <B>pixel *</B> <I>pixelrow</I><B>,</B>
-  <B>int </B><I>cols</I><B>,</B>
-  <B>pixval </B><I>maxval</I><B>,</B>
-  <B>int </B><I>format</I><B>);</B>
+<p>
+<b>void ppm_nextimage(</b><b>FILE *</b> <i>file</i><b>,</b>
+  <b>int * const</b> <i>eofP</i><b>);</b>
 
-<P>
-<B>pixel ** ppm_readppm(</B><B>FILE *</B> <I>fp</I><B>,</B>
-  <B>int *</B> <I>colsP</I><B>,</B>
-  <B>int *</B> <I>rowsP</I><B>,</B>
-  <B>pixvalP *</B> <I>maxvalP</I><B>);</B>
+<p>
+<b>void ppm_check(</b><b>FILE *</b> <i>file</i><b>,</b>
+  <b>const enum pm_check_type</b> <i>check_type</i><b>,</b>
+  <b>const int</b> <i>format</i><b>,</b>
+  <b>const int</b> <i>cols</i><b>,</b>
+  <b>const int</b> <i>rows</i><b>,</b>
+  <b>const int</b> <i>maxval</i><b>,</b>
 
-<P>
-<B>void ppm_writeppminit(</B><B>FILE * <i>fp</i>,</B>
-  <B>int</B> <I>cols</I><B>,</B>
-  <B>int</B> <I>rows</I><B>,</B>
-  <B>pixval</B> <I>maxval</I><B>,</B>
-  <B>int</B> <I>forceplain</I><B>);</B>
+<br>
 
-<P>
-<B>void ppm_writeppmrow(</B><B>FILE *</B> <I>fp</I><B>,</B>
-  <B>pixel *</B> <I>pixelrow</I><B>,</B>
-  <B>int</b> <i>cols</i><B>,</B>
-  <B>pixval</B> <I>maxval</I><B>,</B>
-  <B>int</B> <I>forceplain</I><B>);</B>
+<b>enum pm_check_code * const</b> <i>retval</i><b>);</b>
+
+<p>
+<b>typedef ... pixel;</b>
 
-<P>
-<B>void ppm_writeppm(</B><B>FILE *</B> <I>fp</I><B>,</B>
-  <B>pixel **</B> <I>pixels</I><B>,</B>
-  <B>int</B> <I>cols</I><B>,</B>
-  <B>int</B> <I>rows</I><B>,</B>
-  <B>pixval</B> <I>maxval</I><B>,</B>
-  <B>int</B> <I>forceplain</I><B>);</B>
+<b>typedef ... pixval;</b>
 
-<P>
-<B>void ppm_writeppm(</B><B>FILE *</B> <I>fp</I><B>,</B>
-  <B>pixel **</B> <I>pixels</I><B>,</B>
-  <B>int</B> <I>cols</I><B>,</B>
-  <B>int</B> <I>rows</I><B>,</B>
-  <B>pixval</B> <I>maxval</I><B>,</B>
-  <B>int</B> <I>forceplain</I><B>);</B>
+<p>
+<b>#define PPM_MAXMAXVAL ...</b>
 
-<P>
-<B>void ppm_nextimage(</B><B>FILE *</B> <I>file</I><B>,</B>
-  <B>int * const</B> <I>eofP</I><B>);</B>
+<p>
+<b>#define PPM_OVERALLMAXVAL ...</b>
 
-<P>
-<B>void ppm_check(</B><B>FILE *</B> <I>file</I><B>,</B>
-  <B>const enum pm_check_type</B> <I>check_type</I><B>,</B>
-  <B>const int</B> <I>format</I><B>,</B>
-  <B>const int</B> <I>cols</I><B>,</B>
-  <B>const int</B> <I>rows</I><B>,</B>
-  <B>const int</B> <I>maxval</I><B>,</B>
+<p>
+<b>#define PPM_FORMAT ...</b>
 
-<BR>
+<p>
+<b>#define RPPM_FORMAT ...</b>
 
-<B>enum pm_check_code * const</B> <I>retval</I><B>);</B>
+<p>
+<b>#define PPM_TYPE PPM_FORMAT</b>
 
-<P>
-<B>typedef ... pixel;</B>
+<p>
+<b>#define</b> <b>PPM_FORMAT_TYPE(</b><i>format</i><b>)</b> <b>...</b>
 
-<B>typedef ... pixval;</B>
+<p>
+<b>pixval PPM_GETR(pixel</b> <i>p</i><b>)</b>
 
-<P>
-<B>#define PPM_MAXMAXVAL ...</B>
+<p>
+<b>pixval PPM_GETG(pixel</b> <i>p</i><b>)</b>
 
-<P>
-<B>#define PPM_OVERALLMAXVAL ...</B>
+<p>
+<b>pixval PPM_GETB(pixel</b> <i>p</i><b>)</b>
 
-<P>
-<B>#define PPM_FORMAT ...</B>
+<p>
+<b>void PPM_ASSIGN(pixel</b> <i>p</i><b>,</b>
+  <b>pixval</b> <i>red</i><b>,</b>
+  <b>pixval</b> <i>grn</i><b>,</b>
+  <b>pixval</b> <i>blu</i><b>)</b>
 
-<P>
-<B>#define RPPM_FORMAT ...</B>
+<p>
+<b>int PPM_EQUAL(pixel</b> <i>p</i><b>,</b>
+  <b>pixel</b> <i>q</i><b>)</b>
 
-<P>
-<B>#define PPM_TYPE PPM_FORMAT</B>
+<p>
+<b>int PPM_ISGRAY(pixel</b> <i>p</i><b>)</b>
 
-<P>
-<B>#define</B> <B>PPM_FORMAT_TYPE(</B><I>format</I><B>)</B> <B>...</B>
-
-<P>
-<B>pixval PPM_GETR(pixel</B> <I>p</I><B>)</B>
-
-<p>
-<B>pixval PPM_GETG(pixel</B> <I>p</I><B>)</B>
-
-<p>
-<B>pixval PPM_GETB(pixel</B> <I>p</I><B>)</B>
-
-<P>
-<B>void PPM_ASSIGN(pixel</B> <I>p</I><B>,</B>
-  <B>pixval</B> <I>red</I><B>,</b>
-  <b>pixval</B> <I>grn</I><B>,</b>
-  <b>pixval</B> <I>blu</I><B>)</B>
-
-<P>
-<B>int PPM_EQUAL(pixel</B> <I>p</I><B>,</b>
-  <b>pixel</B> <I>q</I><B>)</B>
-
-<P>
-<B>int PPM_ISGRAY(pixel</B> <I>p</I><B>)</B>
-
-<P>
-<B>void</b>
-  <b>PPM_DEPTH(pixel</B> <I>newp</I><B>,</b>
-  <b>pixel</B> <I>p</I><B>,</B>
-  <B>pixval</B> <I>oldmaxval</I><B>,</b>
-  <b>pixval</B> <I>newmaxval</I><B>)</B>
+<p>
+<b>void</b>
+  <b>PPM_DEPTH(pixel</b> <i>newp</i><b>,</b>
+  <b>pixel</b> <i>p</i><b>,</b>
+  <b>pixval</b> <i>oldmaxval</i><b>,</b>
+  <b>pixval</b> <i>newmaxval</i><b>)</b>
 
-<P>
-<B>pixel ppm_parsecolor(char *</B> <I>colorname</I><B>,</b>
-   <b>pixval</B> <I>maxval</I><B>)</B>
+<p>
+<b>pixel ppm_parsecolor(char *</b> <i>colorname</i><b>,</b>
+   <b>pixval</b> <i>maxval</i><b>)</b>
 
-<P>
-<B>pixel ppm_parsecolor2(</B>
-<b>char *</b> <I>colorname</I><B>,</b>
-<b>pixval</B> <I>maxval</I><B>,</B>
-<b>int</B> <I>closeOk</I>
-<B>)</B>
+<p>
+<b>pixel ppm_parsecolor2(</b>
+<b>char *</b> <i>colorname</i><b>,</b>
+<b>pixval</b> <i>maxval</i><b>,</b>
+<b>int</b> <i>closeOk</i>
+<b>)</b>
 
-<P>
-<B>char * ppm_colorname(pixel *</B> <I>colorP</I><B>,</b>
-  <b>pixval</B> <I>maxval</I><B>,</b>
-  <b>int</B> <I>hexok</I><B>)</B>
+<p>
+<b>char * ppm_colorname(pixel *</b> <i>colorP</i><b>,</b>
+  <b>pixval</b> <i>maxval</i><b>,</b>
+  <b>int</b> <i>hexok</i><b>)</b>
 
-<P>
-<B>void ppm_readcolornamefile(</b>
+<p>
+<b>void ppm_readcolornamefile(</b>
   <b>const char *</b><i>fileName</i>, 
   <b>int</b> <i>mustOpen</i>,
   <b>colorhash_table *</b> <i>chtP</i>, 
@@ -180,129 +180,129 @@ libppm - functions for PPM programs
   <b>)</b>
 
 
-<H2 id="description">DESCRIPTION</H2>
+<h2 id="description">DESCRIPTION</h2>
 
 <p>These library functions are part of <a href="index.html">Netpbm</a>.
 
-<H3 id="types">TYPES AND CONSTANTS</H3>
+<h3 id="types">TYPES AND CONSTANTS</h3>
 
-Each <B>pixel</B> contains three <B>pixval</B>s, each of which should
-contain only the values between <B>0</B> and <B>PPM_MAXMAXVAL</B>.
+Each <b>pixel</b> contains three <b>pixval</b>s, each of which should
+contain only the values between <b>0</b> and <b>PPM_MAXMAXVAL</b>.
 
 
-<H3 id="manipulating_pixels">MANIPULATING PIXELS</H3>
+<h3 id="manipulating_pixels">MANIPULATING PIXELS</h3>
 
-<p>The macros <B>PPM_GETR</B>, <B>PPM_GETG</B>, and <B>PPM_GETB</B>
+<p>The macros <b>PPM_GETR</b>, <b>PPM_GETG</b>, and <b>PPM_GETB</b>
 retrieve the red, green, or blue sample, respectively, from the given
 pixel.
 
-<P>The <B>PPM_ASSIGN</B> macro assigns the given values to the red,
+<p>The <b>PPM_ASSIGN</b> macro assigns the given values to the red,
 green, and blue samples of the given pixel.
 
-<P>The <B>PPM_EQUAL</B> macro tests two pixels for equality.
+<p>The <b>PPM_EQUAL</b> macro tests two pixels for equality.
 
-<P>The <B>PPM_ISGRAY</B> macro tests a pixel for being gray.  It
+<p>The <b>PPM_ISGRAY</b> macro tests a pixel for being gray.  It
 returns true if and only if the color of pixel <i>p</i> is black,
 white, or gray.
 
-<P>The <B>PPM_DEPTH</B> macro scales the colors of pixel <I>p</I>
+<p>The <b>PPM_DEPTH</b> macro scales the colors of pixel <i>p</i>
 according the old and new maxvals and assigns the new values to
-<I>newp</I>.  It is intended to make writing ppmtowhatever easier.
+<i>newp</i>.  It is intended to make writing ppmtowhatever easier.
 
-<P>The <B>PPM_LUMIN</B>, <B>PPM_CHROM_R</B>, and <B>PPM_CHROM_B</B>
+<p>The <b>PPM_LUMIN</b>, <b>PPM_CHROM_R</b>, and <b>PPM_CHROM_B</b>
 macros determine the luminance, red chrominance, and blue chrominance,
-respectively, of the pixel <I>p</I>.  The scale of all these values is
+respectively, of the pixel <i>p</i>.  The scale of all these values is
 the same as the scale of the input samples (i.e. 0 to maxval for
 luminance, -maxval/2 to maxval/2 for chrominance).
 
-<P>Note that the macros do it by floating point multiplication.  If
+<p>Note that the macros do it by floating point multiplication.  If
 you are computing these values over an entire image, it may be
 significantly faster to do it with multiplication tables instead.
 Compute all the possible products once up front, then for each pixel,
 just look up the products in the tables.
 
-<H3 id="initialization">INITIALIZATION</H3>
+<h3 id="initialization">INITIALIZATION</h3>
 
 <p><b>ppm_init()</b> is obsolete (at least since Netpbm 9.25 (March 2002)).
 Use <a href="libpm.html#initialization"><b>pm_proginit()</b></a> instead.
 
-<P><b>ppm_init()</b> is identical to <b>pm_proginit</b>.
+<p><b>ppm_init()</b> is identical to <b>pm_proginit</b>.
 
 
-<H3 id="memorymanagement">MEMORY MANAGEMENT</H3>
+<h3 id="memorymanagement">MEMORY MANAGEMENT</h3>
 
-<B>ppm_allocarray()</B> allocates an array of pixels.
+<b>ppm_allocarray()</b> allocates an array of pixels.
 
-<P><B>ppm_allocrow()</B> allocates a row of the given number of
+<p><b>ppm_allocrow()</b> allocates a row of the given number of
 pixels.
 
-<P><B>ppm_freearray()</B> frees the array allocated with
-<B>ppm_allocarray()</B> containing the given number of rows.
+<p><b>ppm_freearray()</b> frees the array allocated with
+<b>ppm_allocarray()</b> containing the given number of rows.
 
-<P><B>ppm_freerow()</B> frees a row of pixelss allocated with
-<B>ppm_allocrow()</B>.
+<p><b>ppm_freerow()</b> frees a row of pixelss allocated with
+<b>ppm_allocrow()</b>.
 
-<H3 id="readingfiles">READING FILES</H3>
+<h3 id="readingfiles">READING FILES</h3>
 
-<P>If a function in this section is called on a PBM or PGM format
+<p>If a function in this section is called on a PBM or PGM format
 file, it translates the PBM or PGM file into a PPM file on the fly and
 functions as if it were called on the equivalent PPM file.  The
-<I>format</I> value returned by <B>ppm_readppminit()</B> is, however,
+<i>format</i> value returned by <b>ppm_readppminit()</b> is, however,
 not translated.  It represents the actual format of the PBM or PGM
 file.
 
-<P><B>ppm_readppminit()</B> reads the header of a PPM file, returning
+<p><b>ppm_readppminit()</b> reads the header of a PPM file, returning
 all the information from the header and leaving the file positioned
 just after the header.
 
-<P><B>ppm_readppmrow()</B> reads a row of pixels into the
-<I>pixelrow</I> array.  <I>format</I>, <I>cols</I>, and <I>maxval</I>
-are the values returned by <B>ppm_readppminit()</B>.
+<p><b>ppm_readppmrow()</b> reads a row of pixels into the
+<i>pixelrow</i> array.  <i>format</i>, <i>cols</i>, and <i>maxval</i>
+are the values returned by <b>ppm_readppminit()</b>.
 
-<P><B>ppm_readppm()</B> reads an entire PPM image into memory,
+<p><b>ppm_readppm()</b> reads an entire PPM image into memory,
 returning the allocated array as its return value and returning the
-information from the header as <I>rows</I>, <I>cols</I>, and
-<I>maxval</I>.  This function combines <B>ppm_readppminit()</B>,
-<B>ppm_allocarray()</B>, and <B>ppm_readppmrow()</B>.
+information from the header as <i>rows</i>, <i>cols</i>, and
+<i>maxval</i>.  This function combines <b>ppm_readppminit()</b>,
+<b>ppm_allocarray()</b>, and <b>ppm_readppmrow()</b>.
 
 
-<H3 id="writingfiles">WRITING FILES</H3>
+<h3 id="writingfiles">WRITING FILES</h3>
 
-<B>ppm_writeppminit()</B> writes the header for a PPM file and leaves
+<b>ppm_writeppminit()</b> writes the header for a PPM file and leaves
 it positioned just after the header.
 
-<P><I>forceplain</I> is a logical value that tells
-<B>ppm_writeppminit() </B> to write a header for a plain PPM format
+<p><i>forceplain</i> is a logical value that tells
+<b>ppm_writeppminit() </b> to write a header for a plain PPM format
 file, as opposed to a raw PPM format file.
 
-<P><B>ppm_writeppmrow()</B> writes the row <I>pixelrow</I> to a PPM
-file.  For meaningful results, <I>cols</I>, <I>maxval</I>, and
-<I>forceplain</I> must be the same as was used with
-<B>ppm_writeppminit()</B>.
+<p><b>ppm_writeppmrow()</b> writes the row <i>pixelrow</i> to a PPM
+file.  For meaningful results, <i>cols</i>, <i>maxval</i>, and
+<i>forceplain</i> must be the same as was used with
+<b>ppm_writeppminit()</b>.
 
-<P><B>ppm_writeppm()</B> write the header and all data for a PPM
-image.  This function combines <B>ppm_writeppminit()</B> and
-<B>ppm_writeppmrow()</B>.
+<p><b>ppm_writeppm()</b> write the header and all data for a PPM
+image.  This function combines <b>ppm_writeppminit()</b> and
+<b>ppm_writeppmrow()</b>.
 
-<H3 id="miscellaneous">MISCELLANEOUS</H3>
+<h3 id="miscellaneous">MISCELLANEOUS</h3>
 
-<P><B>ppm_nextimage()</B> positions a PPM input file to the next image
-in it (so that a subsequent <B>ppm_readppminit()</B> reads its
+<p><b>ppm_nextimage()</b> positions a PPM input file to the next image
+in it (so that a subsequent <b>ppm_readppminit()</b> reads its
 header).
 
-<P><B>ppm_nextimage()</B> is analogous to <B>pbm_nextimage()</B>, but
+<p><b>ppm_nextimage()</b> is analogous to <b>pbm_nextimage()</b>, but
 works on PPM, PGM, and PBM files.
 
-<P><B>ppm_check() </B> checks for the common file integrity error
+<p><b>ppm_check() </b> checks for the common file integrity error
 where the file is the wrong size to contain all the image data.
 
-<P><B>ppm_check() </B> is analogous to <B>pbm_check()</B>, but works
+<p><b>ppm_check() </b> is analogous to <b>pbm_check()</b>, but works
 on PPM, PGM, and PBM files.
 
 
 <h3 id="color">COLOR</h3>
 
-<H4 id="luminance">Luminance, Chrominance (YcbCr)</H4>
+<h4 id="luminance">Luminance, Chrominance (YcbCr)</h4>
 
 <pre>
 <code>
@@ -312,7 +312,7 @@ on PPM, PGM, and PBM files.
 </code>
 </pre>
 
-<p><B>PPM_LUMIN</B> takes a <b>pixel</b> as an argument and returns
+<p><b>PPM_LUMIN</b> takes a <b>pixel</b> as an argument and returns
 the luminance of that pixel, with the same maxval as the pixel
 (e.g. if the pixel's maxval is 255, a <b>PPM_LUMIN</b> value of 255
 means fully luminant).
@@ -321,14 +321,14 @@ means fully luminant).
 and blue chrominance values.
 
 
-<PRE>
-<CODE>
+<pre>
+<code>
     pixel
     ppm_color_from_ycbcr(unsigned int y, 
                          int          cb, 
                          int          cr);
-</CODE>
-</PRE>
+</code>
+</pre>
 
 <p><b>ppm_color_from_ycbcr()</b> converts in the other direction.
 Given luminance and chrominance, it returns a pixel value.
@@ -464,16 +464,16 @@ represents it.
 <p>All of the facilities in this section were new in Netpbm 10.34
 (June 2006).
 
-<H3 id="colorname">COLOR NAMES</H3>
+<h3 id="colorname">COLOR NAMES</h3>
 
 <h4 id="dictionary">System Color Dictionary</h4>
 
-<P>Netpbm uses the system's X11 color dictionary (usually in
+<p>Netpbm uses the system's X11 color dictionary (usually in
 <b>/usr/lib/X11/rgb.txt</b>).  This is the same file the X Window
 System typically uses to associate colors with their names.
 
 <p>The color dictionary that Netpbm uses is in the file whose name is
-the value of the <B>RGBDEF</B> environment variable.  If <B>RGBDEF</B>
+the value of the <b>RGBDEF</b> environment variable.  If <b>RGBDEF</b>
 is not set, Netpbm defaults to the first existing file from this list:
 
 <ol>
@@ -482,55 +482,55 @@ is not set, Netpbm defaults to the first existing file from this list:
 <li><b>/usr/X11R6/lib/X11/rgb.txt</b>
 </ol>
 
-<P>You can see the color names from a typical X11 color dictionary,
+<p>You can see the color names from a typical X11 color dictionary,
 which is probably very close to what is on your system, along with the
 colors, <a
 href="http://www.swiss.ai.mit.edu/~jaffer/Color/x11.pdf">here</a>.  <a
 href="http://www.swiss.ai.mit.edu/~jaffer/Color/Dictionaries.html">This
 website</a> shows a bunch of other versions you could use.
 
-<P>Netpbm is packaged with a color dictionary.  A standard Netpbm
+<p>Netpbm is packaged with a color dictionary.  A standard Netpbm
 installation installs this file as "misc/rgb.txt" in the Netpbm
 directory.  This color dictionary has colors from everywhere the
 Netpbm maintainer could find them, and is a superset of XFree 86's
 color dictionary.
 
-<H4 id="ppm_parsecolor">ppm_parsecolor</H4>
+<h4 id="ppm_parsecolor">ppm_parsecolor</h4>
 
-<p><B>ppm_parsecolor()</B> interprets a color specification and returns a
+<p><b>ppm_parsecolor()</b> interprets a color specification and returns a
 pixel of the color that it indicates.  It is the same as
 <a href="libnetpbm_image.html#colorname">pnm_parsecolor</a>, except that it
 returns a <b>pixel</b> instead of a <b>tuple</b>.
 
-<H4 id="ppm_parsecolor2">ppm_parsecolor2</H4>
+<h4 id="ppm_parsecolor2">ppm_parsecolor2</h4>
 
-<p><B>ppm_parsecolor2()</B> interprets a color specification and returns a
+<p><b>ppm_parsecolor2()</b> interprets a color specification and returns a
 pixel of the color that it indicates and warns about rounding.  It is the same
 as <a href="libnetpbm_image.html#colorname">pnm_parsecolor2</a>, except
 that it returns a <b>pixel</b> instead of a <b>tuple</b>.
 
 <h4 id="ppm_colorname">ppm_colorname</h4>
 
-<P><B>ppm_colorname()</B> returns a string that describes the color
+<p><b>ppm_colorname()</b> returns a string that describes the color
 of the given pixel.  If a <a href="#dictionary">system color dictionary</a>
-is available and the color appears in it, <B>ppm_colorname()</B>
+is available and the color appears in it, <b>ppm_colorname()</b>
 returns the name of the color from the file.  If the color does not
-appear in a system color dictionary and <I>hexok</I> is true,
-<B>ppm_colorname()</B> returns a hexadecimal color specification
+appear in a system color dictionary and <i>hexok</i> is true,
+<b>ppm_colorname()</b> returns a hexadecimal color specification
 triple (#rrggbb).  If a system color dictionary is available but the
-color does not appear in it and <I>hexok</I> is false,
-<B>ppm_colorname()</B> returns the name of the closest matching color
+color does not appear in it and <i>hexok</i> is false,
+<b>ppm_colorname()</b> returns the name of the closest matching color
 in the color file.  Finally, if there is no system color dictionary
-available and <I>hexok</I> is false, <B>ppm_colorname()</B> fails and
+available and <i>hexok</i> is false, <b>ppm_colorname()</b> fails and
 <a href="liberror.html#error">throws an error</a>.
 
-<P>The string returned is in static libppm library storage which is
-overwritten by every call to <B>ppm_colorname()</B>.
+<p>The string returned is in static libppm library storage which is
+overwritten by every call to <b>ppm_colorname()</b>.
 
 
 <h4 id="ppm_readcolornamefile">ppm_readcolornamefile</h4>
 
-<P><b>ppm_readcolornamefile()</b> reads the entire contents of the color
+<p><b>ppm_readcolornamefile()</b> reads the entire contents of the color
 dictionary in the file named <i>fileName</i> into data structures you
 can use to access it easily.
 
@@ -561,9 +561,9 @@ colors or names.
 <p><b>ppm_readcolornamefile()</b> was new in Netpbm 10.15 (April 2003).
 
 
-<H3 id="colorindex">COLOR INDEXING</H3>
+<h3 id="colorindex">COLOR INDEXING</h3>
 
-<P>Sometimes in processing images, you want to associate a value with
+<p>Sometimes in processing images, you want to associate a value with
 a particular color.  Most often, that's because you're generating a
 color mapped graphics format.  In a color mapped graphics format, the
 raster contains small numbers, and the file contains a color map that
@@ -572,219 +572,219 @@ has only 256 colors, but each color takes 24 bits to describe, this
 can make your output file much smaller than a straightforward RGB
 raster would.
 
-<P>So, continuing the above example, say you have a <B>pixel</B> value
+<p>So, continuing the above example, say you have a <b>pixel</b> value
 for chartreuse and in your output file and you are going to represent
 chartreuse by the number 12.  You need a data structure that allows
 your program quickly to find out that the number for a chartreuse
-<B>pixel</B> is 12.  Netpbm's color indexing data types and functions
+<b>pixel</b> is 12.  Netpbm's color indexing data types and functions
 give you that.
 
-<P><B>colorhash_table</B> is a C data type that associates an integer
+<p><b>colorhash_table</b> is a C data type that associates an integer
 with each of an arbitrary number of colors.  It is a hash table, so it
 uses far less space than an array indexed by the color's RGB values
 would.
 
-<P>The problem with a <B>colorhash_table</B> is that you can only look
+<p>The problem with a <b>colorhash_table</b> is that you can only look
 things up in it.  You can't find out what colors are in it.  So Netpbm
 has another data type for representing the same information, the
-poorly but historically named <B>colorhist_vector</B>.  A
-<B>colorhist_vector</B> is just an array.  Each entry represents a
-color and contains the color's value (as a <B>pixel</B>) and the
+poorly but historically named <b>colorhist_vector</b>.  A
+<b>colorhist_vector</b> is just an array.  Each entry represents a
+color and contains the color's value (as a <b>pixel</b>) and the
 integer value associated with it.  The entries are filled in starting
 with subscript 0 and going consecutively up for the number of colors
 in the histogram.
 
-<P>(The reason the name is poor is because a color histogram is only
+<p>(The reason the name is poor is because a color histogram is only
 one of many things that could be represented by it).
 
-<P><B>colorhash_table ppm_alloccolorhash()</B>
+<p><b>colorhash_table ppm_alloccolorhash()</b>
 
-<P>This creates a <B>colorhash_table</B> using dynamically allocated
+<p>This creates a <b>colorhash_table</b> using dynamically allocated
 storage.  There are no colors in it.  If there is not enough storage,
 <a href="liberror.html#error">throws an error</a>.
 
-<P><B>void ppm_freecolorhash()</B>
+<p><b>void ppm_freecolorhash()</b>
 
-<P>This destroys a <B>ppm_freecolorhash </B> and frees all the storage
+<p>This destroys a <b>ppm_freecolorhash </b> and frees all the storage
 associated with it.
 
-<P><B>int ppm_addtocolorhash( colorhash_table cht, const pixel * const
-colorP, const int value)</B>
+<p><b>int ppm_addtocolorhash( colorhash_table cht, const pixel * const
+colorP, const int value)</b>
 
-<P>This adds the specified color to the specified <B>colorhash_table
-</B> and associates the specified value with it.
+<p>This adds the specified color to the specified <b>colorhash_table
+</b> and associates the specified value with it.
 
-<P>You must ensure that the color you are adding isn't already present
-in the <B>colorhash_table</B>.
+<p>You must ensure that the color you are adding isn't already present
+in the <b>colorhash_table</b>.
 
-<P>There is no way to update an entry or delete an entry from a 
-<B>colorhash_table</B>.
+<p>There is no way to update an entry or delete an entry from a 
+<b>colorhash_table</b>.
 
-<P><B>int ppm_lookupcolor( const colorhash_table cht, const pixel *
-const colorP )</B>
+<p><b>int ppm_lookupcolor( const colorhash_table cht, const pixel *
+const colorP )</b>
 
-<P>This looks up the specified color in the specified
-<B>colorhash_table</B>.  It returns the integer value associated with
+<p>This looks up the specified color in the specified
+<b>colorhash_table</b>.  It returns the integer value associated with
 that color.
 
-<P>If the specified color is not in the hash table, the function
+<p>If the specified color is not in the hash table, the function
 returns -1.  (So if you assign the value -1 to a color, the return
 value is ambiguous).
 
-<P><B>colorhist_vector ppm_colorhashtocolorhist( const colorhash_table cht,</B>
+<p><b>colorhist_vector ppm_colorhashtocolorhist( const colorhash_table cht,</b>
 
-<B>const int ncolors )</B>
+<b>const int ncolors )</b>
 
-<P>This converts a <B>colorhash_table</B> to a
-<B>colorhist_vector</B>.  The return value is a new
-<B>colorhist_vector</B> which you must eventually free with
-<B>ppm_freecolorhist()</B>.
+<p>This converts a <b>colorhash_table</b> to a
+<b>colorhist_vector</b>.  The return value is a new
+<b>colorhist_vector</b> which you must eventually free with
+<b>ppm_freecolorhist()</b>.
 
-<P><B>ncolors</B> is the number of colors in <B>cht</B>.  If it has
-more colors than that, <B>ppm_colorhashtocolorhist</B> does not create
-a <B>colorhist_vector</B> and returns NULL.
+<p><b>ncolors</b> is the number of colors in <b>cht</b>.  If it has
+more colors than that, <b>ppm_colorhashtocolorhist</b> does not create
+a <b>colorhist_vector</b> and returns NULL.
 
-<P><B>colorhash_table ppm_colorhisttocolorhash( const colorhist_vector chv, 
-const int ncolors ) </B>
+<p><b>colorhash_table ppm_colorhisttocolorhash( const colorhist_vector chv, 
+const int ncolors ) </b>
 
-<P>This poorly named function does <em>not</em> convert from a
-<B>colorhist_vector</B> to a <B>colorhash_table</B>.
+<p>This poorly named function does <em>not</em> convert from a
+<b>colorhist_vector</b> to a <b>colorhash_table</b>.
 
-<P>It does create a <B>colorhash_table</B> based on a
-<B>colorhist_vector</B> input, but the integer value for a given color
+<p>It does create a <b>colorhash_table</b> based on a
+<b>colorhist_vector</b> input, but the integer value for a given color
 in the output is not the same as the integer value for that same color
-in the input.  <B>ppm_colorhisttocolorhash()</B> ignores the integer
+in the input.  <b>ppm_colorhisttocolorhash()</b> ignores the integer
 values in the input.  In the output, the integer value for a color is
-the index in the input <B>colorhist_vector</B> for that color.
+the index in the input <b>colorhist_vector</b> for that color.
 
-<P>You can easily create a color map for an image by running
-<B>ppm_computecolorhist() </B> over the image, then
-<B>ppm_colorhisttocolorhash()</B> over the result.  Now you can use
-<B>ppm_lookupcolor()</B> to find a unique color index for any pixel in
+<p>You can easily create a color map for an image by running
+<b>ppm_computecolorhist() </b> over the image, then
+<b>ppm_colorhisttocolorhash()</b> over the result.  Now you can use
+<b>ppm_lookupcolor()</b> to find a unique color index for any pixel in
 the input.
 
-<P>If the same color appears twice in the input,
-<B>ppm_colorhisttocolorhash()</B> <a href="liberror.html#error">throws an
+<p>If the same color appears twice in the input,
+<b>ppm_colorhisttocolorhash()</b> <a href="liberror.html#error">throws an
 error</a>.
 
-<P><B>ncolors</B> is the number of colors in <B>chv</B>.
+<p><b>ncolors</b> is the number of colors in <b>chv</b>.
 
-<P>The return value is a new <B>colorhash_table</B> which you must
-eventually free with <B>ppm_freecolorhash()</B>.
+<p>The return value is a new <b>colorhash_table</b> which you must
+eventually free with <b>ppm_freecolorhash()</b>.
 
-<H3 id="histogram">COLOR HISTOGRAMS</H3>
+<h3 id="histogram">COLOR HISTOGRAMS</h3>
 
-<P>The Netpbm libraries give you functions to examine a Netpbm image
+<p>The Netpbm libraries give you functions to examine a Netpbm image
 and determine what colors are in it and how many pixels of each color
 are in it.  This information is known as a color histogram.  Netpbm
-uses its <B>colorhash_table</B> data type to represent a color
+uses its <b>colorhash_table</b> data type to represent a color
 histogram.
 
-<P><B>colorhash_table ppm_computecolorhash( pixel ** const pixels,
-const int cols, const int rows, const int maxcolors, int* const colorsP )</B>
+<p><b>colorhash_table ppm_computecolorhash( pixel ** const pixels,
+const int cols, const int rows, const int maxcolors, int* const colorsP )</b>
 
-<P>This poorly but historically named function generates a
-<B>colorhash_table</B> whose value for each color is the number of
+<p>This poorly but historically named function generates a
+<b>colorhash_table</b> whose value for each color is the number of
 pixels in a specified image that have that color.  (I.e. a color
 histogram).  As a bonus, it returns the number of colors in the image.
 
-<P>(It's poorly named because not all <B>colorhash_table</B>s are
+<p>(It's poorly named because not all <b>colorhash_table</b>s are
 color histograms, but that's all it generates).
 
-<P><B>pixels</B>, <B>cols</B>, and <B>rows</B> describe the input
+<p><b>pixels</b>, <b>cols</b>, and <b>rows</b> describe the input
 image.
 
-<P><B>maxcolors</B> is the maximum number of colors you want
+<p><b>maxcolors</b> is the maximum number of colors you want
 processed.  If there are more colors that that in the input image,
-<B>ppm_computecolorhash()</B> returns NULL as its return value and
+<b>ppm_computecolorhash()</b> returns NULL as its return value and
 stops processing as soon as it discovers this.  This makes it run
-faster and use less memory.  One use for <B>maxcolors</B> is when you
+faster and use less memory.  One use for <b>maxcolors</b> is when you
 just want to find out whether or not the image has more than N colors
 and don't want to wait to generate a huge color table if so.  If you
 don't want any limit on the number of colors, specify
-<B>maxcolors</B>=<B>0</B>.
+<b>maxcolors</b>=<b>0</b>.
 
-<P><B>ppm_computecolorhash()</B> returns the actual number of colors
-in the image as <B>*colorsP</B>, but only if it is less than or equal
-to <B>maxcolors</B>.
+<p><b>ppm_computecolorhash()</b> returns the actual number of colors
+in the image as <b>*colorsP</b>, but only if it is less than or equal
+to <b>maxcolors</b>.
 
-<P><B>colorhash_table ppm_computecolorhash2( FILE * const ifp,
-const int cols, const int rows, const pixval maxval, const int format,</B>
+<p><b>colorhash_table ppm_computecolorhash2( FILE * const ifp,
+const int cols, const int rows, const pixval maxval, const int format,</b>
 
-<B>const int maxcolors, int* const colorsP )</B>
+<b>const int maxcolors, int* const colorsP )</b>
 
-<P>This is the same as <B>ppm_computecolorhash()</B> except that
+<p>This is the same as <b>ppm_computecolorhash()</b> except that
 instead of feeding it an array of pixels in storage, you give it an
 open file stream and it reads the image from the file.  The file must
 be positioned after the header, at the raster.  Upon return, the file
 is still open, but its position is undefined.
 
-<P><B>maxval</B> and <B>format</B> are the values for the image
+<p><b>maxval</b> and <b>format</b> are the values for the image
 (i.e. information from the file's header).
 
-<P><B>colorhist_vector ppm_computecolorhist( pixel ** pixels,
-int cols, int rows, int maxcolors, int * colorsP )</B>
+<p><b>colorhist_vector ppm_computecolorhist( pixel ** pixels,
+int cols, int rows, int maxcolors, int * colorsP )</b>
 
-<P>This is like <B>ppm_computecolorhash()</B> except that it creates a
-<B>colorhist_vector</B> instead of a <B>colorhash_table</B>.
+<p>This is like <b>ppm_computecolorhash()</b> except that it creates a
+<b>colorhist_vector</b> instead of a <b>colorhash_table</b>.
 
-<P>If you supply a nonzero <B>maxcolors</B> argument, that is the
+<p>If you supply a nonzero <b>maxcolors</b> argument, that is the
 maximum number of colors you expect to find in the input image.  If
 there are more colors than you say in the image,
-<B>ppm_computecolorhist()</B> returns a null pointer as its return
-value and nothing meaningful as <B>*colorsP</B>.
+<b>ppm_computecolorhist()</b> returns a null pointer as its return
+value and nothing meaningful as <b>*colorsP</b>.
 
-<P>If not, the function returns the new <B>colorhist_vector </B> as
+<p>If not, the function returns the new <b>colorhist_vector </b> as
 its return value and the actual number of colors in the image as
-<B>*colorsP</B>.  The returned array has space allocated for the
+<b>*colorsP</b>.  The returned array has space allocated for the
 specified number of colors regardless of how many actually exist.  The
 extra space is at the high end of the array and is available for your
-use in expanding the <B>colorhist_vector</B>.
+use in expanding the <b>colorhist_vector</b>.
 
-<P>If you specify <B>maxcolors</B>=<B>0</B>, there is no limit on the
+<p>If you specify <b>maxcolors</b>=<b>0</b>, there is no limit on the
 number of colors returned and the return array has space for 5 extra
 colors at the high end for your use in expanding the
-<B>colorhist_vector</B>.
+<b>colorhist_vector</b>.
 
-<P><B>colorhist_vector ppm_computecolorhist2( FILE * ifp,
+<p><b>colorhist_vector ppm_computecolorhist2( FILE * ifp,
 int cols, int rows, int maxcolors, pixval maxval, int format,
-int * colorsP )</B>
+int * colorsP )</b>
 
-<P>This is the same as <B>ppm_computecolorhist()</B> except that
+<p>This is the same as <b>ppm_computecolorhist()</b> except that
 instead of feeding it an array of pixels in storage, you give it an
 open file stream and it reads the image from the file.  The file must
 be positioned after the header, at the raster.  Upon return, the file
 is still open, but its position is undefined.
 
-<H2 id="seealso">SEE ALSO</H2>
+<h2 id="seealso">SEE ALSO</h2>
 
-<B><A HREF="pbm.html">pbm</A></B>,
-<B><A HREF="pgm.html">pgm</A></B>,
-<B><A HREF="libpbm.html">libpbm</A></B>
+<b><a href="pbm.html">pbm</a></b>,
+<b><a href="pgm.html">pgm</a></b>,
+<b><a href="libpbm.html">libpbm</a></b>
 
-<H2 id="author">AUTHOR</H2>
+<h2 id="author">AUTHOR</h2>
 
 Copyright (C) 1989, 1991 by Tony Hansen and Jef Poskanzer.
 
-<HR>
-<H2 id="index">Table Of Contents</H2>
-<UL>
-<LI><A HREF="#synopsis">SYNOPSIS</A>
-<LI><A HREF="#description">DESCRIPTION</A>
-  <UL>
-  <LI><A HREF="#types">TYPES AND CONSTANTS</A>
-  <LI><A HREF="#manipulating_pixels">MANIPULATING PIXELS</A>
-  <LI><A HREF="#initialization">INITIALIZATION</A>
-  <LI><A HREF="#memorymanagement">MEMORY MANAGEMENT</A>
-  <LI><A HREF="#readingfiles">READING FILES</A>
-  <LI><A HREF="#writingfiles">WRITING FILES</A>
-  <LI><A HREF="#miscellaneous">MISCELLANEOUS</A>
-  <LI><A HREF="#color">COLOR</A>
+<hr>
+<h2 id="index">Table Of Contents</h2>
+<ul>
+<li><a href="#synopsis">SYNOPSIS</a>
+<li><a href="#description">DESCRIPTION</a>
+  <ul>
+  <li><a href="#types">TYPES AND CONSTANTS</a>
+  <li><a href="#manipulating_pixels">MANIPULATING PIXELS</a>
+  <li><a href="#initialization">INITIALIZATION</a>
+  <li><a href="#memorymanagement">MEMORY MANAGEMENT</a>
+  <li><a href="#readingfiles">READING FILES</a>
+  <li><a href="#writingfiles">WRITING FILES</a>
+  <li><a href="#miscellaneous">MISCELLANEOUS</a>
+  <li><a href="#color">COLOR</a>
     <ul>
     <li><a href="#luminance">Luminance, Chrominance (YcbCr)</a>
     <li><a href="#berlinkay">Berlin-Kay Color</a>
     </ul>
-  <LI><A HREF="#colorname">COLOR NAMES</A>
+  <li><a href="#colorname">COLOR NAMES</a>
     <ul>
     <li><a href="#dictionary">System Color Dictionary</a>
     <li><a href="#ppm_parsecolor">ppm_parsecolor</a>
@@ -792,11 +792,11 @@ Copyright (C) 1989, 1991 by Tony Hansen and Jef Poskanzer.
     <li><a href="#ppm_colorname">ppm_colorname</a>
     <li><a href="#ppm_readcolornamefile">ppm_readcolornamefile</a>
     </ul>
-  <LI><A HREF="#colorindex">COLOR INDEXING</A>
-  <LI><A HREF="#histogram">COLOR HISTOGRAMS</A>
-  </UL>
-  <LI><A HREF="#seealso">SEE ALSO</A>
-  <LI><A HREF="#author">AUTHOR</A>
-  </UL>
-</BODY>
-</HTML>
+  <li><a href="#colorindex">COLOR INDEXING</a>
+  <li><a href="#histogram">COLOR HISTOGRAMS</a>
+  </ul>
+  <li><a href="#seealso">SEE ALSO</a>
+  <li><a href="#author">AUTHOR</a>
+  </ul>
+</body>
+</html>
diff --git a/libsystem.html b/libsystem.html
index 57f01773..4ccf57cd 100644
--- a/libsystem.html
+++ b/libsystem.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
 <html> 
 <head>
 <title>Netpbm subroutine library: pm_system() subroutine, etc.</title>
@@ -141,7 +141,7 @@ pnm_writepam(&amp;outpam, outTuples);
 
 
 
-<h2>DESCRIPTION</H2>
+<h2>DESCRIPTION</h2>
 
 <p>These library functions are part of <a href="index.html">Netpbm</a>.
 
@@ -216,7 +216,7 @@ status&quot; the program declared.
 
 <h3>Interface Header File</h3>
 
-<P>These interfaces are declared by <b>&lt;netpbm/pm_system.h&lt;</b>.
+<p>These interfaces are declared by <b>&lt;netpbm/pm_system.h&lt;</b>.
 
 
 <h3>pm_system2()</h3>
diff --git a/libtmpfile.html b/libtmpfile.html
index 6a7e53d9..208757d8 100644
--- a/libtmpfile.html
+++ b/libtmpfile.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
 <html> <head>
 <title>Netpbm subroutine library: pm_tmpfile() function</title>
 <meta name="manual_section" content="3">
@@ -45,13 +45,13 @@ fclose(myfileP);
 
 </pre>
 
-<h2>DESCRIPTION</H2>
+<h2>DESCRIPTION</h2>
 
 <p>This library function is part of <a href="index.html">Netpbm</a>.
 
 <p><b>pm_tmpfile()</b> creates and opens an unnamed temporary file.
 It is basically the same thing as the standard C library
-<b>tmpfile()</b> function, except that it uses the <b>TMPFILE</B>
+<b>tmpfile()</b> function, except that it uses the <b>TMPFILE</b>
 environment variable to decide where to create the temporary file.
 If <b>TMPFILE</b> is not set or is set to something unusable (e.g.
 too long), <b>pm_tmpfile()</b> falls back to the value of the
diff --git a/libtmpfilefd.html b/libtmpfilefd.html
index 9019023c..d4d00855 100644
--- a/libtmpfilefd.html
+++ b/libtmpfilefd.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
 <html> <head>
 <title>Netpbm subroutine library: pm_tmpfile_fd() function</title>
 <meta name="manual_section" content="3">
@@ -46,7 +46,7 @@ close(fd);
 
 </pre>
 
-<h2>DESCRIPTION</H2>
+<h2>DESCRIPTION</h2>
 
 <p>This library function is part of <a href="index.html">Netpbm</a>.
 
diff --git a/pamfixtrunc.html b/pamfixtrunc.html
index 75c6ded1..512b3777 100644
--- a/pamfixtrunc.html
+++ b/pamfixtrunc.html
@@ -1,13 +1,20 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD>
-<TITLE>Pamfixtrunc User Manual</TITLE></HEAD>
-<BODY>
-<H1>pamfixtrunc</H1>
-<BR>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Pamfixtrunc User Manual</title></head>
+<body>
+<h1>pamfixtrunc</h1>
+
+<h2>NAME</h2>
+
+pamfixtrunc - replaced by pamfix
+
+<h2>DESCRIPTION</h2>
+
+<p>This program is part of <a href="index.html">Netpbm</a>.
+
 <p><b>pamfixtrunc</b> was replaced in Netpbm 10.66 (March 2014) by
 <b><a href="pamfix.html">pamfix</a></b>.
 
-<P><B>pamfix</b> with a <b>-truncate</b> option is the same thing as
+<p><b>pamfix</b> with a <b>-truncate</b> option is the same thing as
 <b>pamfixtrunc</b>.  But <b>pamfix</b> has other options to repair other
 kinds of corruption.
 
@@ -24,10 +31,10 @@ cause <b>pamfix</b> to generate an invalid Netpbm image, you can
 use <b>-clip</b> and <b>-changemaxval</b> options to avoid truncating the
 file in a case like this.
 
-<P>You should not make any new use of <b>pamfixtrunc</b> and if you modify an
+<p>You should not make any new use of <b>pamfixtrunc</b> and if you modify an
 existing use, you should upgrade to <b>pamfixtrunc</b>.  But note that if you
 write a program that might have to be used with very old
 Netpbm, <b>pamfixtrunc</b> is the only way to do that.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/pamperspective.html b/pamperspective.html
index b456de77..018f18a5 100644
--- a/pamperspective.html
+++ b/pamperspective.html
@@ -51,7 +51,7 @@ pamperspective - a reverse scanline renderer for Netpbm images
 
 </pre>
 
-<?makeman .sh option usage ?>
+<?makeman .SH OPTION USAGE ?>
 <p>Minimum unique abbreviation of option is acceptable. (But note 
 that shortest unique prefixes might be longer in future versions of 
 the program.) You may use single hyphens instead of double hyphen to 
diff --git a/pamrgbatopng.html b/pamrgbatopng.html
index de924b81..620d5d02 100644
--- a/pamrgbatopng.html
+++ b/pamrgbatopng.html
@@ -3,7 +3,6 @@
 <body>
 <h1>pamrgbatopng</h1>
 Updated: 28 June 2015
-<br>
 
 <h2>NAME</h2>
 
diff --git a/pamrubber.html b/pamrubber.html
index 2288ba40..1bdcf24d 100644
--- a/pamrubber.html
+++ b/pamrubber.html
@@ -98,6 +98,7 @@ this, <b>pamrubber</b> reads the image from Standard Input.
 (most notably <b>-quiet</b>, see <a href="index.html#commonoptions">
 Common Options</a>), <b>pamrubber</b> recognizes the following
 command line options:
+
 <dl compact>
 
 <dt><b>-tri</b> | <b>-quad</b></dt>
diff --git a/pamslice.html b/pamslice.html
index 42f73975..2481c962 100644
--- a/pamslice.html
+++ b/pamslice.html
@@ -16,7 +16,7 @@ pamslice - extract one line of values out of a Netpbm image
 [<b>-plane=</b><i>planenumber</i>]
 [<i>imagefile</i>]
 
-<?makeman .sh option usage ?>
+<?makeman .SH OPTION USAGE ?>
 <p>All options can be abbreviated to their shortest unique prefix.
 You may use two hyphens instead of one.  You may separate an option
 name and its value with white space instead of an equals sign.
diff --git a/pamtopng.html b/pamtopng.html
index 3906ea12..acdec95e 100644
--- a/pamtopng.html
+++ b/pamtopng.html
@@ -27,7 +27,7 @@ pamtopng - convert a Netpbm image to PNG
 [<b>-interlace</b>]
 [<i>pnmfile</i>]
 
-<?makeman .sh option usage ?>
+<?makeman .SH OPTION USAGE ?>
 
 <p>Minimum unique abbreviation of option is acceptable.  You may use double
 hyphens instead of a single hyphen to denote options.  You may use white space
diff --git a/pamtowinicon.html b/pamtowinicon.html
index 38def617..d1cdc16d 100644
--- a/pamtowinicon.html
+++ b/pamtowinicon.html
@@ -39,7 +39,7 @@ combine them with <b>cat</b> and pass the result to <b>pamtowinicon</b>.
 
 <h2 id="options">OPTIONS</h2>
 
-In addition to the options common to all programs based on libnetpbm (most
+<p>In addition to the options common to all programs based on libnetpbm (most
 notably <b>-quiet</b>, see <a href="index.html#commonoptions">Common
 Options</a>), <b>pamtowinicon</b> recognizes the following command
 line options:
diff --git a/pamwipeout.html b/pamwipeout.html
index 4e4c170a..3b45f5d8 100644
--- a/pamwipeout.html
+++ b/pamwipeout.html
@@ -51,6 +51,7 @@ specify this, <b>pamwipeout</b> reads the image from Standard Input.
 (most notably <b>-quiet</b>, see <a href="index.html#commonoptions">
 Common Options</a>), <b>pamwipeout</b> recognizes the following
 command line options:
+
 <dl compact>
 <dt><b>-tb</b> | <b>-lr</b></dt>
 <dd>
diff --git a/pbm.html b/pbm.html
index 89f998f0..df357575 100644
--- a/pbm.html
+++ b/pbm.html
@@ -1,62 +1,62 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD>
-<TITLE>The PBM Format</TITLE>
-<META NAME="manual_section" CONTENT="5">
-</HEAD>
-<BODY>
-<H1>pbm</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html>
+<head>
+<title>The PBM Format</title>
+<meta name="manual_section" content="5">
+</head>
+<body>
+<h1>pbm</h1>
 Updated: 27 November 2013
-<BR>
-<A HREF="#index">Table Of Contents</A>
+<br>
+<a href="#index">Table Of Contents</a>
 
-<H2>NAME</H2>
+<h2>NAME</h2>
 
 pbm - Netpbm bi-level image format
 
-<H2 id="description">DESCRIPTION</H2>
+<h2 id="description">DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 
-<P>The PBM format is a lowest common denominator monochrome file
+<p>The PBM format is a lowest common denominator monochrome file
 format.  It serves as the common language of a large family of bitmap
 image conversion filters.  Because the format pays no heed to
 efficiency, it is simple and general enough that one can easily
 develop programs to convert to and from just about any other graphics
 format, or to manipulate the image.
 
-<P>The name "PBM" is an acronym derived from "Portable Bit Map."
+<p>The name "PBM" is an acronym derived from "Portable Bit Map."
 
-<P>This is not a format that one would normally use to store a file
+<p>This is not a format that one would normally use to store a file
 or to transmit it to someone -- it's too expensive and not expressive
 enough for that.  It's just an intermediary format.  In it's purest
 use, it lives only in a pipe between two other programs.
 
 <h2 id="layout">THE LAYOUT</h2>
 
-<P>The format definition is as follows.
+<p>The format definition is as follows.
 
-<P>A PBM file consists of a sequence of one or more PBM images. There are
+<p>A PBM file consists of a sequence of one or more PBM images. There are
 no data, delimiters, or padding before, after, or between images.
 
-<P>Each PBM image consists of the following:
+<p>Each PBM image consists of the following:
 
-<UL>
+<ul>
 
-<LI>A "magic number" for identifying the file type.
+<li>A "magic number" for identifying the file type.
 A pbm image's magic number is the two characters "P4".
 
-<LI>Whitespace (blanks, TABs, CRs, LFs).
+<li>Whitespace (blanks, TABs, CRs, LFs).
 
-<LI>The width in pixels of the image, formatted as ASCII characters in decimal.
+<li>The width in pixels of the image, formatted as ASCII characters in decimal.
 
-<LI>Whitespace.
+<li>Whitespace.
 
-<LI>The height in pixels of the image, again in ASCII decimal.
+<li>The height in pixels of the image, again in ASCII decimal.
 
-<LI>A single whitespace character (usually a newline).
+<li>A single whitespace character (usually a newline).
 
-<LI>A raster of Height rows, in order from top to bottom.  Each row is
+<li>A raster of Height rows, in order from top to bottom.  Each row is
 Width bits, packed 8 to a byte, with don't care bits to fill out the
 last byte in the row.  Each bit represents a pixel: 1 is black, 0 is
 white.  The order of the pixels is left to right.  The order of their
@@ -65,7 +65,7 @@ significant bit.  The order of the file bytes is from the beginning of
 the file toward the end of the file.
 
 
-<P>A row of an image is horizontal.  A column is vertical.  The pixels
+<p>A row of an image is horizontal.  A column is vertical.  The pixels
 in the image are square and contiguous.
 
 <li>Before the whitespace character that delimits the raster, any
@@ -76,7 +76,7 @@ of what you might consider a token.  Note also that this means if you
 have a comment right before the raster, the newline at the end of the
 comment is not sufficient to delimit the raster.
 
-</UL>
+</ul>
 
 <p>All characters referred to herein are encoded in ASCII.
 "newline" refers to the character known in ASCII as Line
@@ -86,7 +86,7 @@ calls white space).
 
 
 <h3 id="plainpbm">Plain PBM</h3>
-<P>
+<p>
 There is actually another version of the PBM format, even more
 simplistic, more lavishly wasteful of space than PBM, called Plain
 PBM.  Plain PBM actually came first, but even its inventor couldn't
@@ -103,7 +103,7 @@ here, because you can decode it by inspection.
 default, but the <a href="index.html#commonoptions">common option</a>
 <b>-plain</b> chooses Plain PBM.
 
-<P>The difference is:
+<p>The difference is:
 <ul>
 <li>
 There is exactly one image in a file.
@@ -123,7 +123,7 @@ No line should be longer than 70 characters.
 </ul>
 
 Here is an example of a small image in the plain PBM format.
-<PRE>
+<pre>
 P1
 # feep.pbm
 24 7
@@ -134,14 +134,14 @@ P1
 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0
 0 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-</PRE>
+</pre>
 
 <p>There is a newline character at the end of each of these lines.
 
-<P>You can generate the Plain PBM format from the regular PBM format
-(first image in the file only) with the <B>pnmtoplainpnm</B> program.
+<p>You can generate the Plain PBM format from the regular PBM format
+(first image in the file only) with the <b>pnmtoplainpnm</b> program.
 
-<P>Programs that read this format should be as lenient as possible,
+<p>Programs that read this format should be as lenient as possible,
 accepting anything that looks remotely like a bitmap.
 
 
@@ -163,33 +163,33 @@ cases where distinguishing between the particular subformats of PNM is not
 convenient.
 
 
-<H2 id="compatibility">COMPATIBILITY</H2>
+<h2 id="compatibility">COMPATIBILITY</h2>
 
-<P>Before July 2000, there could be at most one image in a PBM file.  As
+<p>Before July 2000, there could be at most one image in a PBM file.  As
 a result, most tools to process PBM files ignore (and don't read) any
 data after the first image.
 
-<H2 id="seealso">SEE ALSO</H2>
+<h2 id="seealso">SEE ALSO</h2>
 
-<B><A HREF="libnetpbm.html">libnetpbm</A></B>,
-<B><A HREF="pnm.html">pnm</A></B>,
-<B><A HREF="pgm.html">pgm</A></B>,
-<B><A HREF="ppm.html">ppm</A></B>,
-<B><A HREF="pam.html">pam</A></B>,
-<B><A HREF="directory.html">programs that process PBM</A></B>
+<b><a href="libnetpbm.html">libnetpbm</a></b>,
+<b><a href="pnm.html">pnm</a></b>,
+<b><a href="pgm.html">pgm</a></b>,
+<b><a href="ppm.html">ppm</a></b>,
+<b><a href="pam.html">pam</a></b>,
+<b><a href="directory.html">programs that process PBM</a></b>
 
-<HR>
-<H2 id="index">Table Of Contents</H2>
-<UL>
-<LI><A HREF="#description">DESCRIPTION</A>
-<LI><A HREF="#layout">THE LAYOUT</A>
+<hr>
+<h2 id="index">Table Of Contents</h2>
 <ul>
-  <li><A HREF="#plainpbm">Plain PBM</A>
+<li><a href="#description">DESCRIPTION</a>
+<li><a href="#layout">THE LAYOUT</a>
+<ul>
+  <li><a href="#plainpbm">Plain PBM</a>
     </ul>
-<li><A HREF="#internetmediatype">INTERNET MEDIA TYPE</A>
-<li><A HREF="#filename">FILE NAME</A>
-<LI><A HREF="#compatibility">COMPATIBILITY</A>
-<LI><A HREF="#seealso">SEE ALSO</A>
-</UL>
-</BODY>
-</HTML>
+<li><a href="#internetmediatype">INTERNET MEDIA TYPE</a>
+<li><a href="#filename">FILE NAME</a>
+<li><a href="#compatibility">COMPATIBILITY</a>
+<li><a href="#seealso">SEE ALSO</a>
+</ul>
+</body>
+</html>
diff --git a/pbmclean.html b/pbmclean.html
index 21a810bb..3f146e3e 100644
--- a/pbmclean.html
+++ b/pbmclean.html
@@ -17,7 +17,7 @@ pbmclean - despeckle a PBM image
 [<b>-extended</b>]
 [<i>pbmfile</i>]
 
-<?makeman .sh option usage ?>
+<?makeman .SH OPTION USAGE ?>
 <p>You can use the minimum unique abbreviation of the options.  You
 can use two hyphens instead of one.  You can separate an option name
 from its value with white space instead of an equals sign.
diff --git a/pbmtog3.html b/pbmtog3.html
index 5606c989..88de7656 100644
--- a/pbmtog3.html
+++ b/pbmtog3.html
@@ -37,6 +37,7 @@ use those encodings.
 (most notably <b>-quiet</b>, see <a href="index.html#commonoptions">
 Common Options</a>), <b>pbmtog3</b> recognizes the following
 command line options:
+
 <dl>
 <dt><b>-reversebits</b>
 
diff --git a/pbmtoibm23xx.html b/pbmtoibm23xx.html
index 71e49efe..7abf5ec4 100644
--- a/pbmtoibm23xx.html
+++ b/pbmtoibm23xx.html
@@ -37,6 +37,7 @@ Standard Input.
 (most notably <b>-quiet</b>, see <a href="index.html#commonoptions">
 Common Options</a>), <b>pbmtoibm23xx</b> recognizes the following
 command line options:
+
 <dl>
 <dt><b>-xres=</b><i>dpi</i>
 
diff --git a/pbmtoicon.html b/pbmtoicon.html
index e46d63a7..f44944b8 100644
--- a/pbmtoicon.html
+++ b/pbmtoicon.html
@@ -12,7 +12,6 @@ pbmtoicon - replaced by pbmtosunicon
 <b>pbmtoicon</b>
 [<i>iconfile</i>]
 
-
 <h2 id="description">DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
diff --git a/pbmtox10bm.html b/pbmtox10bm.html
index 416a07cb..980d6f32 100644
--- a/pbmtox10bm.html
+++ b/pbmtox10bm.html
@@ -1,23 +1,25 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD>
-<TITLE>Pbmtox10bm User Manual</TITLE></HEAD>
-<BODY>
-<H1>pbmtox10bm</H1>
-<BR>
-<H2>NAME</H2>
-pbmtox10bm - convert a PBM image to an X11 bitmap
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Pbmtox10bm User Manual</title></head>
+<body>
+<h1>pbmtox10bm</h1>
+<br>
+<h2>NAME</h2>
+pbmtox10bm - replaced by pbmtoxbm
+
+<h2>DESCRIPTION</h2>
+
+<p>This program is part of <a href="index.html">Netpbm</a>.
 
-<H2>DESCRIPTION</H2>
 <p><b>pbmtox10bm</b> was replaced in Netpbm 10.37 (December 2006) by
 <b><a href="pbmtoxbm.html">pbmtoxbm</a></b>.
 
-<P><B>pbmtoxbm</b> with the <b>-x10</b> option is backward compatible
+<p><b>pbmtoxbm</b> with the <b>-x10</b> option is backward compatible
 with <b>pbmtox10bm</b>.  <b>pbmtoxbm</b> also can generate X11 bitmaps.
 
-<P>You should not make any new use of <b>pbmtox10bm</b> and if you modify an
+<p>You should not make any new use of <b>pbmtox10bm</b> and if you modify an
 existing use, you should upgrade to <b>pbmtoxbm</b>.  But note that if you
 write a program that might have to be used with old Netpbm, <b>pbmtox10bm</b>
 is the only way to do that.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/pcdindex.html b/pcdindex.html
index a5460176..82097414 100644
--- a/pcdindex.html
+++ b/pcdindex.html
@@ -1,17 +1,18 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<html><head>
-<title>pcdindex</title>
-</head><body>
-
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>pcdindex</title></head>
+<body>
 <h1>pcdindex</h1>
-<br>
 
 <h2>NAME</h2>
-<b>pcdindex</b> - renamed to <b>pcdovtoppm</b>
+
+pcdindex - renamed to pcdovtoppm
 
 <h2>DESCRIPTION</h2>
 
-<p><b>pcdindex</b> has been renamed to <b><a
-href="pcdovtoppm.html">pcdovtoppm</a></b>.
+<p>This program is part of <a href="index.html">Netpbm</a>.
+
+<p><b>pcdindex</b> has been renamed to <b>
+<a href="pcdovtoppm.html">pcdovtoppm</a></b>.
 
-</body> </html>
+</body>
+</html>
diff --git a/pfm.html b/pfm.html
index e95dc414..f6f26c92 100644
--- a/pfm.html
+++ b/pfm.html
@@ -1,16 +1,16 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD><TITLE>PFM Format Description</TITLE>
-<META NAME="manual_section" CONTENT="5">
-</HEAD>
-<BODY>
-<H1>pfm</h1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html>
+<head><title>PFM Format Description</title>
+<meta name="manual_section" content="5">
+</head>
+<body>
+<h1>pfm</h1>
 Updated: 19 April 2012
-<H2>NAME</H2>
+<h2>NAME</h2>
 
 PFM - PFM graphic image file format
 
-<H2>DESCRIPTION</H2>
+<h2>DESCRIPTION</h2>
 
 <p>
 This document describes the PFM graphic image file format as understood by
@@ -87,6 +87,6 @@ that most CPUs and compiler use, you can usually just make a program use
 the bytes directly as a floating point number, after taking care of the
 endianness variation.
 
-</BODY>
-</HTML>
+</body>
+</html>
 
diff --git a/pgm.html b/pgm.html
index f02a67a9..c0fb4d8d 100644
--- a/pgm.html
+++ b/pgm.html
@@ -1,80 +1,80 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD>
-<TITLE>PGM Format Specification</TITLE>
-<META NAME="manual_section" CONTENT="5">
-</HEAD>
-<BODY>
-<H1>pgm</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html>
+<head>
+<title>PGM Format Specification</title>
+<meta name="manual_section" content="5">
+</head>
+<body>
+<h1>pgm</h1>
 Updated: 09 October 2016
-<BR>
-<A HREF="#index">Table Of Contents</A>
+<br>
+<a href="#index">Table Of Contents</a>
 
-<H2>NAME</H2>
+<h2>NAME</h2>
 
 pgm - Netpbm grayscale image format
 
-<H2 id="description">DESCRIPTION</H2>
+<h2 id="description">DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 
-<P>The PGM format is a lowest common denominator grayscale file format.
+<p>The PGM format is a lowest common denominator grayscale file format.
 It is designed to be extremely easy to learn and write programs for.
 (It's so simple that most people will simply reverse engineer it
 because it's easier than reading this specification).
 
-<P>A PGM image represents a grayscale graphic image.  There are many
+<p>A PGM image represents a grayscale graphic image.  There are many
 pseudo-PGM formats in use where everything is as specified herein except
 for the meaning of individual pixel values.  For most purposes, a PGM
 image can just be thought of an array of arbitrary integers, and all the
 programs in the world that think they're processing a grayscale image 
 can easily be tricked into processing something else.
 
-<P>The name "PGM" is an acronym derived from "Portable Gray Map."
+<p>The name "PGM" is an acronym derived from "Portable Gray Map."
 
-<P>One official variant of PGM is the transparency mask.  A transparency
+<p>One official variant of PGM is the transparency mask.  A transparency
 mask in Netpbm is represented by a PGM image, except that in place of 
 pixel intensities, there are opaqueness values.  See below.
 
 <h2 id="format">THE FORMAT</h2>
 
-<P>The format definition is as follows.  You can use the <a
+<p>The format definition is as follows.  You can use the <a
 href="libnetpbm.html">libnetpbm</a> C subroutine library to conveniently
 and accurately read and interpret the format.
 
-<P>A PGM file consists of a sequence of one or more PGM images. There are
+<p>A PGM file consists of a sequence of one or more PGM images. There are
 no data, delimiters, or padding before, after, or between images.
 
-<P>Each PGM image consists of the following:
+<p>Each PGM image consists of the following:
 
-<OL>
+<ol>
   
-<LI>A "magic number" for identifying the file type.
+<li>A "magic number" for identifying the file type.
 A pgm image's magic number is the two characters "P5".
 
-<LI>Whitespace (blanks, TABs, CRs, LFs).
+<li>Whitespace (blanks, TABs, CRs, LFs).
 
-<LI>A width, formatted as ASCII characters in decimal.
+<li>A width, formatted as ASCII characters in decimal.
 
-<LI>Whitespace.
+<li>Whitespace.
 
-<LI>A height, again in ASCII decimal.
+<li>A height, again in ASCII decimal.
 
-<LI>Whitespace.
+<li>Whitespace.
 
-<LI>The maximum gray value (Maxval), again in ASCII decimal.  Must be less
+<li>The maximum gray value (Maxval), again in ASCII decimal.  Must be less
 than 65536, and more than zero.
 
-<LI>A single whitespace character (usually a newline).
+<li>A single whitespace character (usually a newline).
 
-<LI>A raster of Height rows, in order from top to bottom.  Each row
+<li>A raster of Height rows, in order from top to bottom.  Each row
 consists of Width gray values, in order from left to right.  Each gray
 value is a number from 0 through Maxval, with 0 being black and Maxval
 being white.  Each gray value is represented in pure binary by either
 1 or 2 bytes.  If the Maxval is less than 256, it is 1 byte.
 Otherwise, it is 2 bytes.  The most significant byte is first.
 
-<P>A row of an image is horizontal.  A column is vertical.  The pixels
+<p>A row of an image is horizontal.  A column is vertical.  The pixels
 in the image are square and contiguous.
 
 <p>Each gray value is a number proportional to the intensity of the
@@ -89,10 +89,10 @@ might be compared.
 
 <p>Note that a common variation from the PGM format is to have the
 gray value be "linear," i.e. as specified above except
-without the gamma adjustment.  <B>pnmgamma</B> takes such a PGM
+without the gamma adjustment.  <b>pnmgamma</b> takes such a PGM
 variant as input and produces a true PGM as output.
 
-<P>Another popular variation from PGM is to substitute the newer sRGB transfer
+<p>Another popular variation from PGM is to substitute the newer sRGB transfer
 function for the BT.709 one.  You can use <b>pnmgamma</b> to convert between
 this variation and true PGM.
 
@@ -106,12 +106,12 @@ compute the intensity of a composite pixel of an "under" and
 (alpha/alpha_maxval).  Note that there is no gamma transfer function
 in the transparency mask.
 
-</OL> 
+</ol> 
 
 <p>Strings starting with "#" may be comments, the same as
 with <a href="pbm.html">PBM</a>.
 
-<P>Note that you can use <B>pamdepth</B> to convert between a the
+<p>Note that you can use <b>pamdepth</b> to convert between a the
 format with 1 byte per gray value and the one with 2 bytes per gray
 value.
 
@@ -123,13 +123,13 @@ calls white space).
 
 <h3 id="plainpgm">Plain PGM</h3>
 
-<P>There is actually another version of the PGM format that is fairly
+<p>There is actually another version of the PGM format that is fairly
 rare: "plain" PGM format.  The format above, which generally
 considered the normal one, is known as the "raw" PGM format.
-See <B><A HREF="pbm.html">pbm</A></B> for some commentary on how plain
+See <b><a href="pbm.html">pbm</a></b> for some commentary on how plain
 and raw formats relate to one another and how to use them.
 
-<P>The difference in the plain format is:
+<p>The difference in the plain format is:
 
 <ul>
 <li>
@@ -149,7 +149,7 @@ No line should be longer than 70 characters.
 
 <p>Here is an example of a small image in the plain PGM format.
 
-<PRE>
+<pre>
 P2
 # feep.pgm
 24 7
@@ -161,9 +161,9 @@ P2
 0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0  0  0
 0  3  0  0  0  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15  0  0  0  0
 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
-</PRE>
+</pre>
 
-<P>There is a newline character at the end of each of these lines.
+<p>There is a newline character at the end of each of these lines.
 
 <p>Programs that read this format should be as lenient as possible,
 accepting anything that looks remotely like a PGM.
@@ -187,43 +187,43 @@ cases where distinguishing between the particular subformats of PNM is not
 convenient.
 
 
-<H2 id="compatibility">COMPATIBILITY</H2>
+<h2 id="compatibility">COMPATIBILITY</h2>
 
-<P>
+<p>
 Before April 2000, a raw format PGM file could not have a maxval greater
 than 255.  Hence, it could not have more than one byte per sample.  Old
 programs may depend on this.
-<P>
+<p>
 Before July 2000, there could be at most one image in a PGM file.  As
 a result, most tools to process PGM files ignore (and don't read) any
 data after the first image.
 
-<H2 id="seealso">SEE ALSO</H2>
+<h2 id="seealso">SEE ALSO</h2>
 
-<A HREF="pnm.html">pnm</A>,
-<A HREF="pbm.html">pbm</A>,
-<A HREF="ppm.html">ppm</A>,
-<A HREF="pam.html">pam</A>,
-<A HREF="libnetpbm.html">libnetpbm</A>,
-<A HREF="directory.html">programs that process PGM</A>,
+<a href="pnm.html">pnm</a>,
+<a href="pbm.html">pbm</a>,
+<a href="ppm.html">ppm</a>,
+<a href="pam.html">pam</a>,
+<a href="libnetpbm.html">libnetpbm</a>,
+<a href="directory.html">programs that process PGM</a>,
 
-<H2 id="author">AUTHOR</H2>
+<h2 id="author">AUTHOR</h2>
 
 Copyright (C) 1989, 1991 by Jef Poskanzer.
 
-<HR>
-<H2 id="index">Table Of Contents</H2>
-<UL>
-<LI><A HREF="#description">DESCRIPTION</A>
-<LI><A HREF="#description">THE FORMAT</A>
+<hr>
+<h2 id="index">Table Of Contents</h2>
 <ul>
-  <li><A HREF="#plainpgm">Plain PGM</A>
+<li><a href="#description">DESCRIPTION</a>
+<li><a href="#format">THE FORMAT</a>
+<ul>
+  <li><a href="#plainpgm">Plain PGM</a>
     </ul>
-<li><A HREF="#internetmediatype">INTERNET MEDIA TYPE</A>
-<li><A HREF="#filename">FILE NAME</A>
-<LI><A HREF="#compatibility">COMPATIBILITY</A>
-<LI><A HREF="#seealso">SEE ALSO</A>
-<LI><A HREF="#author">AUTHOR</A>
-</UL>
-</BODY>
-</HTML>
+<li><a href="#internetmediatype">INTERNET MEDIA TYPE</a>
+<li><a href="#filename">FILE NAME</a>
+<li><a href="#compatibility">COMPATIBILITY</a>
+<li><a href="#seealso">SEE ALSO</a>
+<li><a href="#author">AUTHOR</a>
+</ul>
+</body>
+</html>
diff --git a/pgmcrater.html b/pgmcrater.html
index eb0ae703..8d99172c 100644
--- a/pgmcrater.html
+++ b/pgmcrater.html
@@ -1,36 +1,37 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD><TITLE>Pgmcrater User Manual</TITLE></HEAD>
-<BODY>
-<H1>pgmcrater</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Pgmcrater User Manual</title></head>
+<body>
+<h1>pgmcrater</h1>
 Updated: 26 July 2014
-<BR>
-<A HREF="#index">Table Of Contents</A>
+<br>
+<a href="#index">Table Of Contents</a>
+
+<h2>NAME</h2>
 
-<H2 id="name">NAME</H2>
 pgmcrater - create cratered terrain by fractal forgery
 
-<H2 id="synopsis">SYNOPSIS</H2>
+<h2 id="synopsis">SYNOPSIS</h2>
 
-<B>pgmcrater</B>
+<b>pgmcrater</b>
 
-[<B>-number</B> <I>n</I>]
+[<b>-number</b> <i>n</i>]
 
-[<B>-height</B>|<B>-ysize</B> <I>s</I>]
+[<b>-height</b>|<b>-ysize</b> <i>s</i>]
 
-[<B>-width</B>|<B>-xsize</B> <I>s</I>]
+[<b>-width</b>|<b>-xsize</b> <i>s</i>]
 
-[<B>-gamma</B> <I>g</I>]
+[<b>-gamma</b> <i>g</i>]
 
 [<b>-randomseed=</b><i>integer</i>]
 
-<P>
+<p>
 All options can be abbreviated to their shortest unique prefix.  You
 may use two hyphens instead of one to designate an option.  You may
 use either white space or equals signs between an option name and its
 value.
 
 
-<H2 id="description">DESCRIPTION</H2>
+<h2 id="description">DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 
@@ -47,10 +48,10 @@ function as traditional <b>pgmcrater</b>.
 and <b>-randomseed</b> options are equivalent to the options of the same name
 on <b>pamcrater</b>.
 
-<P><b>pgmcrater</b>'s <b>-gamma</b> option is equivalent to
+<p><b>pgmcrater</b>'s <b>-gamma</b> option is equivalent to
 the option of the same name on <b>pamshadedrelief</b>.
 
-<P><B>pgmcrater</B>'s <b>-ysize</b> option is identical to <b>-height</b>;
+<p><b>pgmcrater</b>'s <b>-ysize</b> option is identical to <b>-height</b>;
 <b>-xsize</b> is identical to <b>-width</b>.
 
 <p>Note: The former <b>pgmcrater</b> code was split into <b>pamcrater</b>
@@ -59,16 +60,16 @@ programs is more consistent with Netpbm's building block philosophy.  It is
 possible the separate components can be used in other applications.
 
 
-<H2 id="seealso">SEE ALSO</H2>
-<B><A HREF="pamcrater.html">pamcrater</A></B>,
-<B><A HREF="pamshadedrelief.html">pamshadedrelief</A></B>,
-<B><A HREF="pamtopnm.html">pamtopnm</A></B>,
+<h2 id="seealso">SEE ALSO</h2>
+<b><a href="pamcrater.html">pamcrater</a></b>,
+<b><a href="pamshadedrelief.html">pamshadedrelief</a></b>,
+<b><a href="pamtopnm.html">pamtopnm</a></b>,
 
-<H2 id="index">Table Of Contents</H2>
-<UL>
-<LI><A HREF="#synopsis">SYNOPSIS</A>
-<LI><A HREF="#description">DESCRIPTION</A>
-<LI><A HREF="#seealso">SEE ALSO</A>
-</UL>
-</BODY>
-</HTML>
+<h2 id="index">Table Of Contents</h2>
+<ul>
+<li><a href="#synopsis">SYNOPSIS</a>
+<li><a href="#description">DESCRIPTION</a>
+<li><a href="#seealso">SEE ALSO</a>
+</ul>
+</body>
+</html>
diff --git a/pgmedge.html b/pgmedge.html
index b0ff54b4..718ad81e 100644
--- a/pgmedge.html
+++ b/pgmedge.html
@@ -1,20 +1,23 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD>
-<TITLE>Pgmedge User Manual</TITLE>
-</HEAD><BODY>
-<H1>pgmedge</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head>
+<title>Pgmedge User Manual</title>
+</head><body>
+<h1>pgmedge</h1>
 Updated: March 2002
-<BR>
-<H2>NAME</H2>
-<B>pgmedge</B> - replaced by pamedge
-<H2>DESCRIPTION</H2>
+
+<h2>NAME</h2>
+
+pgmedge - replaced by pamedge
+
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
+
 <p><b>pgmedge</b> was replaced in Netpbm 10.14 (March 2002) by
 <b><a href="pamedge.html">pamedge</a></b>.
 
-<P><B>pamedge</b> is backward compatible with <b>pgmedge</b>, but works on
+<p><b>pamedge</b> is backward compatible with <b>pgmedge</b>, but works on
 color images too.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/pgmnorm.html b/pgmnorm.html
index b076b3bc..9d0f2314 100644
--- a/pgmnorm.html
+++ b/pgmnorm.html
@@ -1,20 +1,21 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD>
-<TITLE>Pgmnorm User Manual</TITLE>
-</HEAD><BODY>
-<H1>pgmnorm</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Pgmnorm User Manual</title></head>
+<body>
+<h1>pgmnorm</h1>
 Updated: March 2002
-<BR>
-<H2>NAME</H2>
-<B>pgmnorm</B> - replaced by pnmnorm
-<H2>DESCRIPTION</H2>
+<br>
+<h2>NAME</h2>
+
+pgmnorm - replaced by pnmnorm
+
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 <p><b>pgmnorm</b> was replaced in Netpbm 9.25 (March 2002) by
 <b><a href="pnmnorm.html">pnmnorm</a></b>.
 
-<P><B>pnmnorm</b> is backward compatible with <b>pgmnorm</b>, but it also
+<p><b>pnmnorm</b> is backward compatible with <b>pgmnorm</b>, but it also
 handles PPM images.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/pgmoil.html b/pgmoil.html
index fd3b6f48..b55c0ae2 100644
--- a/pgmoil.html
+++ b/pgmoil.html
@@ -1,20 +1,21 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD>
-<TITLE>Pgmoil User Manual</TITLE>
-</HEAD><BODY>
-<H1>pgmoil</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Pgmoil User Manual</title></head>
+<body>
+<h1>pgmoil</h1>
 Updated: July 2001
-<BR>
-<H2>NAME</H2>
-<B>pgmoil</B> - replaced by pamoil
-<H2>DESCRIPTION</H2>
+<br>
+<h2>NAME</h2>
+
+pgmoil - replaced by pamoil
+
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 <p><b>pgmoil</b> was replaced in Netpbm 9.16 (July 2001) by
 <b><a href="pamoil.html">pamoil</a></b>.
 
-<P><B>pamoil</b> is backward compatible with <b>pgmoil</b>, but works on
+<p><b>pamoil</b> is backward compatible with <b>pgmoil</b>, but works on
 color images too.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/pgmramp.html b/pgmramp.html
index 12e1d530..2353c579 100644
--- a/pgmramp.html
+++ b/pgmramp.html
@@ -60,6 +60,7 @@ but for color.  The image fades between two colors of your choice.
 (most notably <b>-quiet</b>, see <a href="index.html#commonoptions">
 Common Options</a>), <b>pgmramp</b> recognizes the following
 command line options:
+
 <p>
 You must specify exactly one of the ramp type options.
 
diff --git a/pgmslice.html b/pgmslice.html
index a71c044b..1eca0e0b 100644
--- a/pgmslice.html
+++ b/pgmslice.html
@@ -1,23 +1,23 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD><title>Pgmslice User Manual</title>
-</HEAD><BODY>
-<H1>pgmslice</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Pgmslice User Manual</title></head>
+<body>
+<h1>pgmslice</h1>
 Updated: 22 June 2002
-<BR>
-<H2>NAME</H2>
+
+<h2>NAME</h2>
+
 pgmslice - extract one line of pixel values out of a PGM
 
-<H2>DESCRIPTION</H2>
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 
-<P>Starting with Netpbm 10.3, <b>pgmslice</b> is obsolete.  Use
+<p>Starting with Netpbm 10.3, <b>pgmslice</b> is obsolete.  Use
 <a href="pamslice.html"><b>pamslice</b></a> instead.  It is backward
 compatible.
 
-</BODY>
-</HTML>
+</body>
+</html>
 
 
 
diff --git a/pgmtopbm.html b/pgmtopbm.html
index fc72f2fa..37c5921e 100644
--- a/pgmtopbm.html
+++ b/pgmtopbm.html
@@ -3,12 +3,14 @@
 <body>
 <h1>pgmtopbm</h1>
 Updated: 17 July 2020
+<br>
+<a href="#index">Table Of Contents</a>
 
 <h2>NAME</h2>
 
 pgmtopbm - convert a PGM image to PBM
 
-<h2>SYNOPSIS</h2>
+<h2 id="synopsis">SYNOPSIS</h2>
 
 <b>pgmtopbm</b>
 
@@ -26,7 +28,7 @@ pgmtopbm - convert a PGM image to PBM
 
 [<i>pgmfile</i>]
 
-<h2>DESCRIPTION</h2>
+<h2 id="description">DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 
@@ -64,5 +66,27 @@ calculation.
 <p>If you just want to convert a PGM image with maxval 1 to PBM,
 use <a href="pamtopnm.html"><b>pamtopnm</b></a>.
 
+<h2 id="seealso">SEE ALSO</h2>
+
+<a href="pamditherbw.html">pamditherbw</a>,
+<a href="pamtopnm.html">pamtopnm</a>,
+<a href="pbmtopgm.html">pbmtopgm</a>,
+<a href="pamthreshold.html">pamthreshold</a>,
+<a href="pbmreduce.html">pbmreduce</a>,
+<a href="pgm.html">pgm</a>,
+<a href="pbm.html">pbm</a>
+
+<h2 id="author">AUTHOR</h2>
+
+Copyright (C) 1989 by Jef Poskanzer.
+
+<hr>
+<h2 id="index">Table Of Contents</h2>
+<ul>
+<li><a href="#synopsis">SYNOPSIS</a>
+<li><a href="#description">DESCRIPTION</a>
+<li><a href="#seealso">SEE ALSO</a>
+<li><a href="#author">AUTHOR</a>
+</ul>
 </body>
 </html>
diff --git a/pnm.html b/pnm.html
index 54d3c59b..c8045dae 100644
--- a/pnm.html
+++ b/pnm.html
@@ -1,36 +1,36 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD>
-<TITLE>The PNM Format</TITLE>
-<META NAME="manual_section" CONTENT="5">
-</HEAD>
-<BODY>
-
-<H1>pnm</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html>
+<head>
+<title>The PNM Format</title>
+<meta name="manual_section" content="5">
+</head>
+<body>
+
+<h1>pnm</h1>
 Updated: 27 November 2013
-<BR>
-<A HREF="#index">Table Of Contents</A>
+<br>
+<a href="#index">Table Of Contents</a>
 
-<H2>NAME</H2>
+<h2>NAME</h2>
 
 pnm - Netpbm superformat
 
-<H2 id="description">DESCRIPTION</H2>
+<h2 id="description">DESCRIPTION</h2>
 
-<P>The PNM format is just an abstraction of the PBM, PGM, and PPM
+<p>The PNM format is just an abstraction of the PBM, PGM, and PPM
 formats.  I.e. the name "PNM" refers collectively to
 PBM, PGM, and PPM.
 
-<P>The name "PNM" is an acronym derived from "Portable
+<p>The name "PNM" is an acronym derived from "Portable
 Any Map." This derivation makes more sense if you consider
 it in the context of the other Netpbm format names: PBM, PGM, and PPM.
 
-<P>The more general term "Netpbm format" refers to the PNM
+<p>The more general term "Netpbm format" refers to the PNM
 formats plus PAM.
 
 <p>PNM is principally used with <a href="index.html">Netpbm</a>.
 
-<P>Note that besides being names of formats, PBM, PGM, PPM, and PNM
+<p>Note that besides being names of formats, PBM, PGM, PPM, and PNM
 are also classes of programs.  A PNM program can take PBM, PGM, or PPM
 input.  That's nothing special -- a PPM program can too.  But a PNM
 program can often produce multiple output formats as well, and a PNM
@@ -39,7 +39,7 @@ respond to each differently whereas a PPM program sees everything as
 if it were PPM.  This is discussed more in <a href="index.html">the
 description of the netpbm programs</a>.
 
-<P>"pnm" also appears in the names of the most general <a
+<p>"pnm" also appears in the names of the most general <a
 href="libnetpbm.html">Netpbm library routines</a>, some of which aren't even
 related to the PNM format.
 
@@ -61,22 +61,22 @@ depending on the particular subformat, or "pnm" if it is not
 convenient to distinguish the subformats.
 
 
-<H2 id="seealso">SEE ALSO</H2>
-<A HREF="ppm.html">ppm</A>,
-<A HREF="pgm.html">pgm</A>,
-<A HREF="pbm.html">pbm</A>,
-<A HREF="pam.html">pam</A>,
-<A HREF="directory.html">programs that process PNM</A>,
-<A HREF="libnetpbm.html">libnetpbm</A>
-
-
-<HR>
-<H2 id="index">Table Of Contents</H2>
-<UL>
-<LI><A HREF="#description">DESCRIPTION</A>
-<li><A HREF="#internetmediatype">INTERNET MEDIA TYPE</A>
-<li><A HREF="#filename">FILE NAME</A>
-<LI><A HREF="#seealso">SEE ALSO</A>
-</UL>
-</BODY>
-</HTML>
+<h2 id="seealso">SEE ALSO</h2>
+<a href="ppm.html">ppm</a>,
+<a href="pgm.html">pgm</a>,
+<a href="pbm.html">pbm</a>,
+<a href="pam.html">pam</a>,
+<a href="directory.html">programs that process PNM</a>,
+<a href="libnetpbm.html">libnetpbm</a>
+
+
+<hr>
+<h2 id="index">Table Of Contents</h2>
+<ul>
+<li><a href="#description">DESCRIPTION</a>
+<li><a href="#internetmediatype">INTERNET MEDIA TYPE</a>
+<li><a href="#filename">FILE NAME</a>
+<li><a href="#seealso">SEE ALSO</a>
+</ul>
+</body>
+</html>
diff --git a/pnmarith.html b/pnmarith.html
index 41439084..8564c96d 100644
--- a/pnmarith.html
+++ b/pnmarith.html
@@ -1,19 +1,18 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD><title>Pnmarith User Manual</title></HEAD>
-
-<BODY>
-<H1>pnmarith</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Pnmarith User Manual</title></head>
+<body>
+<h1>pnmarith</h1>
 Updated: 22 June 2002
-<BR>
-<H2>NAME</H2>
-pnmarith - perform arithmetic on two PNM images
+<br>
+<h2>NAME</h2>
+
+pnmarith - replaced by pamarith
 
-<H2>DESCRIPTION</H2>
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 
-<P>Starting with Netpbm 10.3, <b>pnmarith</b> is obsolete.  Use
+<p>Starting with Netpbm 10.3, <b>pnmarith</b> is obsolete.  Use
 <a href="pamarith.html"><b>pamarith</b></a> instead.
 
 <b>pamarith</b> is backward compatible with <b>pnmarith</b> except where
@@ -22,8 +21,8 @@ the one with the lesser depth to have the higher depth before doing the
 arithmetic.  With <b>pamarith</b>, you must do that step separately, using
 <b>pgmtoppm</b>.
 
-</BODY>
-</HTML>
+</body>
+</html>
 
 
 
diff --git a/pnmcut.html b/pnmcut.html
index 089418af..ef8cc348 100644
--- a/pnmcut.html
+++ b/pnmcut.html
@@ -1,16 +1,14 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD><TITLE>Pnmcut User Manual</TITLE></HEAD>
-<BODY>
-<H1>pnmcut</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Pnmcut User Manual</title></head>
+<body>
+<h1>pnmcut</h1>
 Updated: 02 February 2009
-<BR>
 
-<H2>NAME</H2>
+<h2>NAME</h2>
 
-<B>pnmcut</B> - replaced by pamcut
+pnmcut - replaced by pamcut
 
-
-<H2>DESCRIPTION</H2>
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 
@@ -28,8 +26,8 @@ age.  But now it would just be clutter.
 <b>pnmcut</b>.  Features that are in <b>pamcut</b> but not <b>pnmcut</b>
 are indicated by statements that they didn't exist before 9.20.
 
-</BODY>
-</HTML>
+</body>
+</html>
 
 
 
diff --git a/pnmdepth.html b/pnmdepth.html
index 1ac8d13c..aefdf478 100644
--- a/pnmdepth.html
+++ b/pnmdepth.html
@@ -1,19 +1,18 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD><title>Pnmdepth User Manual</title></HEAD>
-
-<BODY>
-<H1>pnmdepth</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Pnmdepth User Manual</title></head>
+<body>
+<h1>pnmdepth</h1>
 Updated: 06 March 2006
-<BR>
-<H2>NAME</H2>
-pnmdepth - change the maxval in a PNM image
 
-<H2>DESCRIPTION</H2>
+<h2>NAME</h2>
+
+pnmdepth - replaced by pamdepth
+
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 
-<P>Starting with Netpbm 10.32 (February 2006), <b>pnmdepth</b> is
+<p>Starting with Netpbm 10.32 (February 2006), <b>pnmdepth</b> is
 obsolete.  Use <a href="pamdepth.html"><b>pamdepth</b></a> instead.
 
 <b>pamdepth</b> is backward compatible with <b>pnmdepth</b>.  You can
@@ -24,8 +23,8 @@ features that were added after Netpbm 10.31.
 as an alias for 'pamdepth'.  But because of a bug, that name doesn't work
 in Netpbm 10.32.  You have to fix the symbolic link.
 
-</BODY>
-</HTML>
+</body>
+</html>
 
 
 
diff --git a/pnmenlarge.html b/pnmenlarge.html
index 1d387867..d6cd54a5 100644
--- a/pnmenlarge.html
+++ b/pnmenlarge.html
@@ -1,22 +1,20 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD>
-<TITLE>Pnmenlarge User Manual</TITLE>
-</HEAD><BODY>
-<H1>pnmenlarge</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Pnmenlarge User Manual</title></head>
+<body>
+<h1>pnmenlarge</h1>
 Updated: September 2004
-<BR>
 
-<H2>NAME</H2>
-<B>pnmenlarge</B> - replaced by pamenlarge
+<h2>NAME</h2>
+pnmenlarge - replaced by pamenlarge
 
-<H2>DESCRIPTION</H2>
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 <p><b>pnmenlarge</b> was replaced in Netpbm 10.25 (October 2004) by
 <b><a href="pamenlarge.html">pamenlarge</a></b>.
 
-<P><B>pamenlarge</b> is backward compatible with <b>pnmenlarge</b>,
+<p><b>pamenlarge</b> is backward compatible with <b>pnmenlarge</b>,
 but works on PAM images too.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/pnmfile.html b/pnmfile.html
index 47945d11..bd97cdb0 100644
--- a/pnmfile.html
+++ b/pnmfile.html
@@ -1,20 +1,22 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD>
-<TITLE>Pnmfile User Manual</TITLE></HEAD>
-<BODY>
-<H1>pnmfile</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Pnmfile User Manual</title></head>
+<body>
+<h1>pnmfile</h1>
 Updated: September 2002
-<BR>
-<H2>NAME</H2>
-<b>pnmfile</b> - replaced by pamfile
-<H2>DESCRIPTION</H2>
+
+<h2>NAME</h2>
+
+pnmfile - replaced by pamfile
+
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
+
 <p><b>pnmfile</b> was replaced in Netpbm 10.9 (September 2002) by
 <b><a href="pamfile.html">pamfile</a></b>.
 
-<P><B>pamfile</b> is backward compatible with <b>pnmfile</b>, but works on
+<p><b>pamfile</b> is backward compatible with <b>pnmfile</b>, but works on
 PAM images too.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/pnmflip.html b/pnmflip.html
index 53c365ca..2bd73684 100644
--- a/pnmflip.html
+++ b/pnmflip.html
@@ -1,16 +1,23 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD>
-<TITLE>Pnmflip User Manual</TITLE></HEAD>
-<BODY>
-<H1>pnmflip</H1>
-<BR>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Pnmflip User Manual</title></head>
+<body>
+<h1>pnmflip</h1>
+
+<h2>NAME</h2>
+
+pnmflip - replaced by pamflip
+
+<h2>DESCRIPTION</h2>
+
+<p>This program is part of <a href="index.html">Netpbm</a>.
+
 <p><b>pnmflip</b> was replaced in Netpbm 10.13 (December 2002) by
 <b><a href="pamflip.html">pamflip</a></b>.
 
-<P><B>pamflip</b> is mostly backward compatible with <b>pnmflip</b>,
+<p><b>pamflip</b> is mostly backward compatible with <b>pnmflip</b>,
 but works on PAM images too.
 
-<P>One way <b>pamflip</b> is not backward compatible with <b>pnmflip</b>
+<p>One way <b>pamflip</b> is not backward compatible with <b>pnmflip</b>
 is that <b>pnmflip</b> lets you specify any number of basic flip options,
 whereas <b>pamflip</b> requires exactly one.  (<b>pamflip</b> provides
 the <b>-xform</b> option for requesting multiple transformations, though).
@@ -18,10 +25,10 @@ Because of this incompatibility, <b>pnmflip</b> still exists as a
 separate program, and all it does is translate its options to <b>pamflip</b>
 style and run <b>pamflip</b>.
 
-<P>You should not make any new use of <b>pnmflip</b> and if you modify an
+<p>You should not make any new use of <b>pnmflip</b> and if you modify an
 existing use, you should upgrade to <b>pamflip</b>.  But note that if you
 write a program that might have to be used with very old
 Netpbm, <b>pnmflip</b> is the only way to do that.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/pnminterp.html b/pnminterp.html
index ddcb4fb0..c5c49847 100644
--- a/pnminterp.html
+++ b/pnminterp.html
@@ -1,20 +1,22 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD>
-<TITLE>Pnminterp User Manual</TITLE>
-</HEAD><BODY>
-<H1>pnminterp</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Pnminterp User Manual</title></head>
+<body>
+<h1>pnminterp</h1>
 Updated: December 2001
-<BR>
-<H2>NAME</H2>
-<B>pnminterp</B> - replaced by pamstretch
-<H2>DESCRIPTION</H2>
+
+<h2>NAME</h2>
+
+pnminterp - replaced by pamstretch
+
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
+
 <p><b>pnminterp</b> was replaced in Netpbm 9.21 (December 2001) by
 <b><a href="pamstretch.html">pamstretch</a></b>.
 
-<P><B>pamstretch</b> is backward compatible with <b>pnminterp</b>, but
+<p><b>pamstretch</b> is backward compatible with <b>pnminterp</b>, but
 also recognizes PAM input, including that with a transparency channel.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/pnmmercator.html b/pnmmercator.html
index 713d396a..998f7fbe 100644
--- a/pnmmercator.html
+++ b/pnmmercator.html
@@ -86,6 +86,7 @@ this, <b>pnmmercator</b> reads the image from standard Input.
 (most notably <b>-quiet</b>, see <a href="index.html#commonoptions">
 Common Options</a>), <b>pnmmercator</b> recognizes the following
 command line options:
+
 <dl compact>
 <dt><b>-inverse</b></dt>
 <dd>
diff --git a/pnmnoraw.html b/pnmnoraw.html
index 06bbbced..b38f343d 100644
--- a/pnmnoraw.html
+++ b/pnmnoraw.html
@@ -1,24 +1,26 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD>
-<TITLE>Pnmnoraw User Manual</TITLE></HEAD>
-<BODY>
-<H1>pnmnoraw</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Pnmnoraw User Manual</title></head>
+<body>
+<h1>pnmnoraw</h1>
 Updated: March 2000
-<BR>
-<H2>NAME</H2>
-<B>pnmnoraw</B> - replaced by pnmtoplainpnm
-<H2>DESCRIPTION</H2>
+
+<h2>NAME</h2>
+
+pnmnoraw - replaced by pnmtoplainpnm and pnmtopnm
+
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
+
 <p><b>pnmnoraw</b> was replaced in Netpbm 8.2 (March 2000) by <b><a
 href="pnmtoplainpnm.html">pnmtoplainpnm</a></b>, which was obsoleted by
 <b>pnmtopnm</b> in Netpbm 10.23 (July 2004).
 
-<P><B>pnmtoplainpnm</b> was actually the same program; it was just renamed
+<p><b>pnmtoplainpnm</b> was actually the same program; it was just renamed
 to make it clear that is just a format converter.
 
-<P><B>pnmtopnm</b> is more general, in that it can go both directions.
+<p><b>pnmtopnm</b> is more general, in that it can go both directions.
 <b>pnmtopnm -plain</b> is the same as <b>pnmnoraw</b>.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/pnmscale.html b/pnmscale.html
index 9d86609c..2dec7785 100644
--- a/pnmscale.html
+++ b/pnmscale.html
@@ -6,8 +6,7 @@ Updated: 02 February 2009
 
 <h2>NAME</h2>
 
-<b>pnmscale</b> - replaced by pamscale
-
+pnmscale - replaced by pamscale
 
 <h2>DESCRIPTION</h2>
 
diff --git a/pnmsplit.html b/pnmsplit.html
index 733a2c96..a08694fc 100644
--- a/pnmsplit.html
+++ b/pnmsplit.html
@@ -1,27 +1,26 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD><title>Pnmsplit User Manual</title></HEAD>
-
-<BODY>
-<H1>pnmsplit</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Pnmsplit User Manual</title></head>
+<body>
+<h1>pnmsplit</h1>
 Updated: 23 October 2005
-<BR>
-<H2>NAME</H2>
-pnmsplit - split a multi-image PNM file into multiple single-image files
 
-<H2>DESCRIPTION</H2>
+<h2>NAME</h2>
+
+pnmsplit - replaced by pamsplit
+
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 
-<P>Starting with Netpbm 10.31 (December 2005), <b>pnmsplit</b> is
+<p>Starting with Netpbm 10.31 (December 2005), <b>pnmsplit</b> is
 obsolete.  Use <a href="pamsplit.html"><b>pamsplit</b></a> instead.
 
 <b>pamsplit</b> is backward compatible with <b>pnmsplit</b>.  You can
 use the <b>pamsplit</b> manual for <b>pnmsplit</b> as long as you ignore
 features that were added after Netpbm 10.30.
 
-</BODY>
-</HTML>
+</body>
+</html>
 
 
 
diff --git a/pnmtofits.html b/pnmtofits.html
index 5430f42d..ae54e743 100644
--- a/pnmtofits.html
+++ b/pnmtofits.html
@@ -1,15 +1,17 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<html><head>
-<title>pnmtofits</title>
-</head><body>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>pnmtofits</title></head>
+<body>
 <h1>pnmtofits</h1>
 Updated: September 2005
-<br>
+
 <h2>NAME</h2>
-<B>pnmtofits</B> - replaced by pamtofits
-<h2>DESCRIPTION</H2>
+
+pnmtofits - replaced by pamtofits
+
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
+
 In Netpbm 10.30 (October 2005), <b>pnmtofits</b> was extended and renamed to
 <b><a href="pamtofits.html">pamtofits</a></b>.
 
diff --git a/pnmtoplainpnm.html b/pnmtoplainpnm.html
index a0515513..16fe9c9a 100644
--- a/pnmtoplainpnm.html
+++ b/pnmtoplainpnm.html
@@ -1,24 +1,26 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD>
-<TITLE>Pnmtoplainpnm User Manual</TITLE></HEAD>
-<BODY>
-<H1>pnmtoplainpnm</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Pnmtoplainpnm User Manual</title></head>
+<body>
+<h1>pnmtoplainpnm</h1>
 Updated: July 2004
-<BR>
-<H2>NAME</H2>
-<B>pnmtoplainpnm</B> - replaced by pnmtopnm
-<H2>DESCRIPTION</H2>
+
+<h2>NAME</h2>
+
+pnmtoplainpnm - replaced by pnmtopnm
+
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
+
 <p><b>pnmtoplainpnm</b> was obsoleted in Netpbm 10.23 (July 2004) by <b><a
 href="pnmtopnm.html">pnmtopnm</a></b>.  Just use the Netpbm common option
 <b>-plain</b>.
 
-<P><B>pnmtoplainpnm</b> exists today for backward compatibility; all it
+<p><b>pnmtoplainpnm</b> exists today for backward compatibility; all it
 does is call <b>pnmtopnm -plain</b>.
 
 <p><b>pnmtoplainpnm</b> was new in Netpbm 8.2 (March 2000) as a renaming
 of <b>pnmnoraw</b>, which was new in Pbmplus in November 1989.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/pnmtopng.html b/pnmtopng.html
index e2c3f9bd..8536c5e4 100644
--- a/pnmtopng.html
+++ b/pnmtopng.html
@@ -47,7 +47,7 @@ pnmtopng - convert a PNM image to PNG
 [<i>pnmfile</i>]
 
 
-<?makeman .sh option usage ?>
+<?makeman .SH OPTION USAGE ?>
 <p>
 Obsolete options:
 <p>
diff --git a/pnmtotiff.html b/pnmtotiff.html
index b45fd567..4dd91389 100644
--- a/pnmtotiff.html
+++ b/pnmtotiff.html
@@ -1,13 +1,14 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<html><head>
-<title>pnmtotiff</title>
-</head><body>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>pnmtotiff</title></head>
+<body>
 <h1>pnmtotiff</h1>
 Updated: September 2005
-<br>
+
 <h2>NAME</h2>
-<B>pnmtotiff</B> - replaced by pamtotiff
-<h2>DESCRIPTION</H2>
+
+pnmtotiff - replaced by pamtotiff
+
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 
diff --git a/pnmtoxwd.html b/pnmtoxwd.html
index e26550b3..b1e89267 100644
--- a/pnmtoxwd.html
+++ b/pnmtoxwd.html
@@ -36,6 +36,7 @@ either big endian (most significant byte first) or little endian code.
 Those generated by <b>pnmtoxwd</b> are always big endian.
 
 <h2 id="options">OPTIONS</h2>
+
 <p>In addition to the options common to all programs based on libnetpbm
 (most notably <b>-quiet</b>, see <a href="index.html#commonoptions">
 Common Options</a>), <b>pnmtoxwd</b> recognizes the following
diff --git a/ppm.html b/ppm.html
index b447277f..3689a12a 100644
--- a/ppm.html
+++ b/ppm.html
@@ -1,27 +1,27 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD>
-<TITLE>PPM Format Specification</TITLE>
-<META NAME="manual_section" CONTENT="5">
-</HEAD>
-<BODY>
-<H1>ppm</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html>
+<head>
+<title>PPM Format Specification</title>
+<meta name="manual_section" content="5">
+</head>
+<body>
+<h1>ppm</h1>
 Updated: 09 October 2016
-<BR>
-<A HREF="#index">Table Of Contents</A>
+<br>
+<a href="#index">Table Of Contents</a>
 
-<H2>NAME</H2>
+<h2>NAME</h2>
 
 PPM - Netpbm color image format
 
-<H2 id="description">DESCRIPTION</H2>
+<h2 id="description">DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 
-<P>The PPM format is a lowest common denominator color image file
+<p>The PPM format is a lowest common denominator color image file
 format.
 
-<P>It should be noted that this format is egregiously inefficient.
+<p>It should be noted that this format is egregiously inefficient.
 It is highly redundant, while containing a lot of information that the
 human eye can't even discern.  Furthermore, the format allows very
 little information about the image besides basic color, which means
@@ -30,7 +30,7 @@ information to get any decent use out of it.  However, it is very easy
 to write and analyze programs to process this format, and that is the
 point.
 
-<P>It should also be noted that files often conform to this format in
+<p>It should also be noted that files often conform to this format in
 every respect except the precise semantics of the sample values.
 These files are useful because of the way PPM is used as an
 intermediary format.  They are informally called PPM files, but to be
@@ -38,48 +38,48 @@ absolutely precise, you should indicate the variation from true PPM.
 For example, "PPM using the red, green, and blue colors that the
 scanner in question uses."
 
-<P>The name "PPM" is an acronym derived from "Portable Pixel Map."
+<p>The name "PPM" is an acronym derived from "Portable Pixel Map."
 Images in this format (or a precursor of it) were once also called
 "portable pixmaps."
 
-<H2 id="format">THE FORMAT</H2>
+<h2 id="format">THE FORMAT</h2>
 
-<P>The format definition is as follows.  You can use the <a
+<p>The format definition is as follows.  You can use the <a
 href="libnetpbm.html">libnetpbm</a> C subroutine library to read and
 interpret the format conveniently and accurately.
 
-<P>A PPM file consists of a sequence of one or more PPM images. There are
+<p>A PPM file consists of a sequence of one or more PPM images. There are
 no data, delimiters, or padding before, after, or between images.
 
-<P>Each PPM image consists of the following:
+<p>Each PPM image consists of the following:
 
-<OL>
-<LI>A "magic number" for identifying the file type.
+<ol>
+<li>A "magic number" for identifying the file type.
 A ppm image's magic number is the two characters "P6".
-<LI>
+<li>
 Whitespace (blanks, TABs, CRs, LFs).
-<LI>
+<li>
 A width, formatted as ASCII characters in decimal.
-<LI>
+<li>
 Whitespace.
-<LI>
+<li>
 A height, again in ASCII decimal.
-<LI>
+<li>
 Whitespace.
-<LI>
+<li>
 The maximum color value (Maxval), again in ASCII decimal.  Must be less
 than 65536 and more than zero.
 
-<LI>A single whitespace character (usually a newline).
+<li>A single whitespace character (usually a newline).
 
-<LI>A raster of Height rows, in order from top to bottom.  Each row
+<li>A raster of Height rows, in order from top to bottom.  Each row
 consists of Width pixels, in order from left to right.  Each pixel is
 a triplet of red, green, and blue samples, in that order.  Each sample
 is represented in pure binary by either 1 or 2 bytes.  If the Maxval
 is less than 256, it is 1 byte.  Otherwise, it is 2 bytes.  The most
 significant byte is first.
 
-<P>A row of an image is horizontal.  A column is vertical.  The pixels
+<p>A row of an image is horizontal.  A column is vertical.  The pixels
 in the image are square and contiguous.
      
 <p>In the raster, the sample values are "nonlinear." They are
@@ -100,21 +100,21 @@ organization, the ITU, ca. 2000, the standard was renamed.  This
 document once referred to the standard as CIE Rec. 709, but it isn't
 clear now that CIE ever sponsored such a standard.
 
-<P>Note that another popular color space is the newer sRGB.  A common
+<p>Note that another popular color space is the newer sRGB.  A common
 variation from PPM is to substitute this color space for the one specified.
 You can use <b>pnmgamma</b> to convert between this variation and true PPM.
 
 <p>Note that a common variation from the PPM format is to have the sample
 values be "linear," i.e. as specified above except without
-the gamma adjustment.  <B>pnmgamma</B> takes such a PPM variant as
+the gamma adjustment.  <b>pnmgamma</b> takes such a PPM variant as
 input and produces a true PPM as output.
 
-</OL>
+</ol>
 
 <p>Strings starting with "#" may be comments, the same as
 with <a href="pbm.html">PBM</a>.
 
-<P>Note that you can use <B>pamdepth</B> to convert between a the
+<p>Note that you can use <b>pamdepth</b> to convert between a the
 format with 1 byte per sample and the one with 2 bytes per sample.
 
 <p>All characters referred to herein are encoded in ASCII.
@@ -125,13 +125,13 @@ calls white space).
 
 <h3 id="plainppm">Plain PPM</h3>
 
-<P>There is actually another version of the PPM format that is fairly
+<p>There is actually another version of the PPM format that is fairly
 rare: "plain" PPM format.  The format above, which generally
 considered the normal one, is known as the "raw" PPM format.
-See <B><A HREF="pbm.html">pbm</A></B> for some commentary on how plain
+See <b><a href="pbm.html">pbm</a></b> for some commentary on how plain
 and raw formats relate to one another and how to use them.
 
-<P>The difference in the plain format is:
+<p>The difference in the plain format is:
 
 <ul>
 <li>
@@ -151,8 +151,8 @@ red sample of the next pixel.
 No line should be longer than 70 characters.
 </ul>
 
-<P>Here is an example of a small image in this format.
-<PRE>
+<p>Here is an example of a small image in this format.
+<pre>
 P3
 # feep.ppm
 4 4
@@ -161,11 +161,11 @@ P3
  0  0  0    0 15  7    0  0  0    0  0  0
  0  0  0    0  0  0    0 15  7    0  0  0
 15  0 15    0  0  0    0  0  0    0  0  0
-</PRE>
+</pre>
 
-<P>There is a newline character at the end of each of these lines.
+<p>There is a newline character at the end of each of these lines.
 
-<P>Programs that read this format should be as lenient as possible,
+<p>Programs that read this format should be as lenient as possible,
 accepting anything that looks remotely like a PPM image.
 
 
@@ -187,37 +187,37 @@ cases where distinguishing between the particular subformats of PNM is not
 convenient.
 
 
-<H2 id="compatibility">COMPATIBILITY</H2>
+<h2 id="compatibility">COMPATIBILITY</h2>
 
-<P>Before April 2000, a raw format PPM file could not have a maxval greater
+<p>Before April 2000, a raw format PPM file could not have a maxval greater
 than 255.  Hence, it could not have more than one byte per sample.  Old
 programs may depend on this.
 
-<P>Before July 2000, there could be at most one image in a PPM file.  As
+<p>Before July 2000, there could be at most one image in a PPM file.  As
 a result, most tools to process PPM files ignore (and don't read) any
 data after the first image.
 
-<H2 id="seealso">SEE ALSO</H2>
+<h2 id="seealso">SEE ALSO</h2>
 
-<A HREF="pnm.html">pnm</A>,
-<A HREF="pgm.html">pgm</A>,
-<A HREF="pbm.html">pbm</A>,
-<A HREF="pam.html">pam</A>,
-<A HREF="directory.html">programs that process PPM</A>
+<a href="pnm.html">pnm</a>,
+<a href="pgm.html">pgm</a>,
+<a href="pbm.html">pbm</a>,
+<a href="pam.html">pam</a>,
+<a href="directory.html">programs that process PPM</a>
 
 
-<HR>
-<H2 id="index">Table Of Contents</H2>
-<UL>
-<LI><A HREF="#description">DESCRIPTION</A>
-<LI><A HREF="#format">THE FORMAT</A>
+<hr>
+<h2 id="index">Table Of Contents</h2>
 <ul>
-  <li><A HREF="#plainppm">Plain PPM</A>
+<li><a href="#description">DESCRIPTION</a>
+<li><a href="#format">THE FORMAT</a>
+<ul>
+  <li><a href="#plainppm">Plain PPM</a>
     </ul>
-<li><A HREF="#internetmediatype">INTERNET MEDIA TYPE</A>
-<li><A HREF="#filename">FILE NAME</A>
-<LI><A HREF="#compatibility">COMPATIBILITY</A>
-<LI><A HREF="#seealso">SEE ALSO</A>
-</UL>
-</BODY>
-</HTML>
+<li><a href="#internetmediatype">INTERNET MEDIA TYPE</a>
+<li><a href="#filename">FILE NAME</a>
+<li><a href="#compatibility">COMPATIBILITY</a>
+<li><a href="#seealso">SEE ALSO</a>
+</ul>
+</body>
+</html>
diff --git a/ppmnorm.html b/ppmnorm.html
index 1dcd7397..415530fb 100644
--- a/ppmnorm.html
+++ b/ppmnorm.html
@@ -1,20 +1,22 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD>
-<TITLE>Ppmnorm User Manual</TITLE>
-</HEAD><BODY>
-<H1>ppmnorm</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Ppmnorm User Manual</title></head>
+<body>
+<h1>ppmnorm</h1>
 Updated: March 2002
-<BR>
-<H2>NAME</H2>
-<B>ppmnorm</B> - replaced by pnmnorm
-<H2>DESCRIPTION</H2>
+
+<h2>NAME</h2>
+
+ppmnorm - replaced by pnmnorm
+
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
+
 <p><b>ppmnorm</b> was replaced in Netpbm 9.25 (March 2002) by
 <b><a href="pnmnorm.html">pnmnorm</a></b>.
 
-<P><B>pnmnorm</b> is backward compatible with <b>ppmnorm</b> except that
+<p><b>pnmnorm</b> is backward compatible with <b>ppmnorm</b> except that
 for PBM and PGM input, it produced PBM and PGM output.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/ppmquant.html b/ppmquant.html
index 82cf3c95..ab0b4e47 100644
--- a/ppmquant.html
+++ b/ppmquant.html
@@ -1,36 +1,37 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD><TITLE>Ppmquant User Manual</TITLE></HEAD>
-<BODY>
-<H1>ppmquant</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Ppmquant User Manual</title></head>
+<body>
+<h1>ppmquant</h1>
 Updated: 22 October 2003
-<BR>
-<A HREF="#index">Table Of Contents</A>
+<br>
+<a href="#index">Table Of Contents</a>
+
+<h2>NAME</h2>
 
-<H2 id="name">NAME</H2>
 ppmquant - quantize the colors in a PPM image down to a specified number
 
-<H2 id="synopsis">SYNOPSIS</H2>
-
-<B>ppmquant</B>
-[<B>-floyd</B>|<B>-fs</B>]
-<I>ncolors</I>
-[<I>ppmfile</I>]
-<BR>
-<B>ppmquant</B>
-[<B>-floyd</B>|<B>-fs</B>]
-[<B>-nofloyd</B>|<B>-nofs</B>]
-<B>-mapfile</B>
-<I>mapfile</I>
-[<I>ppmfile</I>]
-
-<P>
+<h2 id="synopsis">SYNOPSIS</h2>
+
+<b>ppmquant</b>
+[<b>-floyd</b>|<b>-fs</b>]
+<i>ncolors</i>
+[<i>ppmfile</i>]
+<br>
+<b>ppmquant</b>
+[<b>-floyd</b>|<b>-fs</b>]
+[<b>-nofloyd</b>|<b>-nofs</b>]
+<b>-mapfile</b>
+<i>mapfile</i>
+[<i>ppmfile</i>]
+
+<p>
 All options can be abbreviated to their shortest unique prefix.  You
 may use two hyphens instead of one to designate an option.  You may
 use either white space or equals signs between an option name and its
 value.
 
 
-<H2 id="description">DESCRIPTION</H2>
+<h2 id="description">DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 
@@ -41,13 +42,13 @@ and your program does not have to work with a version of Netpbm before
 9.21 (January 2001).  <b>ppmquant</b> exists only for name
 compatibility.
 
-<p><b>pnmquant</b> is fully backward compatible with <b>ppmquant</B>
+<p><b>pnmquant</b> is fully backward compatible with <b>ppmquant</b>
 <em>without</em> the <b>-mapfile</b> option; <b>pnmremap</b> is fully
 backward compatible with <b>ppmquant</b> <em>with</em> the
 <b>-mapfile</b> option.
 
 <p>Except with differences suggested by the syntax synopsis above,
-<b>ppmquant</B>'s function is the same as <b>pnmquant</b> and
+<b>ppmquant</b>'s function is the same as <b>pnmquant</b> and
 <b>pnmremap</b>.
 
 <p>Before Netpbm 10.19 (November 2003), <b>ppmquant</b> was a completely
@@ -62,24 +63,24 @@ that for some time before that, <b>ppmquant</b> had a serious bug that
 would have been difficult to fix -- it chose the wrong color set.
 Maintaining two versions of the same code did not make sense.
 
-<H2 id="seealso">SEE ALSO</H2>
-<B><A HREF="pnmquant.html">pnmquant</A></B>,
-<B><A HREF="pnmremap.html">pnmremap</A></B>,
-<B><A HREF="pnmcolormap.html">pnmcolormap</A></B>,
-<B><A HREF="pamseq.html">pamseq</A></B>,
-<B><A HREF="ppm.html">ppm</A></B>
+<h2 id="seealso">SEE ALSO</h2>
+<b><a href="pnmquant.html">pnmquant</a></b>,
+<b><a href="pnmremap.html">pnmremap</a></b>,
+<b><a href="pnmcolormap.html">pnmcolormap</a></b>,
+<b><a href="pamseq.html">pamseq</a></b>,
+<b><a href="ppm.html">ppm</a></b>
 
-<H2 id="author">AUTHOR</H2>
+<h2 id="author">AUTHOR</h2>
 
 Copyright (C) 1989, 1991 by Jef Poskanzer.
 
-<HR>
-<H2 id="index">Table Of Contents</H2>
-<UL>
-<LI><A HREF="#synopsis">SYNOPSIS</A>
-<LI><A HREF="#description">DESCRIPTION</A>
-<LI><A HREF="#seealso">SEE ALSO</A>
-<LI><A HREF="#author">AUTHOR</A>
-</UL>
-</BODY>
-</HTML>
+<hr>
+<h2 id="index">Table Of Contents</h2>
+<ul>
+<li><a href="#synopsis">SYNOPSIS</a>
+<li><a href="#description">DESCRIPTION</a>
+<li><a href="#seealso">SEE ALSO</a>
+<li><a href="#author">AUTHOR</a>
+</ul>
+</body>
+</html>
diff --git a/ppmquantall.html b/ppmquantall.html
index 1e0132d7..96ff2c75 100644
--- a/ppmquantall.html
+++ b/ppmquantall.html
@@ -3,12 +3,10 @@
 <body>
 <h1>ppmquantall</h1>
 Updated: 05 March 2012
-<br>
 
 <h2>NAME</h2>
 
-<b>ppmquantall</b> - replaced by pnmquantall
-
+ppmquantall - replaced by pnmquantall
 
 <h2>DESCRIPTION</h2>
 
diff --git a/ppmtogif.html b/ppmtogif.html
index 84b51630..513133a4 100644
--- a/ppmtogif.html
+++ b/ppmtogif.html
@@ -1,15 +1,22 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD>
-<TITLE>Ppmtogif User Manual</TITLE></HEAD>
-<BODY>
-<H1>ppmtogif</H1>
-<BR>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Ppmtogif User Manual</title></head>
+<body>
+<h1>ppmtogif</h1>
+
+<h2>NAME</h2>
+
+ppmtogif - replaced by pamtogif
+
+<h2>DESCRIPTION</h2>
+
+<p>This program is part of <a href="index.html">Netpbm</a>.
+
 <p><b>ppmtogif</b> was replaced in Netpbm 10.37 (December 2006) by
 <b><a href="pamtogif.html">pamtogif</a></b>.
 
-<P><B>pamtogif</b> is mostly backward compatible with <b>ppmtogif</b>.
+<p><b>pamtogif</b> is mostly backward compatible with <b>ppmtogif</b>.
 
-<P>One way <b>pamtogif</b> is not backward compatible with <b>ppmtogif</b>
+<p>One way <b>pamtogif</b> is not backward compatible with <b>ppmtogif</b>
 is that to specify a transparency (alpha) mask with <b>ppmtogif</b>, you
 supply the transparency as a separate pseudo-PGM image and use the
 <b>-alpha</b> option, whereas with <b>pamtogif</b>, you supply an input
@@ -24,7 +31,7 @@ image, then feeding <b>pamtogif</b> the combined image it expects.
 Other than that, the compatibility <b>ppmtogif</b> just passes input and
 options directly to <b>pamtogif</b>.
 
-<P>You should not make any new use of <b>ppmtogif</b> and if you modify an
+<p>You should not make any new use of <b>ppmtogif</b> and if you modify an
 existing use, you should upgrade to <b>pamtogif</b>.  But note that if you
 write a program that might have to be used with old Netpbm, <b>ppmtogif</b> is
 the only way to do that.
@@ -70,8 +77,8 @@ the alpha image need not have the same maxval as the input.
 <b>ppmtogif</b> interprets the alpha file using the alpha file's
 maxval.
 
-<P>You cannot specify both <B>-transparent</B> and <B>-alpha</B>.
+<p>You cannot specify both <b>-transparent</b> and <b>-alpha</b>.
 
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/ppmtojpeg.html b/ppmtojpeg.html
index 4cc0aff7..019f5fe4 100644
--- a/ppmtojpeg.html
+++ b/ppmtojpeg.html
@@ -1,21 +1,23 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD>
-<TITLE>Ppmtojpeg User Manual</TITLE>
-</HEAD><BODY>
-<H1>ppmtojpeg</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Ppmtojpeg User Manual</title></head>
+<body>
+<h1>ppmtojpeg</h1>
 Updated: September 2001
-<BR>
-<H2>NAME</H2>
-<b>ppmtojpeg</b> - replaced by pnmtojpeg
-<H2>DESCRIPTION</H2>
+
+<h2>NAME</h2>
+
+ppmtojpeg - replaced by pnmtojpeg
+
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
+
 <p><b>ppmtojpeg</b> was replaced in Netpbm 9.19 (September 2001) by
 <b><a href="pnmtojpeg.html">pnmtojpeg</a></b>.
 
-<P><B>pnmtojpeg</b> is backward compatible with <b>ppmtojpeg</b>
+<p><b>pnmtojpeg</b> is backward compatible with <b>ppmtojpeg</b>
 except that with PGM or PBM input, it generates JPEG output in the special
 grayscale format.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/ppmtomap.html b/ppmtomap.html
index 75d6c90c..031a3a90 100644
--- a/ppmtomap.html
+++ b/ppmtomap.html
@@ -3,12 +3,12 @@
 <body>
 <h1>ppmtomap</h1>
 Updated: 06 January 2002
-<br>
+
 <a href="#index">Table Of Contents</a>
 
 <h2>NAME</h2>
 
-ppmtomap - create a map of all colors in a PPM image
+ppmtomap - replaced by pnmcolormap
 
 <h2 id="description">DESCRIPTION</h2>
 
diff --git a/ppmtotga.html b/ppmtotga.html
index 3a3a78de..d5e6c122 100644
--- a/ppmtotga.html
+++ b/ppmtotga.html
@@ -1,20 +1,22 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML><HEAD>
-<TITLE>Ppmtotga User Manual</TITLE>
-</HEAD><BODY>
-<H1>ppmtotga</H1>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Ppmtotga User Manual</title></head>
+<body>
+<h1>ppmtotga</h1>
 Updated: July 2002
-<BR>
-<H2>NAME</H2>
+
+<h2>NAME</h2>
+
 ppmtotga - replaced by pamtotga
-<H2>DESCRIPTION</H2>
+
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
+
 <p><b>ppmtotga</b> was replaced in Netpbm 10.6 (July 2002) by
 <b><a href="pamtotga.html">pamtotga</a></b>.
 
-<P><B>pamtotga</b> is backward compatible with <b>ppmtotga</b>, but
+<p><b>pamtotga</b> is backward compatible with <b>ppmtotga</b>, but
 also recognizes PAM input, including that with a transparency channel.
 
-</BODY>
-</HTML>
+</body>
+</html>
diff --git a/ppmtouil.html b/ppmtouil.html
index b6790d0a..a67e7501 100644
--- a/ppmtouil.html
+++ b/ppmtouil.html
@@ -1,15 +1,19 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<html><head>
-<title>ppmtouil</title>
-</head><body>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
+<html><head><title>Ppmtouil User Manual</title></head>
+<body>
 <h1>ppmtouil</h1>
 Updated: May 2002
-<br>
+
 <h2>NAME</h2>
-<B>ppmtouil</B> - replaced by pamtouil
-<h2>DESCRIPTION</H2>
+
+ppmtouil - replaced by pamtouil
+
+<h2>DESCRIPTION</h2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
+
 In May 2002, <b>ppmtouil</b> was extended and renamed to
 <b><a href="pamtouil.html">pamtouil</a></b>.
-</body> </html>
+
+</body>
+</html>
diff --git a/pstopnm.html b/pstopnm.html
index 6e86c0d3..74e05c56 100644
--- a/pstopnm.html
+++ b/pstopnm.html
@@ -53,7 +53,7 @@ pstopnm - convert a PostScript file to a PNM image
 
 <i>psfile</i>[<b>.ps</b>]
 
-<?makeman .sh option usage ?>
+<?makeman .SH OPTION USAGE ?>
 <p>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