Network Working Group                                    Glenn Parsons
     Internet Draft                                          James Rafferty
     Expires in six months                                   March 26, 1997
     
     
                       Tag Image File Format (TIFF) - Class F
     
                            <draft-ietf-fax-tiff-01.txt>
     
       Status of this Memo
     
       This document is an Internet Draft.  Internet Drafts are working
       documents of the Internet Engineering Task Force (IETF), its Areas,
       and its Working Groups.  Note that other groups may also distribute
       working documents as Internet Drafts.
     
       Internet Drafts are valid for a maximum of six months and may be
       updated, replaced, or obsoleted by other documents at any time.  It is
       inappropriate to use Internet Drafts as reference material or to cite
       them other than as a "work in progress".
     
       To learn the current status of any Internet-Draft, please check the
       "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
       Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
       munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
       ftp.isi.edu (US West Coast).
     
       Overview
     
       This document describes in detail the definition of TIFF Class F that
       is used to store facsimile images and also describes the registration
       refinement of the MIME sub-type image/tiff.  The Class F tag encoding
       has been folklore with no specific reference definition before this
       document.
     
       Internet Fax Working Group
     
       This document is a product of the IETF Internet Fax Working Group.
       All comments on this document should be forwarded to the email
       distribution list at <ietf-fax@imc.org>.
     
     Internet Draft                  TIFF-F                  March 26, 1997
     
     
      1.  Abstract
     
       This document formalizes the reference for the Tag Image File Format
       (TIFF) and formally defines TIFF Class F that is used to store
       facsimile images.  As well, the original registration for image/TIFF
       from RFC 1528 is refined by this document.
     
     
      2.  TIFF Definition
     
       TIFF (Tag Image File Format) Revision 6.0 is defined in detail by
       Adobe in [TIFF].  The documentation can be obtained from Adobe at:
     
          Adobe Developers Association
          Adobe Systems Incorporated
          1585 Charleston Road
          P.O. Box 7900 Mountain View, CA 94039-7900
     
       A copy of this specification can also be found in:
       ftp://ftp.adobe.com/pub/adobe/devrelations/devtechnotes/pdffiles/
       tiff6.pdf
     
       Only an introduction to the baseline TIFF is included in this
       document.  The reader is directed to the original TIFF specification
       [TIFF] to obtain specific technical details.
     
      2.1  TIFF Scope
     
       TIFF describes image data that typically comes from scanners, frame
       grabbers, and paint- and photo-retouching programs. TIFF is not a
       printer language or page description language. The purpose of TIFF
       is to describe and store raster image data.  A primary goal of TIFF is
       to provide a rich environment within which applications can exchange
       image data. This richness is required to take advantage of the varying
       capabilities of scanners and other imaging devices.  Though TIFF is a
       rich format, it can easily be used for simple scanners and
       applications as well because the number of required fields is small.
     
      2.2  TIFF Features
     
        - TIFF is capable of describing bilevel, grayscale, palette-color,
          and full-color image data in several color spaces.
     
        - TIFF includes a number of compression schemes that allow developers
          to choose the best space or time tradeoff for their applications.
     
        - TIFF is not tied to specific scanners, printers, or computer
          display hardware.
     
        - TIFF is portable. It does not favor particular operating systems,
          file systems, compilers, or processors.
     
        - TIFF is designed to be extensible and to evolve gracefully as new
          needs arise.
     
     Parsons, Rafferty          Expires 9/26/97                    [Page 2]


     Internet Draft                  TIFF-F                  March 26, 1997
     
     
     
        - TIFF allows the inclusion of an unlimited amount of private or
          special-purpose information.
     
     
      3.  TIFF Class F Definition
     
       Though it has been in common usage for many years, TIFF Class F (or
       TIFF-F) has previously never been documented in the form of a
       standard.  An informal TIFF-F document was originally created by a
       small group of fax experts led by Joe Campbell.  The existence of
       TIFF-F is noted in [TIFF] but it is not defined.  This document serves
       as the formal definition for TIFF Class F for Internet applications.
     
      3.1
     
       TIFF Classes reduce the information burden on TIFF readers and writers
       that wish to support narrow applications. For example, Appendix G-1 of
       TIFF 5.0 stated that classes enable TIFF readers "to know when they
       can stop adding TIFF features."  In other words, defining a Class
       enables applications interested only in reading that Class to give up
       if the characteristic tags and values are not present.  Therefore,
       TIFF Class F insists on a rather narrow definition of tags. In a
       general TIFF file, for example, the writer would be free to create
       single-page documents without the NewSubFileType and PageNumber tags.
       Not so for a Class F file, where the multi-page tag is required even
       for a single page.
     
       TIFF Class F is a sub-class of Class B (Bilevel) [TIFFB].  That is,
       all tags that are required in Class B are also required in Class F.
       For some common tags, however, Class F limits the range of acceptable
       values.  The YResolution tag, for example, is a Class B tag, but
       within  Class F only a limited set of values is permitted.  Such tags
       are listed in section 3.2
     
       Section 3.3 discusses other Class B tags that have a specific meaning
       when applied to facsimile images.  Several new Class F tags are
       discussed in section 3.4.  There are also tags that may be helpful but
       are not required.  These recommended tags are listed in the section
       3.5.
     
       Several technical topics, including implementation issues, warnings
       and conformance are discussed in subsequent sections.  Finally,
       section 3.9 introduces the TIFF-F Reader and Writer.  A table of the
       required TIFF-F tags for each of these implementations is summarized.
     
      3.1.1 Structure of TIFF Files
     
       The structure of TIFF files is specified within [TIFF].  In this
       section, a short summary of the TIFF structure is included for the
       informational purposes.   In addition, some practical guidelines for
       the use of this structure in writing multi-page TIFF-F files are also
       addressed here.
     
     
     Parsons, Rafferty          Expires 9/26/97                    [Page 3]


     Internet Draft                  TIFF-F                  March 26, 1997
     
     
       A TIFF file begins with an 8-byte image file header that defines the
       byte order used within a file (see 3.9.1), includes a magic number
       sequence that identifies the content as a TIFF file,  and then uses an
       offset to point to the first Image File Directory (IFD).   An IFD is a
       sequence of tagged fields, sorted in ascending order (by tag value),
       that contains attributes of an image and pointers to the image data.
       TIFF fields (also called entries) contain a tag, its type (e.g. short,
       long, rational, etc), a count (which indicates the number of
       values/offsets) and a value/offset.  However, the actual value for the
       tag will only be present if it fits into 4 bytes; otherwise, an offset
       will be used to point to the location of the data associated with the
       tag.  In turn, this offset may itself be used to point to an array of
       offsets.
     
       For the case of facsimile data, many documents consist of a series of
       multiple pages.   Within TIFF, these may be represented using more
       than one IFD within the TIFF file.   Each IFD defines a subfile.  For
       the case of facsimile data that is placed in a TIFF-F file, each
       facsimile page in a multi-page document will generally have its own
       IFD.   Within each IFD, the location of the related image data is
       defined by using tags that are associated with strips.  These tags
       identify the size of strips (in rows), the number of bytes per strip
       after compression and a strip offset, which is used to point to the
       actual location of the image strip.
       TIFF has a very flexible file structure, but the use of some practical
       guidelines on structuring a multi-page TIFF-F file may yield benefits
       for implementers, especially for application in environments such as
       facsimile terminals where a complex file structure is not practical.
     
      3.1.2 Practical Guidelines for Structuring TIFF-F Files
     
       The implementation of TIFF-F can be greatly simplified if certain
       practical guidelines are kept in mind when writing TIFF-F files.   In
       general, the structure for a multi-page TIFF-F file will include one
       IFD per page of the document.   Therefore, each IFD will define the
       attributes for a single page.   For simplicity, it is advisable that
       the writer of TIFF-F files present IFDs in the same order as the
       actual sequence of pages.  (The pages are numbered within TIFF-F
       beginning with page 0 as the first page and then ascending (i.e. 0, 1,
       2, _).
     
       Per [TIFF], the exact placement of image data is not specified.
       However, the strip offsets for each strip of image are defined from
       within each IFD.   Where possible, a second simplifying assumption for
       the writing of TIFF-F files is to specify that the image data for each
       page of a multi-page document will be contained within a single strip
       (i.e. one image strip per fax page).   In the event a different
       assumption has been used (e.g. constant size for image strips which
       may be less than the page size), this will immediately be evident from
       the values/offsets of the tags that are related to strips.   From an
       implementer's standpoint, one image strip per page will permit the
       image data to be found through reference via a single offset,
       resulting in a much simplified image structure.
     
     
     Parsons, Rafferty          Expires 9/26/97                    [Page 4]


     Internet Draft                  TIFF-F                  March 26, 1997
     
     
       In addition, a third simplifying assumption for TIFF-F writers will be
       to place the actual image data in a physical order within the TIFF
       file structure which is consistent with the logical page order.   So,
       a TIFF-F file which is structured using the guidelines of this section
       will essentially be composed of a linked list of IFDs, presented in
       ascending page order, which in turn each point to a single page of
       image data (one strip per page), where the pages of image data are
       also placed in a logical page order within the TIFF-F file structure
       (the pages of image data may themselves be stored in a contiguous
       manner, at the option of the implementer).
     
     
      3.2  Class F Required Tags
     
       FillOrder = 1, 2.  SHORT.
           TIFF Class F readers must be able to read data in both bit orders,
           but the vast majority of facsimile products store data LSB first,
           exactly as it appears on the telephone line.
                   1 = Most Significant Bit first.
                   2 = Least Significant Bit first.
     
       ImageWidth = 1728, 2048, 2482, 2592, 3072, 3723, 3456, 4096, 4864.
           SHORT or LONG.  These are the fixed page widths in pixels.  The
           permissible values are dependent upon X and Y resolutions as shown
           in Table 2 of [T.4].
       NewSubFileType = 2.  LONG.
           The value 2 identifies a single page of a multi-page image.
     
       PageNumber.  SHORT/SHORT.
           This tag specifies the page numbers in the fax document.  The tag
           comprises two SHORT values: the first value is the page number,
           the second is the total number of pages. Single-page documents
           therefore use 00000001 hex.
     
       ResolutionUnit = 2,3.  SHORT.
           The units of measure for resolution:
               2 = Inch
               3 = Centimeter
     
       XResolution = 204, 200, 300, 400, 406 (inches). RATIONAL.
       The horizontal resolution of the image expressed in pixels per
       resolution unit.  Some existing TIFF-F implementations may also
       support values of 77 (cm).
     
       YResolution = 98, 196, 100, 200, 300, 392, 400  (inches).  RATIONAL.
       The vertical resolution of the image expressed in pixels per
       resolution unit. Some existing TIFF-F implementations may also support
       values of 77, 38.5 (cm).
     
      3.2.1
     
       In Group 3 facsimile, there are three compression methods which had
       been standardized as of 1994 and are in common use.  The ITU-T T.4
       recommendation defines a one-dimensional compression method known as
     
     Parsons, Rafferty          Expires 9/26/97                    [Page 5]


     Internet Draft                  TIFF-F                  March 26, 1997
     
     
       Modified Huffman (MH) and a two-dimensional method known as Modified
       READ (MR) (READ is short for Relative Addressing).  In 1984, a
       somewhat more efficient compression method known as Modified Modified
       READ (MMR) was defined in the T.6 recommendation.  It was originally
       defined for use with Group 4 facsimile, so that this compression
       method has been commonly called Group 4 compression.  In 1991, the MMR
       method was approved for use in Group 3 facsimile and has since been
       widely utilized.
     
       TIFF Class F permits two different compression methods.  By default,
       the one-dimensional compression method is used.  Optionally, depending
       upon the application, the more efficient two-dimensional compression
       method from T.6 (i.e. MMR or "Group 4 compression") may be selected.
       More information to aid the implementor in making this selection is
       contained in section 3.8 on Implementation Warnings.
     
       The tags used to specify the compression are shown below:
     
       Compression = 3,4.  SHORT.
           This is a required Class F tag.  Modified Huffman, one-
           dimensional encoding with "byte-aligned" EOLs is selected by
           setting 3.  An EOL is said to be byte-aligned when Fill bits have
           been added as  necessary before EOL codes such that EOL always
           ends on a byte  boundary, thus ensuring an EOL-sequence of a 1
           byte preceded  by a zero nibble: xxxx0000 00000001.  The data in a
           Class F image is not terminated with an RTC (see sections 3.8.4
           and 3.8.5).  For two-dimensional encoding, set the value of the
           compression tag to 4 (see section 3.8.2).
     
       T4Options = 4,5.  LONG.
           This tag is required for TIFF Class-F if the one-dimensional
           compression method has been specified (i.e. by setting the value
           of the Compression tag to 3).  Data is one-dimensional and EOLs
           must be byte-aligned. Uncompressed data is not allowed.
                  bit 0 = 0 for 1-Dimensional
                  bit 1 = must be 0 (uncompressed data not allowed)
                  bit 2 = 1 for byte-aligned EOLs
     
       T6Options = 0  LONG.
           This tag is required for TIFF Class F if the two-dimensional
           compression method is specified (i.e. by setting the value of the
           Compression tag to 4).  Data is two-dimensional and there is no
           use of EOLs. Uncompressed data is not allowed. In earlier versions
           of TIFF, this tag was named Group4Options. The significance has
           not changed and the present definition is compatible.  This field
           is made up of a set of 32 flag bits. Unused bits must be set to 0.
           Bit 0 is the low-order bit. The default value is 0 (all bits 0).
                  bit 0 = 0 for 2-Dimensional
                  bit 1 = must be 0 (uncompressed data not allowed)
     
      3.3  Class B (Bilevel) Required Tags
     
       Although these tags are already required in Class B (Bi-Level) files,
       an explanation of their usage for facsimile images may be helpful.
     
     Parsons, Rafferty          Expires 9/26/97                    [Page 6]


     Internet Draft                  TIFF-F                  March 26, 1997
     
     
     
       BitsPerSample = 1.  SHORT.
           Since facsimile is a black-and-white medium, this must be 1 (the
           default) for all files.
     
       ImageLength.  SHORT or LONG. LONG recommended.
           The total number of scan lines in the image.
     
       PhotometricInterp = 0,1.  SHORT.
           This tag allows notation of an inverted ("negative") image:
                   0 = normal
                   1 = inverted
     
       Software.  ASCII.
           The optional name and release number of the software package that
           created the image.
     
       RowsPerStrip.  SHORT or LONG.  LONG recommended.
           The number of scan lines per strip.  When a page is expressed as
           one large strip, this is the same as the ImageLength tag.
     
       SamplesPerPixel = 1.  SHORT.
           The value of 1 denotes a bi-level, grayscale, or palette color
           image.
     
       StripByteCounts.  SHORT or LONG.  SHORT recommended.
           For each strip, the number of bytes in that strip. If a page is
           expressed as one large strip, this is the total number of bytes in
           the page after compression.
     
       StripOffsets.  SHORT or LONG.
           For each strip, the offset of that strip.  The offset is measured
           from the beginning of the file. If a page is expressed as one
           large strip, there is one such entry per page.
     
      3.4  New Class F Tags
     
       There are only three new tags for Class F.  All three tags describe
       page quality.  The information contained in these tags is usually
       obtained from the receiving facsimile hardware, but since not all
       devices are capable of reporting this information, the tags are
       optional.
     
       Some applications need to understand exactly the error content of the
       data.  For example, a CAD program might wish to verify that a file has
       a low error level before importing it into a high-accuracy document.
       Because Group 3 facsimile devices do not necessarily perform error
       correction on the image data, the quality of a received page must be
       inferred from the pixel count of decoded scan lines. A "good" scan
       line is defined as a line that, when decoded, contains the correct
       number of pixels. Conversely, a "bad" scan line is defined as a line
       that, when decoded, comprises an incorrect number of pixels.
     
     
     
     Parsons, Rafferty          Expires 9/26/97                    [Page 7]


     Internet Draft                  TIFF-F                  March 26, 1997
     
     
       BadFaxLines
           Tag  = 326  (146 hex)
           Type = SHORT or LONG
     
           This tag reports the number of scan lines with an incorrect number
           of pixels encountered by the facsimile during reception (but not
           necessarily in the file).
     
           Note: PercentBad = (BadFaxLines/ImageLength) * 100
     
       CleanFaxData
           Tag = 327 (147 hex)
           Type = SHORT
           N = 0
               0 = Data contains no lines with incorrect pixel counts or
                  regenerated lines  (i.e., computer generated)
               1 = Lines with an incorrect pixel count were regenerated by
                  receiving device
               2 = Lines with an incorrect pixel count are in the data  and
                  were not regenerated by receiving device (i.e. data
                  contains bad scan lines)
     
           Many facsimile devices do not actually output bad lines. Instead,
           the previous good line is repeated in place of a bad line.
           Although this substitution, known as line regeneration, results in
           a visual improvement to the image, the data is nevertheless
           corrupted.  The CleanFaxData tag describes the error content of
           the data.  That is, when the BadFaxLines and ImageLength tags
           indicate that the facsimile device encountered lines with an
           incorrect number of pixels during reception, the CleanFaxData tag
           indicates whether these bad lines are actually still in the data
           or if the receiving facsimile device replaced them with
           regenerated lines.
     
       ConsecutiveBadFaxLines
           Tag  = 328 (148 hex)
           Type =  LONG or SHORT
     
           This tag reports the maximum number of consecutive lines
           containing an incorrect number of pixels encountered by the
           facsimile device during reception (but not necessarily in the
           file).
     
           The BadFaxLines and ImageLength data indicate only the quantity of
           such lines.  The ConsecutiveBadFaxLines tag is an indicator of
           their distribution and may therefore be a better general indicator
           of perceived image quality.
     
      3.5  Recommended Tags
     
       BadFaxLines.  LONG.
           The number of "bad" scan lines encountered by the facsimile during
           reception.
     
     
     Parsons, Rafferty          Expires 9/26/97                    [Page 8]


     Internet Draft                  TIFF-F                  March 26, 1997
     
     
       CleanFaxData = 0, 1, 2.  BYTE.
           This tag indicates whether lines with incorrect pixel count are
           actually in the data or if the receiving facsimile device replaced
           them with regenerated lines.
                0 = Data contains no lines with incorrect pixel counts or
                    regenerated lines (i.e., computer generated)
                1 = Lines with an incorrect pixel count were regenerated by
                    receiving device
                2 = Lines with an incorrect pixel count are in the data and
                    were not regenerated by receiving device (i.e. data
                    contains bad scan lines)
     
       ConsecutiveBadFaxLines.  LONG or SHORT.
           The maximum number of consecutive scan lines with incorrect pixel
           count encountered by the facsimile device reception.
     
       DateTime.  ASCII.
           Date and time in the format YYYY:MM:DD HH:MM:SS, in 24-hour
           format. String length including NUL byte is 20 bytes. Space
           between DD and HH.
     
       DocumentName.  ASCII.
           This is the name of the document from which the document was
           scanned.
     
       ImageDescription.  ASCII.
           This is an ASCII string describing the contents of the image.
     
       Orientation.  SHORT.
           This tag might be useful for displayers that always want to show
           the same orientation, regardless of the image.  The default value
           of 1 is "0th row is visual top of image, and 0th column is the
           visual left."  An 180-degree rotation is 3.  See [TIFF] for an
           explanation of other values.
     
      3.6  Technical Implementation Issues
     
      3.6.1   Strips
     
       Those new to TIFF may not be familiar with the concept of "strips"
       embodied in the three tags RowsPerStrip, StripByteCount, StripOffsets.
     
       In general, third-party applications that read and write TIFF files
       expect the image to be divided into "strips," also known as "bands."
       Each strip contains a few lines of the image. By using strips, a TIFF
       reader need not load the entire image into memory, thus enabling it to
       fetch and decompress small random portions of the image as necessary.
     
       The dimensions of a strip are described by the RowsPerStrip and
       StripByteCount tags.  The location in the TIFF file of each strip is
       contained in the StripOffsets tag.
     
       The TIFF documentation suggests using strips of an arbitrary size of
       about 8K.  Although various application programs assert that they
     
     Parsons, Rafferty          Expires 9/26/97                    [Page 9]


     Internet Draft                  TIFF-F                  March 26, 1997
     
     
       "prefer" banded images, research failed to uncover a single existing
       application that could not read a single-strip page where they could
       read the same file in a multi-strip format. Indeed, applications seem
       to be more sensitive to the total size of the decoded image and are
       not particularly fussy about banding.  This result is not surprising,
       considering that most desktop publishing programs are prepared to deal
       with massively larger images than those one finds in facsimile.  In
       short, the size of strips is application dependent.  However, a
       practical approach for multi-page TIFF-F images is to represent each
       page as a single strip.
     
     
      3.6.2  Bit Order
     
       Although the TIFF 6.0 documentation lists the FillOrder tag in the
       category "No Longer Recommended," Class F resurrects it.
     
       Facsimile data appears on the phone line in bit-reversed order
       relative to its description in CCITT Recommendation T.4.  Therefore, a
       wide majority of facsimile applications choose this natural order for
       storage. Nevertheless, TIFF Class F readers must be able to read data
       in both bit orders.
     
      3.6.3.  Multi-Page
     
       Many existing applications already read Class F-like files, but do not
       support the multi- page tag.  Since a multi-page format greatly
       simplifies file management in fax application software, Class F
       specifies multi-page documents (NewSubfileType = 2).
     
      3.6.4.  Two-dimensional Encoding
     
       PC Fax applications that wish to support two-dimensional encoding may
       do so by setting Bit 0 in the Group3Options tag.  Please see section
       3.8.2.
     
      3.6.5.  Example Use of Page-quality Tags
     
       Here are examples for writing the CleanFaxData,  BadFaxLines, and
       ConsecutiveBadFaxLines tags:
     
           1.  Facsimile hardware does not provide page quality information:
               write no tags.
           2.  Facsimile hardware provides page quality information, but
               reports no bad lines.  Write only BadFaxLines = 0.
           3.  Facsimile hardware provides page quality information, and
               reports bad lines.  Write both BadFaxLines and
               ConsecutiveBadFaxLines.  Also write CleanFaxData = 1 or 2 if
               the hardware's regeneration capability is known.
           4.  Computer generated file:  write CleanFaxData = 0.
     
     
     
     
     
     Parsons, Rafferty          Expires 9/26/97                   [Page 10]


     Internet Draft                  TIFF-F                  March 26, 1997
     
     
      3.7  TIFF Class F Conformance
     
       Fax applications that do not wish to embrace TIFF Class F as a native
       format may elect to support it as import/export medium.
     
       Export
           The simplest form of support is a Class F writer that produces
           individual single-page Class F files with the proper NewSubFile
           tag and the PageNumber (page one-of-one) tag.
     
       Import
           A Class F reader must be able to handle a Class F file containing
           multiple pages.
     
      3.8
     
      3.8.1  Uncompressed data
     
       Class F requires the ability to read and write at least one-
       dimensional T.4 Huffman ("compressed") data.  Uncompressed data is not
       allowed.  This means that the "Uncompressed" bit in T4Options or
       T6Options must be set to 0.
     
      3.8.2  Encoding and Resolution
     
       Since two-dimensional encoding is not required for Group 3
       compatibility, some historic Class F readers have not been able to
       read such files.  However, for maximum efficiency, images should be
       compressed using T.6 MMR compression when possible. For maximum
       portability, applications also need to be able to  to read and write
       one-dimensional (Modified Huffman) files.
     
       For the case of resolution, almost all facsimile products support both
       standard (98 dpi) vertical resolution  and "fine" (196 dpi)
       resolution.  Therefore, fine-resolution files are quite portable in
       the real world.
     
       In 1993, the ITU-T added support for higher resolutions in the T.30
       recommendation including 200 x 200, 300 x 300, 400 x 400 in dots per
       inch based units.  At the same time, support was added for metric
       dimensions which are equivalent to the following inch based
       resolutions: 392v x 203h and 392v x 406h.  Therefore, the inch-based
       equivalents of the new resolutions are supported in the TIFF writer,
       since they may appear in some image data streams received from Group 3
       facsimile devices.  However, many facsimile terminals and older
       versions of  TIFF-F readers are likely to not support the use of these
       higher resolutions. In a similar respect, the optional support of
       metric based resolutions in the TIFF-F reader (i.e. 77 x 38.5 cm) is
       included for completeness, since they are used in some legacy TIFF-F
       applications, but this use is not supported in the TIFF-F writer.
     
     
     
     
     
     Parsons, Rafferty          Expires 9/26/97                   [Page 11]


     Internet Draft                  TIFF-F                  March 26, 1997
     
     
      3.8.3  EOL byte-aligned
     
       In the spirit of TIFF, all EOLs in data must be byte- aligned. An EOL
       is said to be byte-aligned when Fill bits have been added as necessary
       before EOL codes such that EOL always ends on a byte boundary, thus
       ensuring an  EOL-sequence of a one byte preceded by a zero nibble:
       xxxx0000 00000001.
     
       Recall that Huffman encoding encodes bits, not bytes. This means that
       the end-of-line token may end in the middle of a byte. In byte
       alignment, extra zero bits (Fill) are added so that the first bit of
       data following an EOL begins on a byte boundary. In effect, byte
       alignment relieves application software of the burden of bit-shifting
       every byte while parsing scan lines for line-oriented image
       manipulation (such as writing a TIFF file).
     
      3.8.4.  EOL
     
       As illustrated in FIGURE 1/T.4 in [T.4], facsimile documents begin
       with an EOL (which in Class F is byte-aligned). The last line of the
       image is not terminated by an EOL.
     
      3.8.5  RTC Exclusion
     
       Aside from EOLs, TIFF Class F files contain only image data. This
       means that the Return To Control sequence (RTC) is specifically
       prohibited. Exclusion of RTCs not only makes possible the simple
       concatenation of images, it eliminates the mischief--failed
       communications and unreadable images--that their mistreatment
       inevitably produces.
     
      3.8.6    Use of EOFB for T.6 Compressed Images
     
       TIFF-F pages which are encoded with the T.6 Modified Modified READ
       compression method should include an "end-of-facsimile-block" (EOFB)
       code at the end of each coded strip. Per [TIFF], the EOFB code is
       followed by pad bits as needed to align on a byte boundary.   TIFF
       readers should ignore any bits other than pad bits beyond the EOFB.
     
      3.9  TIFF-F Tags Summary
     
       Implementations may choose to implement a TIFF-F Reader, TIFF-F Writer
       or both, depending upon application requirements.  The TIFF-F Reader
       is typically used to read an existing TIFF-F file which resides on a
       computer or peripheral device.  The TIFF-F Writer is typically used to
       convert a bi-level image bit stream into a TIFF-F compliant file.
       There are only minor  semantic differences between the Reader and the
       Writer.  As a general rule, applications should be flexible in the
       TIFF-F files that they are able to read and strict in the writing of
       new TIFF-F files.   For many Internet applications, only the Reader
       needs to be implemented. The specific tag support required for each of
       these variations is summarized below.
     
     
     
     Parsons, Rafferty          Expires 9/26/97                   [Page 12]


     Internet Draft                  TIFF-F                  March 26, 1997
     
     
     
      3.9.1 TIFF Reader
     
       The tags in following table are specified for a TIFF Reader.  Legal
       values are as shown.  If required tags are omitted, the default value
       will apply.  Image data must not have any coding errors.
     
       As noted within [TIFF], a TIFF file begins with an 8-byte image file
       header, of which the first two bytes (0-1) contain the byte order
       within the file.  The permissible values are:
     
           II- Byte order from least significant byte to the most significant
           byte (little-endian)
           MM - byte order is always from most significant to least
           significant (big-endian)
     
       For a TIFF-F Reader, the legal values are:
     
           ByteOrder: MM,II (Either byte order is allowed)
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     Parsons, Rafferty          Expires 9/26/97                   [Page 13]


     Internet Draft                  TIFF-F                  March 26, 1997
     
     
      3.9.1.1  Tags for TIFF-F Reader
     
       Tag               | Legal       | Default      | Comment
       ------------------|-------------|--------------|----------------------
       BitsPerSample     | 1           | 1            |one bit per sample
       CleanFaxData      | 0           | 0            |data has no errors
       Compression       | 3,4         | 3            |T.4 bi-level encoding,
                         |             |              | MH or T.6, MMR
       FillOrder         | 2,1         | 2            |LSB first or MSB first
       ImageWidth        | 1728, 2048, | 1728         |depends on XResolution
                         | 2482, 2592, |              |
                         | 3072, 3723, |              |
                         | 3456, 4096, |              |
                         | 4864        |              |
       ImageLength       | >0          |              |required
       NewSubFileType    | 2           | 2            |single page of
                         |             |              |multipage file
       Orientation       | 1           | 1            |1st row=top left,
                         |             |              | 1st col=top
       PageNumber        | X/X         | 0/1          |pg/tot, 0 base,
                         |             |              | tot in 1st IFD
       PhotometricInterp | 0           | 0            |0 is white
       ResolutionUnit    | 2,3         | 2            |inches (default)
       RowsPerStrip      |=ImageLength |=ImageLength  |
       SamplesPerPixel   | 1           | 1            |one sample per pixel
       StripByteCounts   | >0          |              |required
       StripOffsets      | >0          |              |required
       T4Options         | 4           | 4            |MH (incl. if not MMR)
       T6Options         | 0           | 0            |MMR (incl only if MMR)
       Xresolution       | 204,200, 300| 204          |If unit is per inch
                         |  400,406    |              |
                         | 77          |              | If unit is per cm
       Yresolution       | 196,98,100, | 196          | If unit is per inch
                         | 200,300,392,|              |
                         | 400         |              |
                         | 77,38.5     |              | If unit is per cm
       ------------------|-------------|--------------|----------------------
     
       Other tags may be present, but they should be of an informational
       nature, so that a reader can elect to ignore them.
     
       Informational tags which are often present in TIFF-F images are:
          Software, Datetime, BadFaxLines, ConsecutiveBadFaxLines
     
     
     
     
     
     
     
     
     
     
     
     
     Parsons, Rafferty          Expires 9/26/97                   [Page 14]


     Internet Draft                  TIFF-F                  March 26, 1997
     
     
     
      3.9.2  TIFF Writer
     
       For the case of writing (creating) a TIFF-F file format from an image
       data stream or other raster data, implementations should use the TIFF-
       F tags in the following table as a default.  All tags should be
       included so as to minimize dependencies on default values. Image data
       must not have any coding errors.
     
       As noted within [TIFF], a TIFF file begins with an 8-byte image file
       header, of which the first two bytes (0-1) contain the byte order
       within the file.
     
       For a TIFF-F Writer, the legal value is:
     
           ByteOrder: II (least significant byte to the most significant
                         byte)
     
      3.9.2.1  TIFF-F Writer Tags
     
       Tag               | Legal Value |    Comment
       ------------------|-------------|--------------------------------
       BitsPerSample     | 1           | one bit per sample
       Compression       | 3           | T.4 bi-level encoding, MH
       FillOrder         | 2           | LSB first
       ImageWidth        | 1728, 2048, | depends on XResolution
                         | 2482, 2592, |
                         | 3072, 3723, |
                         | 3456, 4096, |
                         | 4864        |
       ImageLength       | > 0         |
       NewSubFileType    | 2           | single page of multi-page file
       PageNumber        | X/X         | pg/tot, 0 base, tot in 1st IFD
       PhotometricInterp | 0           | 0 is white
       ResolutionUnit    | 2           | inches
       RowsPerStrip      | >0          | must be same as ImageLength
       SamplesPerPixel   | 1           | one sample per pixel
       StripByteCounts   | >0          | as appropriate
       StripOffsets      | >0          | as appropriate
       T4Options         | 4           | MH, byte aligned EOL
       Xresolution       | 204,200,    |
                         | 300,400,406 |
       Yresolution       | 196,98,100, |
                         | 200,300,    |
                         | 392,400     |
       ------------------|-------------|--------------------------------
     
     
       For many applications, it is preferable to use T.6 compression in
       place of one-dimensional T.4 compression.  For this case, the defaults
       are revised as specified in section 3.9.2.3.
     
     
     
     
     Parsons, Rafferty          Expires 9/26/97                   [Page 15]


     Internet Draft                  TIFF-F                  March 26, 1997
     
     
     
      3.9.2.2  Optional TIFF-F Writer Tags
     
       The following tags are optional.  If they are present, they must
       contain the values as shown:
     
       Tag               | Legal Value |    Comment
       ------------------|-------------|-----------------------------------
       CleanFaxData      | 0           |data doesn't contain bad scan lines
       Orientation       | 1           |1st row = top left, 1st col = top
       ------------------|-------------|-----------------------------------
     
       Other tags may be present, but they should be of an informational
       nature, so that a Reader may elect to ignore them.
     
       Informational tags that may be useful are:
           Software, Datetime, BadFaxLines, ConsecutiveBadFaxLines
     
       TIFF Writers should only generate tags that describe facsimile image
       quality when the image has been generated from a fax image data stream
       where error correction (e.g. Group 3 Error Correction Mode) was not
       used.  These tags are:  CleanFaxData, BadFaxLines and
       ConsecutiveBadFaxLines.
     
      3.9.2.3  TIFF-F Writer Tags for T.6 Compression Option
     
       For many applications, a TIFF-F writer may choose to use the T.6
       compression option in place of the one-dimensional Modified Huffman
       standardized in [T.4]. In this case, the rules for the TIFF-F Writer
       tags and values apply, but the except as specified below:
     
       Tag               | Legal Value |    Comment
       ------------------|-------------|-----------------------------------
       Compression       | 4           |  ITU-T T.6 encoding, MMR
       T6Options         | 0           |  Replaces T4Options Tag
       ------------------|-------------|-----------------------------------
     
       Other tags may be present, but must be of the sort that can be ignored
       safely by applications (i.e. purely for information).
     
     
      4.  MIME sub-type image/TIFF
     
       The image/TIFF sub-type was originally defined in RFC 1528 as
       containing TIFF 5.0 encoded image data.
     
       This document, in section 6, re-defines the original image/TIFF
       definition to refer to TIFF 6.0 encoded image data.  The TIFF 6.0
       specification is a cleaner document and is compatible with previous
       TIFF 5.0 encoded image data.  Further, an optional "class" parameter
       is defined for image/TIFF to identify the TIFF Class of the encoded
       image data, if it is known.
     
     
     
     Parsons, Rafferty          Expires 9/26/97                   [Page 16]


     Internet Draft                  TIFF-F                  March 26, 1997
     
     
      5.  Implementation Usage
     
      5.1 Internet Fax Usage
     
       The usage of TIFF-F is envisaged to be a primary component of Internet
       Fax.  It is anticipated that Internet Fax will make use of both a
       TIFF-F Reader and TIFF-F Writer. The details of these applications
       will be specified in other documents.
     
      5.2 VPIM Usage
     
       The image/TIFF sub-type with the Class F parameter (i.e. TIFF-F
       content) is a secondary component of the VPIM Message as defined in
       [VPIM2].  Voice messaging systems can often handle fax store-and-
       forward capabilities in addition to traditional voice message store-
       and-forward functions.  As a result, this sub-type is used to hold fax
       messages within the multipart/voice-message content that is sent
       between compliant VPIM systems.  In this context, the fax content is
       optional and may be rejected if the recipient system cannot deal with
       fax.  VPIM implementations must at least implement and support the
       TIFF-F Reader.
     
       Refer to the VPIM Specification for proper usage of this content.
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     Parsons, Rafferty          Expires 9/26/97                   [Page 17]


     Internet Draft                  TIFF-F                  March 26, 1997
     
     
      6.  IANA Registration
     
            To: ietf-types@iana.org
            Subject: Registration of Standard MIME media type image/TIFF
     
            MIME media type name: image
     
            MIME subtype name: TIFF
     
            Required parameters: none
     
            Optional parameters: class
     
               The Classes of TIFF are denoted by letters.  There are
               currently five valid values of class:
                    B - Bilevel
                    G - Grayscale
                    P - Palette
                    R - RGB, and
                    F - Bi-Level Facsimile
     
               There is no default value for class, as the absence of the
               class parameter indicates that the class of the encoded TIFF
               image is unknown or unnecessary to be known.  The onus is on
               the displaying software to determine the class (if necessary)
               and present the image to the user.
     
            Encoding considerations: Binary or Base-64 generally preferred
     
            Security considerations: none
     
            Interoperability considerations:
     
               The ability of implementations to handle all the defined
               classes of TIFF may not be ubiquitous.  As a result, the
               absence of the class parameter would force implementations to
               decode and attempt to display the encoded TIFF image data in
               order to determine if it could actually be viewed.
     
            Published specification:
     
               TIFF (Tag Image File Format) and most of the classes are
               defined in:
                  TIFF (TM) Revision 6.0 - Final _ June 3, 1992
     
               Adobe Developers Association
               Adobe Systems Incorporated
               1585 Charleston Road
               P.O. Box 7900 Mountain View, CA 94039-7900
     
               A copy of this specification can be found in:
               ftp://ftp.adobe.com/pub/adobe/devrelations/devtechnotes/
               pdffiles/tiff6.pdf
     
     
     Parsons, Rafferty          Expires 9/26/97                   [Page 18]


     Internet Draft                  TIFF-F                  March 26, 1997
     
     
               TIFF Class F is defined in this document in section 3
     
            Applications which use this media type:
     
               primarily fax and voice messaging
     
            Additional information:
     
              Magic number(s):
                   II (little-endian):  49 49 42 00 hex
                   MM (big-endian):     4D 4D 00 42 hex
              File extension(s): .TIF
              Macintosh File Type Code(s): TIFF
     
            Person & email address to contact for further information:
     
              Glenn W. Parsons
              Glenn.Parsons@Nortel.ca
     
              James Rafferty
              Jrafferty@worldnet.att.net
     
            Intended usage: COMMON
     
            Author/Change controller:
     
              James Rafferty
     
     
      7. Authors' Addresses
     
       Glenn W. Parsons
       Nortel Technology
       P.O. Box 3511, Station C
       Ottawa, ON  K1Y 4H7
       Canada
       Phone: +1-613-763-7582
       Fax:   +1-613-763-8385
       Email: Glenn.Parsons@Nortel.ca
     
       James Rafferty
       Human Communications
       12 Kevin Drive
       Danbury, CT 06811-2901
       USA
       Phone: +1-203-746-4367
       Fax:   +1-203-746-4367
       Email: Jrafferty@worldnet.att.net
     
     
     
     
     
     
     
     Parsons, Rafferty          Expires 9/26/97                   [Page 19]


     Internet Draft                  TIFF-F                  March 26, 1997
     
     
      8. References
     
       [MIME4] N. Freed and N. Borenstein,  "Multipurpose Internet Mail
            Extensions (MIME) Part Four: Registration Procedures", RFC 2048,
            Innosoft, First Virtual, Nov 1996.
       [T.30] ITU-T Recommendation T.30 - "Procedures for Document Facsimile
            Transmission in the General Switched Telephone Network", June,
            1996
       [T.4] ITU-T Recommendation T.4 - "Standardization of Group 3 Facsimile
            Apparatus for Document Transmission", June, 1996
       [T.6] ITU-T Recommendation T.6 - "Facsimile Coding Schemes and Coding
            Control Functions for Group 4 Facsimile Apparatus", March, 1993
       [TIFFB] D. Cohen, A. Katz, "A File Format for the Exchange of Images
            in the Internet", RFC 1314, 04/10/1992.
       [TIFF] Adobe Developers Association, TIFF (TM) Revision 6.0 - Final,
            June 3, 1992.
       [TPC.INT] C. Malamud, M. Rose, "Principles of Operation for the
            TPC.INT Subdomain:  Remote Printing -- Technical Procedures", RFC
            1528, 10/06/1993
       [VPIM2] Greg Vaudreuil and Glenn Parsons, "Voice Profile for Internet
            Mail - version 2", <draft-ema-vpim-05.txt>, March 1997.
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     Parsons, Rafferty          Expires 9/26/97                   [Page 20]