INTERNET-DRAFT L. McIntyre
Fax Working Group Xerox Corporation
November 17th, 2000 D. Abercrombie
draft-ietf-fax-tiff-fx-extension1-00.txt Xerox Corporation
W. Rucklidge
Intelligent Markets
R. Buckley
Xerox Corporation
November 2000
TIFF-FX Extensions 1
Status of this Memo:
This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026.
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 draft documents 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
"work in progress."
The list of current Internet-Drafts can be accessed at
<http://www.ietf.org/ietf/1id-abstracts.txt>
The list of Internet-Draft Shadow Directories can be accessed at
<http://www.ietf.org/shadow.html>.
A version of this draft document is intended for submission to the
RFC editor as a Proposed Standard for the Internet Community.
Discussion and suggestions for improvement are requested.
Copyright Notice
Copyright (C) The Internet Society 2000. All Rights Reserved.
McIntyre et al. Expires May 2001 [Page 0]
Internet Draft TIFF-FX Extensions 1.0 November 2000
Abstract
This document is an Internet draft for extensions to TIFF-FX
[RFC XXXX], extension set 1.
This draft describes extensions to RFC XXXX to enable new features or
conditions to TIFF-FX. The features are described by a set of
guidelines for all TIFF-FX extensions, and a set of 5 extension types
which enable: increased resolutions and image widths, expanding
Profile M from 3 layers to N layers, the use of shared data as a
general mechanism for sharing data across images and pages, a binary
profile for JBIG2 coding, and an extension to Profile M for JBIG2 and
"colour tag" coding. These extensions do not required modification of
existing TIFF-FX implementations.
The IETF has been notified of intellectual property rights claimed in
regard to some or all of the specification contained in this
document. For more information consult the online list of claimed
rights in <http://www.ietf.org/ipr.html>.
McIntyre et al. Expires May 2001 [Page 1]
Internet Draft TIFF-FX Extensions 1.0 November 2000
Table of Contents
E1.1 INTRODUCTION -----------------------------------------------------4
E1.1.1 Scope--------------------------------------------------------4
E1.1.2. Overview of this draft--------------------------------------5
E1.2. TIFF Fields Required and Recommendations for All TIFF-FX
Extensions------------------------------------------------------6
E1.2.1. Required Fields---------------------------------------------6
E1.2.1.1. GlobalParametersIFD Field-------------------------------6
E1.2.2.1. TIFF-FXExtensions Field---------------------------------6
E1.2.2. Recommended Fields------------------------------------------8
E1.2.2.1. FaxProfile Field----------------------------------------8
E1.2.2.2. MultiProfiles Field-------------------------------------8
E1.3. TIFF-FX Extension 1 (E1): Resolution and ImageWidth Extensions--10
E1.4. TIFF-FX Extension 2 (E2): N-Layer Profile M Extension-----------14
E1.4.1. Introduction-----------------------------------------------14
E1.4.2. Section 8.1. Overview--------------------------------------15
E1.4.3. Section 8.1.1. MRC 3-layer model---------------------------15
E1.4.4. Section 8.1.2. A TIFF Representation for the MRC 3-layer
model------------------------------------------------------16
E1.4.5. Section 8.2.1. Baseline Fields-----------------------------18
E1.4.6. Section 8.2.2. Extension Fields----------------------------19
E1.4.7. Section 8.2.3. New Fields----------------------------------19
E1.4.8. Section 8.4. Rules and Requirements for Images-------------21
E1.4.9. Section 8.5. Profile M - MRC Fax Profile Summary-----------22
E1.5. TIFF-FX Extension 3 (E3): Shared Data Extension to Profile M----22
E1.5.1. Overview---------------------------------------------------22
E1.5.2. Required TIFF Fields---------------------------------------23
E1.5.3. Recommended Fields-----------------------------------------23
E1.5.4. Shared Data------------------------------------------------23
E1.5.4.1. SharedDataList-----------------------------------------26
E1.5.4.2. Representation of Shared Data in TIFF------------------27
E1.6. TIFF-FX Extension 4 (E4): Profile T - Lossy and Lossless JBIG2
Black-and-White Fax profile-------------------------------------28
E1.6.1. Overview---------------------------------------------------28
E1.6.2. Required TIFF Fields---------------------------------------30
E1.6.2.1. Baseline Fields----------------------------------------31
E1.6.2.2. Extension Fields---------------------------------------33
E1.6.2.3. New Fields---------------------------------------------33
E1.6.3. Recommended TIFF Fields------------------------------------33
E1.6.4. JBIG2 Shared Data------------------------------------------36
E1.6.4.1. The JBIG2 Shared Data----------------------------------36
E1.6.4.2. JBIG2 SharedDataMemory --------------------------------38
E1.6.5. The JBIG2 Image Strip--------------------------------------39
E1.6.5.1. Image Strip Format-------------------------------------41
E1.6.6. Representation of JBIG2 data in TIFF-----------------------42
E1.6.7. Rules and Requirements for Images--------------------------45
E1.6.8. Profile T - Lossy and Lossless JBIG2 Black-and-White
Fax profile Summary----------------------------------------46
McIntyre et al. Expires May 2001 [Page 2]
Internet Draft TIFF-FX Extensions 1.0 November 2000
E1.7. TIFF-FX Extension 5 (E5): JBIG2 Color Extension of Profile M----48
E1.7.1. Overview---------------------------------------------------48
E1.7.2. Required TIFF Fields---------------------------------------49
E1.7.2.1. Baseline Fields----------------------------------------49
E1.7.2.2. Extension Fields---------------------------------------49
E1.7.2.3. New Fields---------------------------------------------49
E1.7.3. Recommended TIFF Fields------------------------------------49
E1.7.4. JBIG2 Shared Data------------------------------------------50
E1.7.5. The Image Strip--------------------------------------------50
E1.7.6. Representation of JBIG2 data in TIFF-----------------------50
E1.7.7. Colour Tag (Color Symbol Compression-----------------------50
E1.7.7.1. Why use Colour Tag Compression-------------------------50
E1.7.7.2. Colour Tag Terms of Use in TIFF------------------------50
E1.7.8. Rules and Requirements for Images--------------------------52
E1.7.9. JBIG2 Extension of Profile M Summary-----------------------53
E1.8. Security Considerations-----------------------------------------56
E1.9. References------------------------------------------------------56
E1.10. Authors' Addresses---------------------------------------------57
Full Copyright Statement----------------------------------------------57
McIntyre et al. Expires May 2001 [Page 3]
Internet Draft TIFF-FX Extensions 1.0 November 2000
E1.1. Introduction
This document describes extensions to RFC XXXX [RFCXXXX], titled
"File Format for Internet Fax", also known as TIFF-FX, to augment the
features and capabilities for the data content and structure
generated by the current suite of ITU-T Recommendations for Group 3
facsimile.
These Recommendations and the TIFF fields described here support the
following new facsimile profile:
Profile T: TIFF-FX Extension 4: Black-and-White JBIG2 Extension - a
JBIG2 profile for binary only T.88|ISO/IEC 14492 [T.88] coded
data, built upon Profile M and the Shared Data extension to
Profile M (TIFF-FX Extension 5).
and create new extensions for the following new features:
TIFF-FX Extension 1 (E1): Resolution and ImageWidth Extensions -
extends the resolutions and image widths available for all
Profiles, with the exception of Profile S
TIFF-FX Extension 2 (E2): N-Layer Profile M Extension - extends
the 3-layer model into N layers
TIFF-FX Extension 3 (E3): Shared Data Extension to Profile M -
enables data to be shared among different images and pages; an
enabler for compression gains by using JBIG2 encoding
TIFF-FX Extension 5 (E5): JBIG2 Color Extension of Profile M - the
binary and color extension to Profile M which enables JBIG2
coding using T.88 (JBIG2,binary) and T.45 [T.45] "Run-length
Colour Encoding", required for colour tag extensions to JBIG2.
This extension specification of TIFF-FX for facsimile is known as
TIFF-FX Extensions 1.
E1.1.1 Scope
This document defines extensions to RFC XXXX, titled "File Format for
Internet Fax", known as TIFF-FX. These extensions add new
functionality to the profiles of TIFF-FX, with the exception of
Profile S, which is highly constrained. Most of these extensions can
be independently used; although some extensions may rely on others.
Unless otherwise noted, the primary reference is [RFC XXXX] "File
Format for Internet Fax" (TIFF-FX), which references the following as
it's primary references: the current TIFF specification [TIFF],
selected TIFF Technical Notes [TTN1, TTN2] and [T.30].
McIntyre et al. Expires May 2001 [Page 4]
Internet Draft TIFF-FX Extensions 1.0 November 2000
E1.1.2 Overview of this draft
This Section gives an overview of TIFF-FX Extensions 1. Section E1.2
describes the requirements and recommendations associated with all
TIFF-FX extensions defined within this document.
Sections E1.3 through E1.7 describe the five new extensions. One
extension is a new profile, Profile T, and is located in Section
E1.4. This section also specifies the ITU-T compatible field values
(image parameters) for Profile T.
Throughout this document, Profiles, and section numbers without an
"E1" prefix, refer to [RFC XXXX].
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", " NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [REQ].
McIntyre et al. Expires May 2001 [Page 5]
Internet Draft TIFF-FX Extensions 1.0 November 2000
E1.2. TIFF Fields Required or Recommended for All TIFF-FX Extensions
E1.2.1. Required Fields
E1.2.1.1. GlobalParametersIFD Field
Status of the GlobalParametersIFD (GPIFD) is being changed from
Recommended to Required, for all extensions. This change is based on
the fact that more than one required extension, such as SharedData
and TIFF-FXExtensions, have global file implications (i.e. apply
across multiple pages or Primary IFDs), warranting their location
within the GPIFD. Accommodation of these required fields within the
GPIFD then requires change in status of the GPIFD to Required.
E1.2.1.1.1 Instructions
Remove the GlobalParametersIFD field from Section 2.2.4 "New TIFF
fields recommended for fax profiles" and append the following revised
definition to Sections 4.2.3, 5.2.3, 6.2.3, 7.2.3 and 8.2.3 "New
Fields":
GlobalParametersIFD (400) IFD or LONG
The GlobalParametersIFD, defined in Section 2.2.4, is an IFD
containing global parameters. It SHALL be present for all TIFF-FX
extensions. This reflects a modification to the Section 2.2.4
definition where GlobalParametersIFD is defined as a Recommended
field. The RFC XXXX GlobalParametersIFD definition is further
modified in that it is permitted to contain fields that are NOT
permitted in any other IFD. The new SharedData field is one such
field that is not permitted in any other IFD, see the Shared Data
Extension to Profile M below.
It is recommended that a TIFF writer place this field in the first
IFD, where a TIFF reader would find it quickly. If a conflict exists
between fields in the GlobalParametersIFD and in the image IFDs, then
the data in the image IFD SHALL prevail.
E1.2.1.2. TIFF-FXExtensions Field
The TIFF-FXExtensions field is introduced to be an identification
mechanism for all TIFF-FX extensions and SHALL be present when an
extension is used. The extensions are identified by bit value
assignment, accommodating use of more than one extensions at the same
time. The TIFF-FXExtensions field SHALL be placed within the
GlobalParametersIFD.
E1.2.1.2.1 Instructions
Add the TIFF-FXExtensions field to Sections 4.2.3, 5.2.3, 6.2.3,
7.2.3 and 8.2.3 "New Fields", as defined below:
McIntyre et al. Expires May 2001 [Page 6]
Internet Draft TIFF-FX Extensions 1.0 November 2000
TIFF-FXExtensions (407) LONG
Count = 1
[[The 407 tag value is subject to change]]
This field identifies the RFC XXXX extension(s) that apply. The field
accommodates the need to continually enhance the functionality of
TIFF-FX. This field SHALL only appear in the GlobalParametersIFD, it
is NOT permitted in any other IFD. It is required and SHALL be
present with use of any TIFF-FX extension.
A value of 1 in a bit location indicates the corresponding TIFF-FX
Extension is used. More than one bit set to 1 means more than
one TIFF-FX extension is used.
Current TIFF-FX Extensions:
+------+---------+---------------------------------------------------+
| Bit |Extension| Meaning |
|number| number | |
+------+-------------------------------------------------------------+
| 0 | 1 | Resolution and ImageWidth Extensions |
| | | If bit 0 is 1, then any of the X and YResolutions |
| | | from 300 x 600 to 1200 x 1200 pixels per |
| | | resolution unit, and the corresponding ImageWidths|
| | | MAY be used. |
+------+---------+---------------------------------------------------+
| 1 | 2 | N-Layer Profile M Extension |
| | | If bit 1 is 1, then the provision for more than |
| | | three MRC layers is used. |
+------+---------+---------------------------------------------------+
| 2 | 3 | Shared Data Extension to Profile M |
| | | If bit 2 is 1, then Profile M and Shared Data |
| | | provisions are used. |
+------+---------+---------------------------------------------------+
| 3 | 4 | Profile T - Black-and-White JBIG2 Extension |
| | | If bit 3 is 1, then Black-and-White JBIG2 coding |
| | | is used (i.e. Compression = 12, TIFF-FXExtensions |
| | | bit 2 is set and bi-level constrained MRC model |
| | | is applied). |
+------+---------+---------------------------------------------------+
| 4 | 5 | JBIG2 Extension of Profile M |
| | | If bit 4 is 1, JBIG2 is used for Mask layer coding|
| | | and colour tags may be used for foreground layers |
| | | (i.e. Compression = 12 and TIFF-FXExtensions bit 2|
| | | is set). |
+------+---------+---------------------------------------------------+
Default = 0, no extensions being used.
McIntyre et al. Expires May 2001 [Page 7]
Internet Draft TIFF-FX Extensions 1.0 November 2000
E1.2.2. Recommended Fields
E1.2.2.1. FaxProfile Field
The FaxProfile field is revised for two reasons: 1) acknowledge the
new MultiProfiles field, specified below, and make provisions for
association of the two fields. 2) update the current profile list to
include the new Profile T, specified later in this document.
E1.2.2.1.1 Instructions
Replace the existing FaxProfile field in Section 2.2.4 "New TIFF
fields recommended for fax profiles" with the following:
FaxProfile(402) = 0 - 7, 255. BYTE
The profile that applies to this file; a profile is a subset of the
full set of permitted fields and field values of TIFF-FX and it's
extensions.
This field is used to indicate the profile used within the file when
only one profile is used. The MultiProfiles field is used when a
TIFF-FX extension or more than one profile is used within the file.
A FaxProfile value of 255 (X'FF') indicates that the MultiProfiles
field is used.
The currently defined FaxProfile values associated with a profile
are:
0: does not conform to a profile defined for TIFF for facsimile
1: minimal black & white lossless, Profile S
2: extended black & white lossless, Profile F
3: lossless JBIG black & white, Profile J
4: lossy color and grayscale, Profile C
5: lossless color and grayscale, Profile L
6: Mixed Raster Content, Profile M
7: lossy and lossless JBIG2 black & white, Profile T
255: MultiProfiles field, indicates the profiles and/or profile(s)
plus extension(s) used in the file
E1.2.2.2. MultiProfiles Field
This field is used to indicate when extension(s) or two or
more different profiles are used within a single file. RFC XXXX makes
no statement with regard to the appropriateness of using encodings of
two or more different profiles within a file. There is no question as
to the value of such a provision. This is illustrated by an example
where the first ten black-and-white text pages of a fifteen page
document are processed using Profile F MMR (G4) encoding while the
last five color pages are processed using Profile C JPEG encoding.
The existing FaxProfile field is used within the file to signal one
encoding profile. In response to requests received from implementors,
this extension introduces the MultiProfiles field, to be used when
and extended profile or more than one profile is used within a file.
McIntyre et al. Expires May 2001 [Page 8]
Internet Draft TIFF-FX Extensions 1.0 November 2000
Files containing extension(s) or more that one profile SHOULD contain
the MultiProfiles field, identifying the profiles or extension(s)
present. When present, the MultiProfiles field SHALL reside within
the GlobalParameterIFD. The number of profiles present within a file
is ambiguous without the MultiProfiles or FaxProfile field. It is
highly likely that readers of files without the MultiProfiles or
FaxProfile will assume that only one profile is present, the profile
that is consistent with the Compression type and other relevant
values that are present within the first IFD. Such readers may
experience difficulty if different Compression types and/or other
relevant parameters are encountered in subsequent IFDs within the
file.
E1.2.2.2.1 Instructions
a) Append the new MultiProfiles field, specified below, to Section 2.2.4
"New TIFF fields recommended for fax profiles" following the ModeNumber
field:
MultiProfiles(406) LONG
Count = N
[[The 406 tag value is subject to change]]
The extended profile (i.e. profile plus extension) or more than one
profiles that apply to this file; a profile is a subset of the
full set of permitted fields and field values of TIFF for facsimile.
This field is used when an extended profile or more than one
profiles are used within the file. This field SHALL only be present
when the FaxProfile field is absent or has a value of 255 (X'FF').
A value of 1 in more than one bit location indicates the
Corresponding profiles or profile(s) plus extension(s) that are
used. The currently defined bits are:
MultiProfiles[0]:
Bit 0: minimal black & white lossless, Profile S
Bit 1: extended black & white lossless, Profile F
Bit 2: lossless JBIG black & white, Profile J
Bit 3: lossy color and grayscale, Profile C
Bit 4: lossless color and grayscale, Profile L
Bit 5: Mixed Raster Content, Profile M
Bit 6: lossy and lossless JBIG2 black & white, Profile T
Bit 7: Extension 1 (E1), resolution and imagewidth extensions
Bit 8: Extension 2 (E2), N-Layer Profile M extension
Bit 9: Extension 3 (E3), shared data extension to Profile M
Bit 10: Extension 5 (E5), JBIG2 extension of Profile M
Bits 11-31: reserved for future use.
WARNING: Files containing extensions or more that one profile
"SHOULD" contain the MultiProfiles field, identifying the profiles
McIntyre et al. Expires May 2001 [Page 9]
Internet Draft TIFF-FX Extensions 1.0 November 2000
present. See the description from the second paragraph of Section
E1.2.2.2.
NOTE: count (N) > 1 should be used to accommodate future
expansion beyond 32 bits.
b) Append the new 4.5.7 "Multiple Profiles within a file" section,
specified below, to Section 4.5 "Implementation Warnings" following
Section 4.5.6:
4.5.7 Multiple Profiles within a file
Files containing more that one profile "SHOULD" contain the
MultiProfiles field, identifying the profiles present. The number
of profiles present within a file is ambiguous without the
MultiProfiles or FaxProfile field. It is highly likely that
readers of files without the MultiProfiles or FaxProfile will
assume that only one profile is present, the profile that is
consistent with the Compression type and other relevant values that
are present within the first IFD. Such readers may experience
difficulty if different Compression types and/or other relevant
parameters are encountered in subsequent IFDs within the file.
E1.3. TIFF-FX Extension 1 (E1): Resolution and ImageWidth Extensions
The ITU-T has approved a new set of X and YResolutions, along with
corresponding image widths (i.e. page widths). This extension makes
provisions for using these extended resolutions.
The TIFF-FXExtensions field, below, SHALL be present when this extension
is used.
TIFF-FXExtensions (407) bit 0 is 1 LONG
See Section E1.2.1.2.
E1.3.1 Instructions
a) Replace the 2nd sentence of Section 2.2.2 "Additional TIFF fields
required for all fax profiles" XResolution field with the following:
The ITU-T Recommendations for facsimile specify a small number
of horizontal resolutions: 100, 200, 300, 400, 600, 1200 pixels per
inch, and 80, 160 pixels per centimeter (or 204, 408 pixels per
inch).
b) Replace the 2nd sentence of Section 2.2.2 "Additional TIFF fields
required for all fax profiles" YResolution field with the following:
McIntyre et al. Expires May 2001 [Page 10]
Internet Draft TIFF-FX Extensions 1.0 November 2000
The ITU-T Recommendations for facsimile specify a small number of
vertical resolutions: 100, 200, 300, 400, 600, 800, 1200 pixels per
inch, and 38.5, 77, 154 pixels per centimeter (or 98, 196, 391
pixels per inch).
c) Append the following five rows to the resolution table that follows
the YResolution field in Section 2.2.2 "Additional TIFF fields required
for all fax profiles":
+--------------+--------------+--------------+--------------+
| 300 | | 600 | |
+--------------+--------------+--------------+--------------+
| 600 | | 600 | |
+--------------+--------------+--------------+--------------+
| 400 | | 800 | |
+--------------+--------------+--------------+--------------+
| 600 | | 1200 | |
+--------------+--------------+--------------+--------------+
| 1200 | | 1200 | |
+--------------+--------------+--------------+--------------+
d) Replace the ImageWidth field in Section 4.2.1. "Baseline fields" with
the following:
ImageWidth(256) SHORT or LONG
RequiredByTIFFBaseline
This profile supports the following fixed page widths: 1728, 2592,
3456, 5184, 10368 (corresponding to North American Letter and Legal,
ISO A4 paper sizes), 2048, 3072, 4096, 6144, 12288 (corresponding to
ISO B4 paper size), and 2432, 3648, 4864, 7296, 14592 (corresponding
to ISO A3 paper size).
No default; must be specified
NOTE: Historical TIFF-F did not include support for the following
widths related to higher resolutions: 2592, 3072, 3648, 3456, 4096,
4864, 5184, 6144, 7296, 10368, 12288 and 14592. Historical TIFF-F
documents also included the following values related to A5 and A6
widths: 816 and 1216. Per the most recent version of [T.4], A5 and A6
documents are no longer supported in Group 3 facsimile, so the
related width values are now obsolete. See section 4.5.2 for more
information on inch/metric equivalencies and other implementation
details.
e) Replace the XResolution field in Section 4.2.1. "Baseline fields"
with the following:
XResolution(282) = 200, 204, 300, 400, 408, 600, 1200 RATIONAL
RequiredByTIFFBaseline
The horizontal resolution of the image is expressed in pixels per
McIntyre et al. Expires May 2001 [Page 11]
Internet Draft TIFF-FX Extensions 1.0 November 2000
resolution unit. In pixels/inch, the allowed values are: 200, 204,
300, 400, 408, 600 and 1200. See Section 2.2.2 for inch-metric
equivalency.
No default, must be specified
NOTE: The values of 200 and 408, 600 and 1200 have been added to the
Historical TIFF-F values, for consistency with [T.30]. Some existing
TIFF-F implementations may also support values of 80 pixels/cm, which
is equivalent to 204 pixels per inch. See section 4.5.2 for
information on implementation details.
f) Replace the YResolution field in Section 4.2.1. "Baseline fields"
with the following:
YResolution(283) = 98, 100, 196, 200, 300, 391, 400, RATIONAL
600, 800 and 1200
RequiredByTIFFBaseline
The vertical resolution of the image is expressed in pixels per
resolution unit. In pixels/inch, the allowed values are: 98, 100,
196, 200, 300, 391, 400, 600, 800 and 1200 pixels/inch.
See Section 2.2.2 for inch-metric equivalency.
No default, must be specified
NOTE: The values of 100, 200, 391, 600, 800 and 1200 have been added
to the historical TIFF-F values, for consistency with [T.30]. Some
existing TIFF-F implementations may also support values of 77 and
38.5 (cm), which are equivalent to 196 and 98 pixels per inch
respectively. See Section 4.5.2 for more information on
implementation details.
NOTE: Not all combinations of XResolution, YResolution and ImageWidth
are legal. The following table gives the legal combinations and
corresponding paper size [T.30].
g) Replace the Resolution and ImageWidth table that follows YResolution
in Section 4.2.1. "Baseline fields" with the following:
+--------------------------------+---------------------------+
| XResolution x YResolution | ImageWidth |
+--------------------------------+---------+--------+--------+
| 200x100, 204x98 | | | |
| 200x200, 204x196 | 1728 | 2048 | 2432 |
| 204x391 | | | |
+--------------------------------+---------+--------+--------+
| 300 x 300, 300 x 600 | 2592 | 3072 | 3648 |
+--------------------------------+---------+--------+--------+
| 408 x 391, 400 x 400 | 3456 | 4096 | 4864 |
| 400x800 | | | |
+--------------------------------+---------+--------+--------+
McIntyre et al. Expires May 2001 [Page 12]
Internet Draft TIFF-FX Extensions 1.0 November 2000
+--------------------------------+---------+--------+--------+
| 600 x 600, 600 x 1200 | 5184 | 6144 | 7296 |
+--------------------------------+---------+--------+--------+
| 1200 x 1200 | 10368 | 12288 | 14592 |
+--------------------------------+---------+--------+--------+
|Letter,A4| B4 | A3 |
| Legal | | |
+---------+--------+--------+
| Paper Size |
+---------------------------+
h) Replace the ImageWidth field in Section 6.2.1. "Baseline Fields" with
the following:
ImageWidth(256). SHORT or LONG
This profile supports the following fixed page widths: 864, 1024,
1216, 1728, 2048, 2432, 2592, 3072, 3456, 3648, 4096, 4864, 5184,
6144, 7296, 10368, 12288, 14592.
i) Replace the XResolution and YResolution fields in Section 6.2.1.
"Baseline Fields" with the following:
XResolution(282) = 100, 200, 300, 400, 600, 1200. RATIONAL
YResolution(283) = 100, 200, 300, 400, 600, 1200. RATIONAL
The resolution of the image is expressed in pixels per resolution
unit. In pixels per inch, allowed XResolution values are: 100, 200,
300, 400, 600 and 1200. The base color fax profile requires the
pixels to be square, hence YResolution SHALL equal XResolution. Base
resolution is 200 pixels per inch and SHALL be supported by all
implementations of this profile.
NOTE: The functional equivalence of inch-based and metric-based
resolutions is maintained, per Annex E.6.5 in [T.4]. See table in
Sec. 2.2.2.
NOTE: Not all combinations of XResolution, YResolution and ImageWidth
are legal. The following table gives the legal combinations for inch-
based resolutions and the corresponding paper sizes [T.30].
j) Replace the Resolution and ImageWidth table that follows YResolution
in Section 6.2.1. "Baseline fields" with the following:
+--------------------------------+---------------------------+
| XResolution x YResolution | ImageWidth |
+--------------------------------+---------------------------+
| 100 x 100 | 864 | 1024 | 1216 |
+--------------------------------+---------------------------+
| 200 x 200 | 1728 | 2048 | 2432 |
+--------------------------------+---------------------------+
McIntyre et al. Expires May 2001 [Page 13]
Internet Draft TIFF-FX Extensions 1.0 November 2000
+--------------------------------+---------------------------+
| 300 x 300 | 2592 | 3072 | 3648 |
+--------------------------------+---------------------------+
| 400 x 400 | 3456 | 4096 | 4864 |
+--------------------------------+---------------------------+
| 600 x 600 | 5184 | 6144 | 7296 |
+--------------+-----------------+---------+--------+--------+
| 1200 x 1200 | 10368 | 12288 | 14592 |
+--------------+-----------------+---------+--------+--------+
|Letter,A4| B4 | A3 |
| Legal | | |
+---------------------------+
| Paper Size |
+---------------------------+
k) Replace the XResolution and YResolution fields in Section 7.2.1.
"Baseline Fields" with the following:
XResolution(282) = 100, 200, 300, 400, 600, 1200. RATIONAL
YResolution(283) = 100, 200, 300, 400, 600, 1200. RATIONAL
The resolution of the image is expressed in pixels per resolution
unit. In pixels per inch, allowed XResolution values are: 100, 200,
300, 400, 600 and 1200. The lossless color fax profile requires the
pixels to be square, hence YResolution SHALL equal XResolution. Base
resolution is 200 pixels per inch.
E1.4. TIFF-FX Extension 2 (E2): N-Layer Profile M Extension
E1.4.1 Introduction
This section tracks [T.44] by defining the N-layer extension to the
3-layer Mixed Raster Content profile or Profile M of TIFF for
facsimile. By applying the appropriate black-and-white, bi-level,
constraints from Extension 4 (Section E1.6), the N-layer model and
rules of this extension may also be applied to Profile T.
Often times, the contents of a page can be broken up into more
components than a 3-layer representation would allow. For instance, a
complex magazine article may do well to have:
- a low resolution background image, for a low variance picture.
Let's say this is 100 dpi, and is color.
- a high resolution mask layer, for the large amount of text and
lines. Let's say this is 400 dpi (and binary).
- a low resolution foreground image, for the text and line color.
Let's say this is 100 dpi, and is color.
- several medium resolution, for the pictures that are scattered
throughout the page. Let's say they are 200 dpi, and are
McIntyre et al. Expires May 2001 [Page 14]
Internet Draft TIFF-FX Extensions 1.0 November 2000
color. Of these, several may be odd shapes (non-rectangular), and
would require a separate mask to select their regions.
Expanding the 3-layer MRC model to N-layers allows for greater
complexity of a page content, with the same simplicity in the
existing model.
This N-layer Profile M Extension is specified by defining specific
modifications to the text of Profile M. As a result of the
specification method, this extension should be read in conjunction
with Profile M.
E1.4.2. Section 8.1. Overview
The objective is to change 3-layer to N-layer references.
2nd paragraph - replace the 3rd and 4th sentences with the following:
By itself, MRC does not define any new coding methods or
resolutions. Instead it defines an N-layer (where N is a positive
integer) image model for structuring and combining the scanned image
data. The MRC N-layer model has been applied here using the TIFF
format to yield a data structure which differs from [T.44] though it
applies the same coding methods, uses the same compressed image data
streams and is consistent with the TIFF principle of a single IFD per
image.
E1.4.3. Section 8.1.1. MRC 3-layer model
The objective is to change 3-layer to N-layer references, specify the
presence of multiple foreground and mask layers, distinguish role of
Primary Mask relative to secondary mask layers and their
interactions:
a) Title and 1st paragraph - replace the title and paragraph with
the following:
8.1.1. MRC N-layer model
The N layers of the MRC model are Background (layer 1), Mask (even
numbered layers such as 2, 4, 6,..., N-1, where N is odd) and
Foreground (odd numbered layers such as 3, 5, 7,..., N, where N is
odd) pairs. The Mask and Foreground layers occur in Mask and
Foreground pairs (i.e. layers 2 & 3, 4 & 5, 6 & 7, ..., N-1 & N
pairs, where N is odd). The odd numbered layers (Background and
Foreground) are typically encoded with multi-level coders while the
even numbered layers (Mask) are encoded with bi-level coders. Each
layer may appear only once on a page and is coded independently of
the other layers.
McIntyre et al. Expires May 2001 [Page 15]
Internet Draft TIFF-FX Extensions 1.0 November 2000
The final image is obtained by using the Mask layers to determine
which of the Foreground layer pixels are rendered over the Background
layer or composite of layers below the Mask. When the Mask layer
pixel value is 1, the corresponding pixel from the corresponding
Foreground layer is selected; when it is 0, the corresponding pixel
from the Background layer or composite of layers below the Mask is
selected.
Details are given in the Introduction of this section, and in Annex A
of [T.44].
b) 4th paragraph - replace with the following:
Not all pages, and not all parts of a page, require 3 or more layers.
If a page consists of only one layer, then that layer is the primary
image whether it is a Background, Mask, or Foreground layer. If
there is more than one layer, then the Primary Mask (layer 2) SHALL
be one of the layers, in which case it is the primary image. In all
cases, the primary image SHALL be page size.
c) 5th paragraph, 1st sentence - replace with the following:
MRC [T.44] allows a page to be transmitted as a series of stripes
with each stripe consisting of 1, 2, 3 or N layers.
d) 6th paragraph - replace with the following:
Furthermore, color fax also requires the spatial resolutions of
Background and Foreground images to be legal fax values that are
also integer factors of the Primary Mask image resolution. For
example, if the Primary Mask Layer resolution is 400 pixels per inch,
then allowed resolutions for the Foreground, Background and secondary
Mask (layers 4, 6, ..., N-1, where N is odd) layers are 100, 200 or
400 pixels per inch; if the Primary Mask is at 300 pixels per inch,
then allowed values are 100 and 300. The Foreground, Background and
secondary Mask layer resolutions can be set independent of each
other.
E1.4.4. Section 8.1.2. A TIFF Representation for the MRC 3-layer model
The objective is to change 3-layer to N-layer references, specify
multiple foreground and mask layers, define their IFD and SubIFD
relationships and structural layout:
a) Title and 1st paragraph - replace the title and paragraph with
the following:
McIntyre et al. Expires May 2001 [Page 16]
Internet Draft TIFF-FX Extensions 1.0 November 2000
8.1.2. A TIFF Representation for the MRC N-layer model
In the TIFF representation of the N-layer MRC model, each page is
represented by a single IFD, called the Primary IFD. The nextIFD
offset associated with a Primary IFD SHALL point to the Primary IFD
of the next page. If the page consists of a single layer, then the
Primary IFD represents that layer. If more than one layer is present,
the Primary IFD represents the Primary Mask layer and the other
layers are represented by a set of child IFDs that are referenced
through the SubIFD extension field [TTN1] of the Primary IFD. To
distinguish MRC-specific SubIFDs from other SubIFDs, the
NewSubFileType field SHALL have Bit 4 ON, indicating an MRC-related
IFD. A new ImageLayer field is also introduced that consists of two
values that identify the layer (Background [layer 1], Mask [layer 2,
4, 6, ..., N-1, where N is odd], or Foreground [layer 3, 5, 7, ...,
N, where N is odd]) and the order within the layer (first, second,
...image of the layer); see Section 8.2.3.
b) 5th paragraph, last sentence - replace the sentence with the
following:
In all cases, if the Primary Mask layer exists, it SHALL be
represented by a single IFD and a single set of coding parameters.
c) 6th paragraph, first 3 sentences - replace the sentences with the
following:
The use of SubIFDs to store child IFDs is described in [TTN1]. When
a Mask is the primary image, the Background and Foreground layer
images are represented with child IFDs that are referenced by the
SubIFDs field in the Primary IFD. There are many possible ways to
represent the Background and Foreground layer images: (1) the
SubIFD field of the Primary IFD is an array of pointers to all
child image IFDs, one entry per child image; (2) the SubIFD field is
a single pointer to a linked list of all child image IFDs; (3) the
SubIFD field is an array of N-1 pointers, where the first pointer is
to a linked list of all Background layer (layer 1) image IFDs, the
second pointer is to a linked list of all the first Foreground layer
(layer 3) image IFDs, the third pointer is to a linked list of all
the second Mask layer (layer 4) IFDs, the N-1 pointer is to a linked
list of all the Nth layer IFDs.
d) IFD - SubIFD tree diagram that follows the 6th paragraph - replace
the tree diagram with the following:
McIntyre et al. Expires May 2001 [Page 17]
Internet Draft TIFF-FX Extensions 1.0 November 2000
(nextIFD)
PRIMARY IFD PAGE 0 ----------------------> PRIMARY IFD PAGE 1--> ...
ImageLayer = [2,1]
NewSubFileType = 18
SubIFD[0] ------------ SubIFD[1] ---- ... --- SubIFD[N-2]
| | |
V V V
Child IFD Child IFD Child IFD
ImageLayer = [1,1] ImageLayer = [3,1] ImageLayer = [N,1]
NewSubFileType = 16 NewSubFileType = 16 NewSubFileType =16
| | |
|(nextIFD) |(nextIFD) |(nextIFD)
V V V
Child IFD Child IFD Child IFD
ImageLayer = [1,2] ImageLayer = [3,2] ImageLayer = [N,2]
NewSubFileType = 16 NewSubFileType = 16 NewSubFileType =16
| | |
|(nextIFD) |(nextIFD) |(nextIFD)
V V V
Child IFD Child IFD Child IFD
ImageLayer = [1,3] ImageLayer = [3,3] ImageLayer = [N,3]
NewSubFileType = 16 NewSubFileType = 16 NewSubFileType =16
| | |
|(nextIFD) |(nextIFD) |(nextIFD)
V V V
0 0 0
e) Last paragraph, last sentence - replace the sentence with the
following:
If the image data is not ITU L*a*b*, the ImageBaseColor is
interpreted as 8-bit ITU L*a*b*; see Section 8.2.3.
E1.4.5. Section 8.2.1. Baseline Fields
The objective is to reflect presence of the multiple foreground and
mask layers and the distinct Primary Mask layer in some fields and
specify the impact of having no image data in the multiple mask and
foreground layer pairs.
a) ImageWidth - replace with the following:
ImageWidth(256). SHORT or LONG
Primary images define the page widths, which SHALL be limited to the
same set of widths as defined in Profile C, the base color profile;
see Section 6.2.1. In Profile M, the width of an image (i.e.
Foreground, Background, or Mask layer) in the coded data stream may
be less than the page width, unless the Background, Foreground or
McIntyre et al. Expires May 2001 [Page 18]
Internet Draft TIFF-FX Extensions 1.0 November 2000
Mask is the primary image (i.e. the Primary IFD), in which case the
width of the coded data stream is the page width. The ImageWidth
field SHALL always store the actual width of the coded data.
b) Compression - replace the first sentence with the following:
For Mask layers, see Sections 4.2.1 and 5.2.1
c) PhotometricInterpretation - replace with the following:
PhotometricInterpretation(262) = 0, 2, 5, 10. SHORT
For Mask layers, 0. For Foreground and Background layers, see
Sections 6.2.1 and 7.2.1.
d) StripByteCounts - replace the field with the following:
StripByteCounts(279) SHORT or LONG
In Profile M, it is permissible for the StripByteCounts value for a
given strip, other than one corresponding to a mask, to have
a zero entry. This means there is no encoded image data corresponding
to that strip. Instead, for the Foreground or Background layers the
current default image color should be used for the strip. The
standard default image colors are black for the Foreground layers and
White for the Background layer. The ImageBaseColor field can be used
to specify other default image colors, see 8.2.3.
e) YResolution - replace the last sentence with the following:
The resolution of Mask, Background and Foreground layers SHALL each
be an integer factor of the Primary image, which is the Primary Mask
layer, when it is present; see Section 8.4.
E1.4.6. Section 8.2.2. Extension Fields
The objective is to reflect presence of the multiple mask layers.
a) T6Options - replace the field with the following:
T6Options(293) = 0. SHORT
For Mask layers, see Section 4.2.2.
E1.4.7. Section 8.2.3. New Fields
The objective is to reflect presence of the multiple mask and
foreground layers, their impact on the ImageLayer field and resulting
extension of the ImageLayer[0] field values. The newly required TIFF-
FXExtension field and minimal bit setting are specified.
a) T82Options - replace the field with the following:
McIntyre et al. Expires May 2001 [Page 19]
Internet Draft TIFF-FX Extensions 1.0 November 2000
T82Options(435) LONG
For Mask layers, see Section 5.2.3.
b) ImageLayer - replace the field, descriptive paragraph and
ImageLayer[0]field with the following:
ImageLayer (34732). LONG
Count = 2
Image layers are defined such that layer 1 is the Background layer.
Layers above layer 1 are arranged in mask (i.e. even numbered layers)
and foreground (i.e. odd numbered layers) pairs. The mask selects
pixels from the associated foreground that will be rendered on top of
the Background or composite of layers below the mask. For example,
layer 2 (i.e. the Primary Mask or first mask layer) selects pixels
from layer 3 (i.e. the first foreground layer) that will be rendered
on top of the Background. Layer 4 (i.e. the second mask layer)
selects pixels from layer 5 (i.e. the second foreground layer) that
will be rendered on top of the composite of layers 1through 3 below.
The ImageLayer field contains two values, describing the layer to
which the image belongs and the order in which it is imaged.
ImageLayer[0] = 1, 2, 3, ..., N.
1: Image is a Background image, i.e., the image that will appear
whenever the Primary Mask contains a value of 0. Background
images typically contain low-resolution, continuous-tone
imagery.
2: Image is the Primary Mask layer. In MRC, if more than one layer
is present then the Primary Mask layer (layer 2) is present, it
SHALL be the Primary IFD and be full page in extent.
3: Image is the first Foreground image, i.e. the image that will
be rendered on top of the lower layer (layer 1) whenever the
Primary Mask contains a value of 1. The Foreground image
generally defines the color of text or lines, but may also
contain high-resolution imagery.
4: Image is the second Mask layer (layer 4).
5: Image is the second Foreground image (layer 5), i.e. the image
that will be rendered on top of the composite of layers 1
through 3 below whenever the second Mask contains a value of 1.
N-1: If N is odd, then layer N-1 is the (N-1)/2-th Mask layer.
N: If N is odd, then layer N is the (N-1)/2-th Foreground image,
i.e. the image that will be rendered on top of the composite of
layers 1 through N-2 below whenever the (N-1)/2 Mask contains a
value of 1.
If N is even, then layer N is the N/2-th Mask layer, which will
rendered as black on top of the composite layers of 1 through
N-1, whenever the image contains a value of 1.
c) TIFF-FX extensions - append the following field at the end of the
section:
McIntyre et al. Expires May 2001 [Page 20]
Internet Draft TIFF-FX Extensions 1.0 November 2000
TIFF-FXExtensions (407) bit 1 is 1 LONG
See Section E1.2.1.2.
E1.4.8. Section 8.4. Rules and Requirements for Images
The objective is to reflect presence and impact of the multiple mask
and Foreground layers and the Primary IFD role in rules 1, 4, 8 and
9.
a) Replace the introductory sentence, along with rules 1, 4, 8 and 9
with the following:
Profile M defines a fundamental set of rules for images in the N-
layer representation. These rules, with the appropriate black-and-
white (bi-level) constraints, also apply to Profile T.
1. If more than one layer exists, then a binary Mask layer SHALL
be present and the first mask layer SHALL be the primary image.
Mask layers SHALL support the binary data representations defined
in Section 3 and MAY support the binary data representations
defined in Sections 4, 5 or E1.6. PhotometricInterpretation SHALL
be set to "0". If only one layer exists, then the image
corresponding to that layer is the primary image.
4. Images other than the Primary Image (i.e. Primary IFD) MAY
optionally cover only a portion of the strip or page.
8. In MRC Internet Fax, each layer is transmitted as a sequence of
strips. If the page consists of a single layer, then all strips
SHALL be stored in the single Primary IFD. In this case, coding
parameters SHALL NOT change between strips. If the page consists
of more than one layer, then all strips of the Primary Mask layer
SHALL be stored in the single Primary IFD. All strips of the
Foreground/Background/secondary mask layers SHALL be stored in
separate IFDs, referenced by the Primary IFD's SubIFD field,
containing an ImageLayer field with ImageLayer[0] identifying
Background (layer 1), Foreground layers (layer 3, 5, 7, ..., N,
where N is odd) or mask layers (layer 2, 4, 6, ..., N-1, where N
is odd), and Imagelayer[1] identifying order in which images
within a single layer are to be imaged. The TIFF XPosition and
Yposition fields are used to indicate the placement of these
images with respect to the primary image.
9. When the Primary Mask image is present, the resolution of
Background, Foreground and secondary mask images SHALL each be an
integer factor of the Primary Mask image. For example, if the
Primary Mask image is 400pixels/inch, then the Background,
Foreground or secondary mask images may be at 400 pixels/inch
(400/1), 200 pixels/inch (400/2) or 100 pixels/inch (400/4).
McIntyre et al. Expires May 2001 [Page 21]
Internet Draft TIFF-FX Extensions 1.0 November 2000
E1.4.9. Section 8.5. Profile M - MRC Fax Profile Summary
The objective is to identify the secondary mask layers as being among
the data blocks pointed to by the SubIFD offsets, reflect the
required status of the GlobalParametersIFD, append the required TIFF-
FXExtensions field to the table and callout the need to activate the
N-Layer Profile M Extension bit.
a) Revise the following Section 8.5 table entries to read as shown:
+------------------+-----------------------------------------+
| SubIFDs | <IFD>: byte offset to FG, BG, |
| | or secondary mask IFDs |
+------------------+-----------------------------------------+
+------------------+-----------------------------------------+
| GlobalParameters | IFD: global parameters IFD |
| IFD** | |
+------------------+-----------------------------------------+
b) Append the following to Section 8.5 table:
+------------------+-----------------------------------------+
| TIFF-FXExtensions| n: extension(s) identification number, |
| ** | bit 1 for N-Layer Profile M Extension |
| | SHALL be among the set bits |
+------------------+-----------------------------------------+
E1.5. TIFF-FX Extension 3 (E3): Shared Data Extension to Profile M
This section defines the Shared Data extension to Profile M. Shared
Data accommodate a single representation of reusable resources,
such as image data or encoding tables, that appear or are used
multiple times within a file. Most importantly, it provides a
mechanism for access to the redundant resources by multiple
components (i.e. sharing) within the encoding process. The sharing of
resources is a new encoding provision defined in ITU-T Rec. T.44
Annex B [T.44Amd1]. Use of Shared Data is restricted to the MRC
structure defined in Profile M or M with N layers, as defined
in this document. Rational for Shared Data in Profile M only is
traceable to T.44 Annex B [T.44Amd1].
E1.5.1. Overview
Many pages and/or documents have repeating components such as shapes
or symbols, words, images and meta-data (i.e. Huffman Tables).
This is especially true for images of text, where the repeating
shapes are the characters themselves. The SharedData field is
McIntyre et al. Expires May 2001 [Page 22]
Internet Draft TIFF-FX Extensions 1.0 November 2000
defined below to leverage the redundancy of these repeating
components by storing each component once, and then referring to each
stored component as many times as possible. Reference to a resource
must be made with an explicit and unique reference to the Shared
Data, from within the data stream that uses it (the referencing data
stream).
E1.5.2. Required TIFF Fields
This section describes the TIFF fields required, in addition to
those in Section 8.2, to represent Shared Data.
E1.5.2.1. Baseline Fields
See Section 8.2.1.
E1.5.2.2. Extension Fields
See Section 8.2.2.
E1.5.2.3. New Fields
Append the following to the fields of 8.2.3:
GlobalParametersIFD (400) IFD or LONG
See Section E1.2.1
TIFF-FXExtensions (407) bit 2 SHALL be 1 LONG
See Section E1.2.1
SharedData (437) LONG
[[The 437 tag value is subject to change]]
See Section E1.5.4.
E1.5.3. Recommended TIFF Fields
See Sections 8.3, with exception of GlobalParametersIFD.
E1.5.4 Shared Data
The following new field is defined:
SharedData (437) LONG
Count = 1
[[The 437 tag value is subject to change]]
The SharedData field contains the file offset (E), in bytes, from the
beginning of the file of the first Shared Data Table. Each Shared
Data Table contains a count of the number of Shared Data Entries that
physically exist in the table (whether filled with a shared data or
not) , the Shared Data Entries themselves, and the file location of
the next Shared Data Table (if any).
McIntyre et al. Expires May 2001 [Page 23]
Internet Draft TIFF-FX Extensions 1.0 November 2000
There can be as many Shared Data Tables as necessary to describe the
number of shared data items, but there SHALL be only one SharedData
field in a file, and it SHALL be in the GlobalParametersIFD
(recommended to be in the first IFD in the file). The SharedData
field is required when sharing data and SHALL be present. A
SharedData value of zero "0" means that there are no Shared Data
Tables present and that no data is currently being shared.
Each Shared Data Table consists of a 2-byte count of the number of
physical entries, a sequence of 16-byte shared data entries, and a 4-
byte offset to the next Shared Data Table. The last shared data
table has a "next table file offset" of 0.
NOTE: In all the tables shown below, all multi-byte quantities are
written/read in the endianness convention established by the TIFF
file ("II" or "MM").
Shared Data Table
+-----+--------------+-----+---------------------------------------+
|Bytes| Byte offsets |Type | Description |
+-----+--------------+-----+---------------------------------------+
| 2 | E - E+1 |SHORT| Items in table - (i) The number of |
| | | | shared data entries that are |
| | | | physically in this table, whether |
| | | | populated (non-zero byte entries) or |
| | | | not. |
+-----+--------------+-----+---------------------------------------+
| 16 | E+2 - E+17 | - | Item 1 - First shared data entry. |
+-----+--------------+-----+---------------------------------------+
| 16 | E+18 - E+33 | - | Item 2 - Second shared data entry. |
+-----+--------------+-----+---------------------------------------+
|. . .| . . . Etc. | - | Item i - i-th item entry. (i |
| | | | determined by "items in table" value |
| | | | above.) |
+-----+--------------+-----+---------------------------------------+
| 4 | N - N+3 |LONG | Next table file offset: 4-byte file |
| | | | offset, in bytes from beginning of |
| | | | file, of the next Shared Data Table. |
| | | | Where i = shared data entries in this |
| | | | table (see "items in table", above), |
| | | | and each shared data item entry is 16 |
| | | | bytes, N = E+2+16*i. |
+-----+--------------+-----+---------------------------------------+
McIntyre et al. Expires May 2001 [Page 24]
Internet Draft TIFF-FX Extensions 1.0 November 2000
Shared Data Entries
+-----+--------------+-----+---------------------------------------+
|Bytes| Byte offsets |Type | Description |
+-----+--------------+-----+---------------------------------------+
| 4 | Y - Y+3 |LONG | Shared Data bytes - Size of the |
| | | | shared data data block, in bytes. |
+-----+--------------+-----+---------------------------------------+
| 4 | Y+4 - Y+7 |LONG | Shared Data file offset - File offset |
| | | | of this shared data data block, in |
| | | | bytes, from beginning of file. |
+-----+--------------+-----+---------------------------------------+
| 2 | Y+8 - Y+9 |SHORT| SharedDataType - The type of data |
| | | | being represented as a shared data. |
| | | | The table below contains the type of |
| | | | shared data currently defined. |
+-----+--------------+-----+---------------------------------------+
| 2 | Y+10 - Y+11 |SHORT| Last page used - The page (primary |
| | | | IFD) ordinal (1, 2, ...) of the last |
| | | | page that references this shared data.|
| | | | A value of 0 indicates that the last |
| | | | page to use the shared data is not |
| | | | known. |
| | | | The page ordinal SHOULD be based on |
| | | | the order within the primary IFD |
| | | | chain. |
+-----+--------------+-----+---------------------------------------+
| 4 | Y+12 - Y+15 |LONG | SharedDataMemory - the number of bytes|
| | | | required by the referencing data |
| | | | stream to hold this shared data. If |
| | | | the shared data is encoded then the |
| | | | memory required SHOULD be consistent |
| | | | with the decoded form of the shared |
| | | | data. |
| | | | A value of 0 indicates that the |
| | | | SharedDataMemory is not known, or this|
| | | | field is not applicable. |
| | | | When defining a shared data and |
| | | | SharedDataMemory is applicable, a |
| | | | formula for computing the |
| | | | SharedDataMemory SHALL be given within|
| | | | the definition of the referencing data|
| | | | stream. |
| | | | An example of such a formula may be |
| | | | found in Section E1.6.4.2 for JBIG2. |
+-----+--------------+-----+---------------------------------------+
McIntyre et al. Expires May 2001 [Page 25]
Internet Draft TIFF-FX Extensions 1.0 November 2000
Current SharedDataTypes:
+----------------+---------------------------------------------+
| SharedDataType | Description |
| Value | |
+----------------+---------------------------------------------+
| 0 | undefined |
+----------------+---------------------------------------------+
| 1 | JBIG2 Shared Data (i.e. JBIG2 symbol |
| | dictionaries, pattern dictionaries, Huffman |
| | tables, etc) |
+----------------+---------------------------------------------+
Shared Data ID:
The reference to a shared data entry SHALL be by a unique ID, which
SHALL be the offset of the entry in the list described by the Shared
Data Tables; the first shared data entry SHALL have ID 0. Note that
the "list" of shared data entries is what the series of Shared Data
Tables SHALL contain, when collected together. The order of the
shared data tables SHALL determine the order of the shared data IDs.
For example, if the first three tables (A, B and C) have 3, 1 and 2
shared data respectively; then table A will contain shared data with
IDs 0, 1, and 2; table B will contain the shared data with ID 3; and
table C will contain shared data with IDs 4 and 5. Note that if
copying shared data from one file to another, the shared data ID will
likely need revision to be brought in alignment with the destination
table; additionally, any copied data that refers to the copied shared
data will require a change in the reference to the new ID.
E1.5.4.1 SharedDataList
The data stream that requires inclusion of one or more Shared Data
(i.e. the reference data stream) may include a list of IDs in a
SharedDataList. For instance, an image strip that requires a shared
data in order to be a complete compressed data stream, will include a
SharedDataList. It is up to the interpretation of the reference data
type (i.e. Compression type) as to how the shared data will be used.
A SharedDataList, located at file offset P, in bytes, from the
beginning of the file, SHALL contain a 2-byte count of the number of
IDs (i) in the list, followed by i 4-byte IDs.
SharedDataList Structure
+-----+---------------+-----+---------------------------------------+
|Bytes| Byte offsets |Type | Description |
+-----+---------------+-----+---------------------------------------+
| 2 | P - P+1 |SHORT| The number of shared data IDs (i) |
+-----+---------------+-----+---------------------------------------+
| 4 | P+2 - P+5 |LONG | First shared data ID |
+-----+---------------+-----+---------------------------------------+
McIntyre et al. Expires May 2001 [Page 26]
Internet Draft TIFF-FX Extensions 1.0 November 2000
+-----+---------------+-----+---------------------------------------+
| 4 | ... |LONG | ... |
+-----+---------------+-----+---------------------------------------+
| 4 | P+2+(i-1)*4 - |LONG | i-th shared data ID |
| | P+5+(i-1)*4 | | |
+-----+---------------+-----+---------------------------------------+
E1.5.4.2 Representation of Shared Data in TIFF
The representation of Shared Data in a TIFF file is shown below:
+------+----------------------+---------------------------------+
| | | "II" or "MM" |
| | +---------------------------------+
| | TIFF Header | 42 |
| | +---------------------------------+
| | | FirstIFD offset (IFD0) |---:
| +----------------------+---------------------------------+ |
| | ... | |
| :---|---------------------------<----------------------------|---:
| | | ... |
| v +----------------------+---------------------------------+
| | | | ... |
| | | +---------------------------------+
| :-->| IFD0 | GlobalParametersIFD offset |---:
| | +---------------------------------+ |
| | | ... | |
| +----------------------+---------------------------------+ v
| | ... | |
| :---|---------------------------<----------------------------|---:
| | | ... |
| v +----------------------+---------------------------------+
| | | | ... |
| | | +---------------------------------+
| :-->| GlobalParametersIFD | SharedData offset (1st Shared |---:
| | | Data Table offset) | |
| | +---------------------------------+ |
| TIFF | | ... | v
| file +----------------------+---------------------------------+ |
| | ... | |
| :---|---------------------------<----------------------------|---:
| | | ... |
| | +----------------------+---------------------------------+
McIntyre et al. Expires May 2001 [Page 27]
Internet Draft TIFF-FX Extensions 1.0 November 2000
| | +----------------------+---------------------------------+
| | | | Number of items in table |
| | | +-----------------+---------------+
| | | | | Byte count |
| v | | +---------------+
| | | | | File offset |
| | | | +---------------+
| | | | Shared Data 0 | SharedDataType|
| | | | +---------------+
| :-->| Shared Data Table 0 | | Last page used|
| | | +---------------+
| | | | SharedData |
| | | | Memory |
| | +-----------------+---------------+
| | | Shared Data 1 | ... |
| | +-----------------+---------------+
| | | ... | ... |
| | +-----------------+---------------+
| | | Next Shared Data Table offset |
| +----------------------+---------------------------------+
| | ... |
+------+--------------------------------------------------------+
E1.6. TIFF-FX Extension 4 (E4): Profile T - Lossy and Lossless JBIG2
Black-and-White Fax profile
This section defines the lossy and lossless JBIG2 black-and-white
profile or Profile T of TIFF for facsimile. JBIG2, ITU-T Rec. T.88 /
ISO-IEC 14492 [T.88], is frequently referenced as symbol or token-
based compression because it makes use of repeating shapes. The
Profile T designation is representative of the term token-based
compression. It must be noted that there are modes of JBIG2 that do
not make use of repeating shapes, such as generic region coding.
All profile T readers and writers SHALL also be able to read and
write Profile S, since Profile S is the minimal binary TIFF-FX
profile.
E1.6.1. Overview
This section describes a black-and-white profile that uses JBIG2
compression. The ITU-T has approved the lossy and lossless modes of
JBIG2 for Group 3 facsimile. JBIG2 compression is typically used in
accordance with the application rules given in ITU-T Rec. T.89
[T.89].
This profile is essentially a JBIG2 encoded black-and-white
constrained profile of Profile M plus the Profile M Shared Data
extension. The MRC 3-layer model and TIFF representation, defined in
McIntyre et al. Expires May 2001 [Page 28]
Internet Draft TIFF-FX Extensions 1.0 November 2000
Section 8.1 and constrained to a single image layer (i.e. only one
layer with image data), SHALL be used.
The behavior and structure of this profile is that of a
plain single-layer image, similar to that of Profiles S, F and J,
with some added structure to accommodate JBIG2's meta-data. Within
this context, bit 4 of the NewSubFileType field SHALL be set,
indicating the MRC imaging model with multiple layers. It must be
noted, however, that the SubIFDs SHOULD consist of only even-numbered
layers. In other words, only even-numbered values of the
ImageLayer[0] field, representing mask layers, SHOULD be present.
Additionally the SharedData field SHALL be used to store JBIG2 Shared
Data, such as symbol or pattern dictionaries, and the Compression
type SHALL be set to 12 (JBIG2 Compression). These requirements are
consistent with ITU-T's definitions in Rec. T.4 Annex H [T.4Amd1] and
Rec. T.44 Annex B [T.44 Ammd1].
JBIG2 compression utilizes the fact that many images have repeating
shapes or symbols. This is especially true for images of text, where
the repeating shapes are the characters themselves. Symbol or token-
based compression makes use of these repeating shapes, by storing a
set of images for the symbols once, and then referring to the symbol
images as many times as possible.
In a multi-page document, the same shape can occur on multiple pages.
In fact, this is quite common: any shape occurring on the first page,
is likely to show up on other pages as well. JBIG2 compression is
improved by collecting all the repeating shapes from multiple pages,
and allowing this collection to be referred to by more than one page.
This collection of symbol images is referred to as a symbol
dictionary. A document can contain more than one symbol dictionary.
For example, one symbol dictionary might contain all the symbols that
occurred on more than one page; each page then might have its own
symbol dictionary, containing all the symbols that occurred only on
that page.
There are two typical ways of compressing symbols on a page using (or
generating) a symbol dictionary. One is by finding an exact match
(lossless), and the other is by allowing a small amount of
discrepancy between the symbol candidate, and the matching symbol in
the symbol dictionary (lossy). The mode used can be distinguished by
the value of the "Lossless" bit in the T88Options[0] field, which is
defined below.
The representation of a symbol-compressed image consists of a shared
data list, which identifies which "JBIG2 Shared Data" are used, and
a "JBIG2-coded position block". A JBIG2 Shared Data is used to
represent a variety of JBIG2 shared entities (i.e. JBIG2 resources)
such as symbol dictionaries, pattern dictionaries, which are used in
McIntyre et al. Expires May 2001 [Page 29]
Internet Draft TIFF-FX Extensions 1.0 November 2000
halftone coding, and Huffman tables. The symbol dictionaries are
typically contained within one or more JBIG2 Shared Data, represented
within the Shared Data provisions of the Shared Data Extension of
Profile M. The JBIG2-coded position block consists of a series of
symbol X and Y-Position coordinates, plus the IDs of the symbols
located by the coordinates. The symbol bitmaps are stored in the
referenced symbol dictionaries.
Each TIFF strip in an IFD whose Compression is equal to 12 (the TIFF
Compression value defined for JBIG2 below) SHALL be formatted as
described in Section E1.6.5 (The JBIG2 Image Strip).
E1.6.1.1 Why Use JBIG2
The symbol-based compression model is incorporated in the JBIG2
standard. This standard boosts compression of text-like documents
by retaining similar shapes across multiple images. In the case of
text, the shapes are the character symbols, and for multi-page
documents, the set of unique character symbols may be fairly small,
especially when the same font is used on each page.
A typical image of binary text, at 300 dpi might take about 80
kilobytes to store using T.6 compression; a similar JBIG2 file might
only require around 20 kilobytes to store. The compression gain can
be up to a factor of two for multi-page files. Sharing
dictionaries between multiple pages makes this high compression
possible, but requires some way to refer to the dictionaries used by
more than one page. This is the reason for using Profile M and its
Shared Data provisions.
E1.6.2. Required TIFF Fields
This section describes the TIFF fields required, in addition to those
in Sections 8.2 and E1.5.2, for Profile T. Additionally it describes
those not required in Section 8.2 and constrained differently from
those in Section 8.2.
Note that these fields are defined under the premise that all odd-
numbered layers are omitted, in conformance to the Profile T black-
and-white constraint. However, there are application conditions that
could benefit from inclusion of these odd-numbered layers and setting
the associated StripByteCounts to 0. This may be true when an
application wishes to represent a reverse video image (i.e. a white
image on a black background). Under these conditions the list of
required fields and/or values will be modified per the
StripByteCounts field below.
McIntyre et al. Expires May 2001 [Page 30]
Internet Draft TIFF-FX Extensions 1.0 November 2000
E1.6.2.1. Baseline Fields
ImageWidth(256). SHORT or LONG
Same page widths as Profile F, the extended black-and-white profile,
and the ImageWidth extensions available to Profile F; see Section
4.2.1 and E1.3.
The change in ImageWidth reference, to those of Profile F rather than
Profile C, is consistent with the black-and-white constraint of this
profile.
Note that for layers other than layer 2, the ImageWidth could be a
fragment of the page width, as when the XPosition is greater than 0.
BitsPerSample (258) = 1. SHORT
Constraint is consistent with the black-and-white constraint.
SamplesPerPixel (277) = 1. SHORT
Constraint is consistent with the black-and-white constraint.
Compression(259) = 12. SHORT
[[The compression value of 12 is subject to change]]
12 = JBIG2 coding, ITU-T Rec. T.88 / ISO-IEC 14492 (Lossy/Lossless
coding of Bi-level Images, frequently referenced as symbol-based
compression), T88Options field may be present when using JBIG2.
The format of the data pointed to by the StripByteOffsets when
Compresstion=12 is described later.
FillOrder (266) = 1, 2. SHORT
See Section 8.2.1
PhotometricInterpretation(262) = 0. SHORT
The '0' constraint is consistent with the black-and-white constraint
of Section E1.6.1 and the MRC mask layer PhotometricInterpretation
constraint defined in Section 8.2.1.
ResolutionUnit (296) = 2. SHORT
See Section 8.2.1.
StripByteCounts(279) SHORT or LONG
In the event that SubIFDs consists of odd-numbered layers, then the
value of the StripByteCounts for all odd-numbered values of the
ImageLayer[0] field SHALL be fixed to zero "0". In Profile M, it is
permissible for the StripByteCounts value for a given odd-numbered
layer strip to have a zero entry. This means there is no encoded
image data corresponding to that strip. Instead, the current default
image color should be used for the strip. The standard default image
colors are white for the Background layer and black for the
Foreground layer(s).
McIntyre et al. Expires May 2001 [Page 31]
Internet Draft TIFF-FX Extensions 1.0 November 2000
It would be efficient to omit all odd numbered layers for Profile T.
However, it may be useful to identify portions of a background and/or
foreground image where the default color should be reversed; namely
where a background image portion is all black, or where reverse video
appears.
To define a child IFD specifying an odd-numbered layer (i.e.
foreground or background) but containing no encoded image data,
create an IFD with the following settings:
ImageLayer[0]: specified odd numbered layer
ImageLayer[1]: specified order
RowsPerStrip: strip height
ImageLength: image height
ImageWidth: specified value, often the Primary IFD
width
BitsPerSample: 8
PhotometricInterpretation: 10
SamplesPerPixel: 3
Compression: 1 (none)
XPosition: specified value, frequently 0
YPosition: specified value, frequently to top of
strip
XResolution: that of the Primary IFD
YResolution: that of the Primary IFD
StripByteCounts: single 0 value
StripOffsets: single 0 entry
NewSubFileType: bit 4 set to 1 (MRC)
ImageBaseColor: default is white and black for
background and foreground layers
respectively, the reverse may be
specified, no other colors SHALL be
specified
XResolution(282) RATIONAL
Same XResolution as Profile F, the extended black-and-white profile,
and the XResolution extensions available to Profile F; see Section
4.2.1 and E1.3.
The change in XResolution reference, to those of Profile F rather
than Profile M, is consistent with the black-and-white constraint of
this profile.
YResolution(283) RATIONAL
Same YResolution as Profile F, the extended black-and-white profile,
and the YResolution extensions available to Profile F; see Section
4.2.1 and E1.3.
The change in YResolution reference, to those of Profile F rather
than Profile M, is consistent with the black-and-white constraint of
this profile.
McIntyre et al. Expires May 2001 [Page 32]
Internet Draft TIFF-FX Extensions 1.0 November 2000
Note that unlike Profile M, Profile F and Profile T may both have
non-square resolutions (i.e. different X and YResolution values).
E1.6.2.2. Extension Fields
These fields SHALL NOT be present:
ChromaSubSampling(530)
ChromaPositioning(531)
Indexed(346)
T4Options(292)
T6Options(293)
These fields are as described in Section 8.2.2:
SubIFDs(330).
XPosition(286).
YPosition(287).
E1.6.2.3. New Fields
These Section 8.2.3 fields SHALL NOT be present:
Decode(433).
T82Options(435)
This Section 8.2.3 field SHOULD NOT be present:
ImageBaseColor(434). The field SHOULD be omitted and the default
color of black and white SHALL be applied to foreground and
background layers respectively. When present, the default
Background or Foreground colors are typicallytypicallyty revised to
black or white respectively, see StripByteCounts above.
These fields, described in Section 8.2.3 SHALL be present:
StripRowCounts(559).
ImageLayer (34732).
The fields described in E1.5.2.3 SHALL be present.
GlobalParametersIFD (400)
SharedData (437)
TIFF-FXExtensions (407)
Bits 2 and 3 of the TIFF-FXExtensions field SHALL be set to 1.
E1.6.3. Recommended TIFF Fields
See Sections 8.3, with exception of GlobalParametersIFD and append
the Following:
T88Options (436). LONG
Count = 1 or 2
[[The 436 tag value is subject to change]]
McIntyre et al. Expires May 2001 [Page 33]
Internet Draft TIFF-FX Extensions 1.0 November 2000
The T88Options field contains one or two values, describing options
applied to the encoded data stream and any application profile to
which the encoded data stream may conform. It SHALL only be present
when the IFD's Compression field is equal to 12 (JBIG2). The content
provides an aid to TIFF readers, in that they describe JBIG2 options
that may or may not be handled by a specific JBIG2 decoder. None of
the values in the field are required for correct decoding, and the
field may be ignored. In the event that this field is omitted, a
reader SHALL assume that the data stream is encoded per the ITU-T
T.89 Base profile (i.e. profile identification number 0x00000101),
see T88Options[1] below.
T88Options[0] = 1, 2, ..., 7.
This value represents options that are being applied to the encoded
data stream.
NOTE: In all the tables shown below, all multi-byte quantities are
written/read in the endianness convention established by the TIFF
file ("II" or "MM").
The following options are defined:
+--------------+----------------------------------------------------+
| Bit number | Meaning |
+--------------+----------------------------------------------------+
| 0 | HuffmanCodingNotPresent |
| | If bit 0 is 1, then the JBIG2-compressed data in |
| | this IFD SHALL NOT use Huffman or MMR (T.6) coding.|
+--------------+----------------------------------------------------+
| 1 | ArithmeticCodingPresent |
| | If bit 1 is 1, then the JBIG2-compressed data in |
| | this IFD MAY contain segments that contain |
| | arithmetic (MQ) coding. |
+--------------+----------------------------------------------------+
| 2 | Lossless |
| | If bit 2 is 1, then the JBIG2-compressed data in |
| | this IFD SHALL be a lossless representation of the |
| | original image. |
+--------------+----------------------------------------------------+
| 3 | SingleStriped |
| | If bit 3 is 1, then each TIFF strip SHALL contain a|
| | JBIG2 Position Block that has only one JBIG2 stripe|
| | (not the same as a TIFF strip). |
| | Note: There is a limit of 32767 lines per JBIG2 |
| | stripe in the event that multi-stripe mode is used.|
+--------------+----------------------------------------------------+
McIntyre et al. Expires May 2001 [Page 34]
Internet Draft TIFF-FX Extensions 1.0 November 2000
+--------------+----------------------------------------------------+
| 4 | TextStripesMixed |
| | If bit 4 is 1, then some JBIG2-compressed stripes |
| | that have text region segment(s) MAY also have |
| | region segments with other data types (e.g. generic|
| | or halftone region segment). |
+--------------+----------------------------------------------------+
| 5 | ColourTagsFollow |
| | If bit 5 is 1, then this IFD SHALL be in a mask |
| | layer whose corresponding foreground layer SHALL be|
| | coded with JBIG2 (Compression = 12) and the JBIG2- |
| | data SHALL be augmented with ITU-T Rec. T.45 (Run- |
| | length colour encoding) [T.45] coded colour tags. |
+--------------+----------------------------------------------------+
| 6 | ColourTagsPresent |
| | If bit 6 is 1, then this IFD SHALL be in a |
| | foreground layer, which SHALL be coded with JBIG2 |
| | (Compression = 12) and the JBIG2-data SHALL be |
| | augmented with T.45-coded colour tags. |
+--------------+----------------------------------------------------+
| 7 | HalftoneRegionPresent |
| | If bit 7 is 1, then the JBIG2-compressed data in |
| | this IFD SHALL contain halftone region segment(s). |
+--------------+----------------------------------------------------+
Note: Bits 5 or 6 SHALL be 0 within Profile T, which is constrained
to black-and-white images.
T88Options[1] = 0x00000101, 0x00000102, 0x00000103.
This value represents the JBIG2 profile identification number. This
value may be omitted.
Default = 0x00000101.
The profile identification number of the T88Options identifies a
subset of the full set of permitted parameters and parameter values
that the JBIG2 coded data stream is in compliance with. None of the
values of the T88Options field is required for correct decoding of a
JBIG2 coded data stream and may be ignored. It allows a decoder to
find out quickly which of the set of JBIG2 parameters and parameter
values may be required to decode a given data stream.
The four-byte profile identification numbers 0x00000000 through
0xFFFFFFFF are administered by ISO/IEC JTC1 SC29. ISO/IEC JTC1 SC29
has reserved profile identification numbers 0x00000100 through
0x00000FFF for ITU-T disposition. Interpretation of profiles
0x00000100 through 0x00000FFF is documented in ITU-T Rec. T.89, while
interpretation of profiles 0x00000000 through 0x000000FF is
documented in ISO/IEC 14492 | ITU-T T.88.
McIntyre et al. Expires May 2001 [Page 35]
Internet Draft TIFF-FX Extensions 1.0 November 2000
Current profiles:
+------------------+------------------------------------------------+
| JBIG2 Profile ID | Description |
+------------------+------------------------------------------------+
| 0x00000101 | ITU-T T.89 Base (minimal Fax Application |
| | Profile) - MMR and Huffman coding, minimum of |
| | two stripes per page, stripes containing text |
| | region segment(s) SHALL NOT contain other |
| | region segments |
+------------------+------------------------------------------------+
| 0x00000102 | ITU-T T.89 Upper MMR |
| | - MMR and Huffman coding, minimum of two |
| | stripes per page, accommodates halftone and |
| | colour tags |
+------------------+------------------------------------------------+
| 0x00000103 | ITU-T T.89 Lower Arithmetic |
| | - Arithmetic coding, minimum of two stripes per|
| | page, stripes containing text region segment(s)|
| | SHALL NOT contain other region segments |
+------------------+------------------------------------------------+
NOTE: In this table, the term "stripe" means JBIG2 stripe (i.e. a
stripe within a JBIG2 Position Block), not a TIFF strip, nor a
TIFF-FX stripe.
E1.6.4 JBIG2 Shared Data
For JBIG2 Shared Data, the SharedDataType value in the Shared Data
Entry SHALL have a value of 1.
E1.6.4.1 The JBIG2 Shared Data
The JBIG2 Shared Data stored in a TIFF file contains three pieces:
1. A JBIG2 Shared Data version
2. A JBIG2-coded shared data block
3. Extensions to the JBIG2 Shared Data (these extensions contain
data that are outside the scope of T.88-JBIG2)
The JBIG2-coded shared data block can have a series of JBIG2
segments. The following segment types may occur:
- Symbol dictionary segment
- Pattern dictionary segment
- Extension segment (future extensions to be defined within the
T.88 JBIG2 standard)
- Supported profiles segment
- Table segment
Each segment in a JBIG2-coded shared data block SHALL be associated
with no page (i.e., SHALL have a page association field value of 0,
as described in T.88 - JBIG2 Section 7.2.6).
McIntyre et al. Expires May 2001 [Page 36]
Internet Draft TIFF-FX Extensions 1.0 November 2000
To put it into perspective, when sharing data is required, a file
contains one SharedData field, which is located in the
GlobalParametersIFD. The SharedData field contains the file offset of
the first Shared Data Table. Each Shared Data Table contains a count
of the number of Shared Data Entries (i.e. JBIG2 Shared Data) that
physically exist in the table , the location and size of the JBIG2
Shared Data themselves, and the file location of the next Shared Data
Table (if any). There can be as many Shared Data Tables as necessary
to describe the number of JBIG2 Shared Data items.
The JBIG2 image strip (i.e. the reference data stream), described in
the next section, that requires inclusion of one or more JBIG2 Shared
Data SHALL include a list of JBIG2 Shared Data IDs in a
SharedDataList.
E1.6.4.1.1 JBIG2 Shared Data Format
The JBIG2 Shared Data format consists of a version number, which
identifies the version of the format that follows, followed by the
size of the JBIG2 data block, then the data block itself, followed
by any extensions. The start of the JBIG2 Shared Data is located at
file offset T, in bytes, from the beginning of the file.
The JBIG2 Shared Data has the following format:
+-----+--------------+-----+----------------------------------------+
|Bytes| Byte offsets | Type| Description |
+-----+--------------+-----+----------------------------------------+
| 1 | T |BYTE | The JBIG2 Shared Data version number, |
| | | | which is currently 0. |
+-----+--------------+-----+----------------------------------------+
| 4 | T+1 - T+4 |LONG | Size of JBIG2-coded shared data block |
| | | | (not including extensions) = Y. |
+-----+--------------+-----+----------------------------------------+
| Y | T+5 - T+4+Y |BYTE | The JBIG2-coded shared data block. |
+-----+--------------+-----+----------------------------------------+
| 2 | . . . . |SHORT| Extension type for first extension |
| | | | (these extensions contain data that are|
| | | | outside the scope of T.88-JBIG2) |
+-----+--------------+-----+----------------------------------------+
| 4 | . . . . |LONG | Size of first extension=Z1 |
+-----+--------------+-----+----------------------------------------+
| Z1 | . . . . |BYTE | Data for first extension |
+-----+--------------+-----+----------------------------------------+
| 2 | . . . . |SHORT| Extension type for second extension |
+-----+--------------+-----+----------------------------------------+
| 4 | . . . . |LONG | Size of second extension=Z2 |
+-----+--------------+-----+----------------------------------------+
| Z2 | . . . . |BYTE | Data for second extension |
+-----+--------------+-----+----------------------------------------+
McIntyre et al. Expires May 2001 [Page 37]
Internet Draft TIFF-FX Extensions 1.0 November 2000
+-----+--------------+-----+----------------------------------------+
| ....| . . . . | ....| Further extensions |
+-----+--------------+-----+----------------------------------------+
E1.6.4.2 JBIG2 SharedDataMemory
For JBIG2 dictionary Shared Data the SharedDataMemory requirement is
represented by the total amount of decoded symbol dictionary
information a decoder will accommodate in memory at one time to
decode a file. This SharedDataMemory requirement is referenced as the
decoder memory. If decoder memory is specified (non-zero value), then
it follows the formula described in [T.89]. Namely, the decoder
memory, composed of two components (a fixed and per-symbol
component), is a measure of how much memory is required to hold a
decoded dictionary. The fixed component does not depend on the number
of symbols, while the per-symbol component does depend on the number
of symbols. The decoder memory algorithm does have dependence on
whether Huffman (see note 1) or Arithmetic (see note 2) coding is
used and whether the dictionaries contain symbols or halftone
patterns (see note 3).
decoder memory = fixed component + per-symbol component
fixed component = 2^{direct coding template size}
+ 2^{refinement coding template size} + 8K
per-symbol component = SUM (32 + (round32(Wi) ( Hi) / 8) over i,
i= 1 to N
where:
i = ith symbol in the dictionary
N = the number of symbols in the dictionary
32 = a fixed per-symbol overhead required to represent:
- width of symbol
- height of symbol
- symbol ID Huffman code
- length of symbol ID Huffman code
- pointer to memory where symbol bitmap resides
round32 = is a rounding up to the next multiple of 32 bits (e.g.,
33 rounds to 64, 128 rounds to 128)
Wi = width of the ith symbol
Hi = height of the ith symbol
This means that for each symbol there are 32 bytes overhead, plus
Hi rows of bitmap data, each of which is round32(Wi)/8 bytes.
Note:
1) For Huffman coding there are no templates, so the fixed component
is about 8K bytes. The fixed component can in fact be zero if
McIntyre et al. Expires May 2001 [Page 38]
Internet Draft TIFF-FX Extensions 1.0 November 2000
custom Huffman tables are not used.
2) For Arithmetic coding the per-symbol component is the same. The
amount of memory needed to store the decoded dictionary bitmaps
(that's the (round32(Wi) * Hi) / 8 component) is unchanged.
Differences occur in the 32 bytes per-symbol overhead component.
The width, height and pointer fractions of the overhead still
apply, however the Huffman code parts do not apply. There are,
however, context tables for symbol ID probability modeling that
take the place of the Huffman code parts. Bottom line, 32 bytes is
also a reasonable per-symbol overhead for Arithmetic coding.
The template options documented in [T.89] range from a 10 pixels
direct bitmap template with no refinement bitmap coding to a 16
pixels direct bitmap template with a 13 pixels refinement bitmap
template. Given this range of templates, the fixed component will
range from 9K to 80K bytes.
3) The same expression holds for pattern dictionaries of halftone
image regions, since pattern dictionaries are similar to
symbol dictionaries but contain halftone patterns. In this
context, the references to symbol above should be taken to include
patterns stored in pattern dictionaries. The pattern dictionaries,
however, tend to be small relative to symbol dictionaries, since
the pattern count is frequently low. This isThis only a few K of
memory. It is the space required by a decoder to hold the halftone
bit-planes that is of significance and determines the
SharedDataMemory. This memory requirement is document in [T.89] to
be typically 110% of the resolution dependent page buffer size
(i.e. 1.0 Mbytes at 300 dpi and 2.0 Mbytes at 400 dpi).
E1.6.5 The JBIG2 Image Strip
The JBIG2 image stored in a TIFF file will have components that
require a TIFF reader to parse through its strip content. This is
due to the fact that JBIG2 is represented by two types of data:
1. shared components: namely the symbol or pattern bitmaps that
are associated with multiple images, which are compressed into
dictionaries and stored in one or more JBIG2 Resources.
2. image specific components: data that is specific to one image
only, that with the aid of the shared components, will allow
the image to be decoded.
To couple these two component sets together, each JBIG2 Image Strip
within an IFD has a corresponding list of shared data IDs in the
SharedDataList section of each image strip. The concatenation of the
shared data and the JBIG2 position block will comprise a decodable
JBIG2 stream for the image described by the IFD for that strip.
A position block is the JBIG2 encoding of the binary image code
stream. Included in the position block are the encoded positions and
McIntyre et al. Expires May 2001 [Page 39]
Internet Draft TIFF-FX Extensions 1.0 November 2000
IDs of the symbols within the dictionaries, which may lie within the
position block, and/or outside of it (as JBIG2 Shared Data). Within
the position block, the following segment types may occur:
1. Page information segment
- Exactly one page information segment SHALL be present, and it
SHALL be the first segment in the JBIG2-coded position block
2. End of page segment
- Exactly one end of page segment SHALL be present, and it SHALL
be the last segment in the JBIG2-coded position block
3. End of stripe segment
4. Symbol dictionary segment
5. Pattern dictionary segment
6. Generic region segment
7. Generic refinement region segment
8. Text region segment
9. Halftone region segment
10. Extension segment (future extensions to be defined within the
T.88 JBIG2 standard)
11. Supported profiles segment
12. Table segment.
Each segment in a JBIG2-coded position block SHALL be associated with
the page defined by the page information segment.
The TIFF JBIG2 Image Strip SHALL consist of four pieces:
1. A JBIG2 Image Strip version
2. A SharedDataList: list of JBIG2 Shared Data IDs
3. The JBIG2-coded position block
4. Extensions to the image strip (these extensions contain data
that are outside the scope of JBIG2, such as colour tags, which
are defined within the JBIG2 Extension of Profile M. Colour tags
are not permitted within this profile, Profile T).
If the JBIG2 Image Strip contains extensions, each extension is
preceded by a two-byte type giving its extension type, and a 4-byte
count of its length in bytes. Other data that could possibly be
stored in an extension includes ASCII text, hyperlinks, and so on.
The current image strip extensions and the data that may be stored in
them are defined in Section E1.6.5.1. If a TIFF reader is not able to
interpret an extension (if it does not recognize the extension type),
then it SHOULD ignore that extension, but may skip over it to find
further extensions that it can interpret.
To decode a JBIG2-coded image strip, follow these steps:
1. Retrieve the list of shared data IDs from the SharedDataList.
2. Search the collection of JBIG2 Shared Data for all the JBIG2
Shared Data, such as dictionaries, whose IDs are given in the
SharedDataList.
From each one, extract its JBIG2-coded shared data block.
McIntyre et al. Expires May 2001 [Page 40]
Internet Draft TIFF-FX Extensions 1.0 November 2000
3. Concatenate those JBIG2-coded shared data blocks, in the order
in which their IDs are given in the SharedDataList, followed
by the JBIG2-coded position block.
4. This concatenated data stream can then be decoded as a JBIG2
data stream. This SHALL be a valid JBIG2 data stream
containing a single page: no segment numbers may be
duplicated, and so on.
As an optimization, you won't actually concatenate and decode the
JBIG2-coded shared data block(s) for every position block that uses
them, as that is quite inefficient. Instead, the JBIG2-coded shared
data block(s) can be decoded and kept in an intermediate format,
designed so that the effect of logical concatenation can be
simulated.
E1.6.5.1 Image Strip Format
The image strip has the following format, which includes a
ResourceList, delimited by "====":
+-----+--------------+-----+----------------------------------------+
|Bytes| Byte offsets | Type| Description |
+-----+--------------+-----+----------------------------------------+
| 1 | P |BYTE | Strip format version number, which is |
| | | | currently 0. |
+=====+==============+=====+========================================+
| 2 | P+1 - P+2 |SHORT| Number of resource IDs = X (i.e. JBIG2 |
| | | | Shared Data) |
+-----+--------------+-----+----------------------------------------+
| X*4 | P+3 - P+2 |LONG | The sequence of shared data IDs of the |
| | +(X*4) | | JBIG2 Shared Data required by this |
| | | | JBIG2-coded position block. The JBIG2 |
| | | | Shared Data (e.g. dictionaries) will be|
| | | | prepended in the order specified by |
| | | | this sequence of IDs, to construct the |
| | | | array of symbols that will be used to |
| | | | decode the JBIG2-coded position block. |
+=====+==============+=====+========================================+
| 4 | P+3+(X*4) - |LONG | Size of JBIG2-coded position block not |
| | P+6+(X*4) | | including extensions = Y |
+-----+--------------+-----+----------------------------------------+
| Y | . . . . |BYTE | The JBIG2-coded Position Block. |
+-----+--------------+-----+----------------------------------------+
| 2 | . . . . |SHORT| Extension type for first extension |
| | | | (these extensions contain data that are|
| | | | outside the scope of T.88-JBIG2, such |
| | | | as colour tags) |
+-----+--------------+-----+----------------------------------------+
McIntyre et al. Expires May 2001 [Page 41]
Internet Draft TIFF-FX Extensions 1.0 November 2000
+-----+--------------+-----+----------------------------------------+
| 4 | . . . . |LONG | Size of first extension=Z1 |
+-----+--------------+-----+----------------------------------------+
| Z1 | . . . . |BYTE | Data for first extension |
+-----+--------------+-----+----------------------------------------+
| 2 | . . . . |SHORT| Extension type for second extension |
+-----+--------------+-----+----------------------------------------+
| 4 | . . . . |LONG | Size of second extension=Z2 |
+-----+--------------+-----+----------------------------------------+
| Z2 | . . . . |BYTE | Data for second extension |
+-----+--------------+-----+----------------------------------------+
| ... | . . . . |.... | Further extensions |
+-----+--------------+-----+----------------------------------------+
Current JBIG2 Image Strip Extension Types:
+----------------+--------------------------------------------------+
| Extension Type | Meaning |
+----------------+--------------------------------------------------+
| 0 | Undefined |
+----------------+--------------------------------------------------+
| 1 | Colour tags |
| | This extension contains colour tag data, T.45 |
| | encoded. |
| | This value SHALL NOT be used when using Profile T|
+----------------+--------------------------------------------------+
E1.6.6 Representation of JBIG2 data in TIFF
The embedding of JBIG2 data in TIFF then takes the following form:
+------+-----------------+---------------------------------------+
| | | "II" or "MM" |
| | +---------------------------------------+
| TIFF | TIFF Header | 42 |
| file | +---------------------------------------+
| | | FirstIFD offset (IFD0) |--:
| +-----------------+---------------------------------------+ |
| | ... |
| :---|-----------------------------<---------------------------|--:
| | | ... |
| | +-----------------+---------------------------------------+
McIntyre et al. Expires May 2001 [Page 42]
Internet Draft TIFF-FX Extensions 1.0 November 2000
| | +-----------------+---------------------------------------+
| | | | ... |
| | | +---------------------------------------+
| v | | Next IFD offset (IFD 1) |----:
| | | +---------------------------------------+ |
| | | | ... | |
| | | +---------------------------------------+ |
| :-->| IFD0 | GlobalParametersIFD |--: |
| | +---------------------------------------+ | v
| | | StripOffsets/StripByteCounts | | |
| | +---------------------------------------+ v |
| | | ... | | |
| +-----------------+---------------------------------------+ | |
| | ... | | |
| :---|-----------------------------<---------------------------|--: |
| | | ... | |
| v +-----------------+---------------------------------------+ v
| | | | ... | |
| | | +---------------------------------------+ |
| :-->| GlobalParameters| SharedData offset (1st Shared |--: |
| | IFD | Data Table offset) | | |
| | +---------------------------------------+ | |
| TIFF | | ... | v |
| file +-----------------+---------------------------------------+ | |
| | ... | | v
| :---|-----------------------------<---------------------------|--: |
| | | ... | |
| | +-----------------+---------------------------------------+ |
| | | | Number of items in table | |
| | | +----------------+----------------------+ |
| | | | | Byte count (of JBIG2 | |
| | | | | Shared Data 0) | |
| v | | +----------------------+ v
| | | | | File offset (to |--: |
| | | | | JBIG2 Shared Data 0) | | |
| | | | +----------------------+ | |
| | | | Shared Data 0 | SharedDataType (1) | | |
| | | | +----------------------+ v |
| :-->| Shared Data | | Last page used | | |
| | Table 0 | +----------------------+ | |
| | | | SharedDataMemory | | |
| | +----------------+----------------------+ | v
| TIFF | | Shared Data 1 | ... | | |
| file | +----------------+----------------------+ v |
| | | ... | ... | | |
| | +----------------+----------------------+ | |
| | | Next Shared Data Table offset | | |
| +-----------------+---------------------------------------+ | |
McIntyre et al. Expires May 2001 [Page 43]
Internet Draft TIFF-FX Extensions 1.0 November 2000
| +-----------------+---------------------------------------+ | |
| | ... | | v
| :---|-----------------------------<---------------------------|--: |
| | | ... | |
| v +-----------------+---------------------------------------+ |
| | | | 0 (version) | |
| | | +---------------------------------------+ |
| | | | <byte count of JBIG2-coded shared data| |
| | | | block> | |
| v | +---------------------------------------+ |
| | | | JBIG2-coded block> block (may contain | v
| | | | multiple JBIG2 segments) | |
| :-->| JBIG2 Shared +---------------------------------------+ |
| | Data 0 | Extension type for first extension | |
| | | (data that are outside the scope of | |
| | | T.88-JBIG2) | |
| | +---------------------------------------+ |
| | | <byte count of first extension> | |
| TIFF | +---------------------------------------+ |
| file | | Data for first Extension | |
| | +---------------------------------------+ v
| | | ... | |
| +-----------------+---------------------------------------+ |
| | ... | |
| :---|-----------------------------<---------------------------|----:
| | | ... |
| v +-----------------+---------------------------------------+
| | | | ... |
| | | +---------------------------------------+
| :-->| IFD1(page 0) | StripOffset (strip 0) |---:
| | +---------------------------------------+ |
| | | ... | |
| +-----------------+---------------------------------------+ |
| | ... | |
| :---|-----------------------------<---------------------------|---:
| | | ... |
| | +-----------------+---------------------------------------+
| | | | Strip format version |
| | | +---------------------------------------+
| | | | SharedDataList |
| | | Strip 0 +---------------------------------------+
| :-->| | JBIG2-coded position block |
| | +---------------------------------------+
| | | Extensions |
| TIFF +-----------------+---------------------------------------+
| file | |
| | ... |
+------+---------------------------------------------------------+
McIntyre et al. Expires May 2001 [Page 44]
Internet Draft TIFF-FX Extensions 1.0 November 2000
E1.6.7 Rules and Requirements for Images
Profile T defines a fundamental set of rules for images in the
3-layer representation.
1. Typically, only ONE layer with image data SHALL exist and it SHALL
be the binary Mask layer, which SHALL be the Primary IFD.
Compression 12 SHALL be used in this layer and the
PhotometricInterpretation SHALL be 0.
2. A Foreground and/or Background layer without image data (i.e. IFD
with StripByteCounts = 0) MAY be present. If present, then only
black and white colors SHALL be used. The Foreground and
Background defaults for ImageBaseColor SHALL be black and
white respectively.
3. The Primary IFD defines and extends to the entire page boundary;
all attached SubIFD images cannot extend beyond the Primary image.
Resolution differences may cause some pixels to "hang over" the
page boundary, but no new pixels should exist completely beyond
the page extent.
4. Images other than the Primary Image (i.e. Primary IFD) MAY
optionally cover only a portion of the strip or page.
5. Each Primary IFD and each MRC-specific SubIFD SHALL have an
ImageLayer field to specify which layer the IFD belongs to, and
the imaging order of that IFD within the layer.
6. Each Primary IFD SHALL have a NewSubFileType field value set to
18, indicating a single page of a multi-page document (bit 1) and
MRC (bit 4).
7. Each MRC-specific child IFD SHALL have a NewSubFileType field
value set to 16, indicating MRC (bit 4).
8. In MRC Internet Fax, each layer is transmitted as a sequence of
strips. If the page consists of a single layer, then all strips
SHALL be stored in the single Primary IFD. In this case, coding
parameters cannot change between strips. If the page consists of
more than one layer, then all strips of the Primary Mask layer
SHALL be stored in the single Primary IFD. Should Foreground
/Background layers be present, the StripByteCounts SHALL be set to
"0". Each strip of the Foreground/Background layers SHALL be
stored in one IFD, referenced by the Primary IFD's SubIFD field,
containing an ImageLayer field with ImageLayer[0] identifying
Background (layer 1) or Foreground layer (layer 3), and
Imagelayer[1] identifying order in which images within a single
layer are to be rendered. The TIFF XPosition and YPosition fields
McIntyre et al. Expires May 2001 [Page 45]
Internet Draft TIFF-FX Extensions 1.0 November 2000
are used to indicate the placement of these images with respect to
the primary image.
9. If Background and/or Foreground images are present, their
resolution SHALL be that of the Primary Mask image.
E1.6.8. Profile T - Lossy and Lossless JBIG2 Black-and-White Fax profile
Summary
Recommended fields are shown with an asterisk *
Required fields or values are shown with a double asterisk **. If the
double asterisk is on the field name, then all the listed values are
required of implementations; if the double asterisks are in the
Values column, then only the values suffixed with a double asterisk
are required of implementations.
+------------------+-----------------------------------------+
| Baseline Fields | Values |
+------------------+-----------------------------------------+
| BitsPerSample | 1**: binary mask |
+------------------+-----------------------------------------+
| Compression | 1: None (ImageBaseColor IFD only) |
| | 12**: JBIG2 |
+------------------+-----------------------------------------+
| DateTime* | {ASCII): date/time in the 24-hour format|
| | "YYYY:MM:DD HH:MM:SS" |
+------------------+-----------------------------------------+
| FillOrder** | 1: Most significant bit first |
| | 2: Least significant bit first |
+------------------+-----------------------------------------+
| ImageDescription*| {ASCII}: A string describing the |
| | contents of the image. |
+------------------+-----------------------------------------+
| ImageWidth | 1728**, 2048, 2432, 2592, |
| | 3072, 3456, 3648, 4096, 4864 |
+------------------+-----------------------------------------+
| ImageLength** | n: total number of scanlines in image |
+------------------+-----------------------------------------+
| NewSubFileType** | 16, 18: |
| | Bit 1 indicates single page of a multi- |
| | page document on Primary IFD |
| | Bit 4 indicates MRC model |
+------------------+-----------------------------------------+
| Orientation | 1**-8, Default 1 |
+------------------+-----------------------------------------+
| PhotometricInter | 0**: WhiteIsZero (Mask Layer) |
| pretation | |
+------------------+-----------------------------------------+
McIntyre et al. Expires May 2001 [Page 46]
Internet Draft TIFF-FX Extensions 1.0 November 2000
+------------------+-----------------------------------------+
| ResolutionUnit** | 2: inch |
+------------------+-----------------------------------------+
| RowsPerStrip | n: number or scanlines per strip |
+------------------+-----------------------------------------+
| SamplesPerPixel | 1**, 3 (ImageBaseColor IFD only) |
+------------------+-----------------------------------------+
| Software* | {ASCII}: name & release number of |
| | creator software |
+------------------+-----------------------------------------+
| StripByteCounts**| <n>: number or bytes in each strip, |
| | fixed to "0" for FG/BG (when present) |
+------------------+-----------------------------------------+
| StripOffsets** | <n>: offset from beginning of file to |
| | each TIFF strip |
+------------------+-----------------------------------------+
| XResolution | 200**, 204**, 300, 400, 408 (written in |
| | pixels/inch) |
+------------------+-----------------------------------------+
| YResolution | 98**, 196**, 100**, 200**, |
| | 300, 391, 400 (written in pixels/inch) |
+------------------+-----------------------------------------+
| Extension Fields |
+------------------+-----------------------------------------+
| DocumentName* | {ASCII}: name of scanned document |
+------------------+-----------------------------------------+
| PageNumber** | n, m: page number followed by total page|
| | count |
+------------------+-----------------------------------------+
| SubIFDs | <IFD>: byte offset to FG/BG IFDs |
+------------------+-----------------------------------------+
| XPosition | horizontal offset in primary IFD |
| | resolution units |
+------------------+-----------------------------------------+
| YPosition | vertical offset in primary IFD |
| | resolution units |
+------------------+-----------------------------------------+
| New Fields |
+------------------+-----------------------------------------+
| StripRowCounts | <n>: number of scanlines in each strip |
+------------------+-----------------------------------------+
| ImageLayer | n, m: layer number, imaging sequence |
| | (e.g., strip number) |
+------------------+-----------------------------------------+
| GlobalParameters | IFD: global parameters IFD |
| IFD** | |
+------------------+-----------------------------------------+
| ProfileType* | n: type of data stored in TIFF file |
+------------------+-----------------------------------------+
McIntyre et al. Expires May 2001 [Page 47]
Internet Draft TIFF-FX Extensions 1.0 November 2000
+------------------+-----------------------------------------+
| FaxProfile* | n: ITU-T compatible fax profile |
+------------------+-----------------------------------------+
| CodingMethods* | n: compression algorithms used in file |
+------------------+-----------------------------------------+
| VersionYear* | byte sequence: year of ITU-T standard |
+------------------+-----------------------------------------+
| ModeNumber* | n: mode (i.e. functional level) of T.44 |
| | standard |
+------------------+-----------------------------------------+
| TIFF-FXExtensions| n: extension(s) identification number, |
| ** | bits 2 and 3 for SharedData and |
| | Profile T SHALL be among the set bits |
+------------------+-----------------------------------------+
| T88Options* | n, m: option numbers, profile number |
+------------------+-----------------------------------------+
| SharedData** | <n>: offset from beginning of file to |
| | the first Shared Data |
+------------------+-----------------------------------------+
E1.7. TIFF-FX Extension 5 (E5): JBIG2 Color Extension of Profile M
This section defines extensions to Profile M that augment the pool of
coders and encoding mechanisms available for use in the mask and
foreground layers when encoding documents with color. The JBIG2, ITU-
T Rec. T.88 / ISO-IEC 14492, bi-level coder is made available for use
in both mask and foreground layer(s). It must be noted that simple
JBIG2 symbol-based compression is limited to matching symbols in a
binary image, but ITU-T Rec. T.44 Annex B [T.44Amd1] expands this to
include single-color images, such as colored text. The T.44 defined
mechanism, referenced as "colour tag" encoding, is only available for
use in foreground layers that are associated with JBIG2 coded mask
layers. The more conventional multi-level color coders, such JPEG,
are also available for use in the encoding of foreground layer colors
when JBIG2 is used in the mask layer(s).
E1.7.1. Overview
Use of JBIG2 in Profile M effectively amounts to application of
Profile T (i.e. Section E.2) to the mask layer(s), without imposition
of the Profile T black-and-white constraints that prohibit the
presence of background and/or foreground image data (i.e. if present
StripByteCounts = 0). This translates to augmenting the MRC 3-layer
model and TIFF representation, defined in Profile M, with the Shared
Data extension E1 (Extension 1), and using JBIG2 coding (i.e.
Compression =12) in the mask layer. The N-layer model and TIFF
representation, defined in extension E2 (Section E1.4) MAY also be
used if the corresponding TIFF-FXExtensions bit is set.
McIntyre et al. Expires May 2001 [Page 48]
Internet Draft TIFF-FX Extensions 1.0 November 2000
Use of JBIG2 and "colour tagging" to encode the colors of the
foreground layer(s) translates to attaching discrete color values to
the JBIG2 coded symbols (shapes) that are represented in the
associated mask layer.
E1.7.2. Required TIFF Fields
This section describes the TIFF fields required, in addition to those
in Sections 8.2, E1.4 and E1.5.2.3.
E1.7.2.1. Baseline Fields
Augment the Section 8.2.1 compression field with JBIG2 (i.e. value =
12) as below:
Compression(259) = 1, 3, 4, 7, 9, 10, 12. SHORT
For Mask layer, see Sections 4.2.1, 5.2.1 and E1.6.2.1.
For Foreground and Background layers, see Sections 6.2.1, 7.2.1 and
E1.6.2.1. Compression=1 is not used by previous profiles. An IFD used
only to specify the default image color for a layer SHALL
not have any encoded image data associated with it, i.e., the
StripByteCounts field SHALL contain a 0. Since no image data exists
in the IFD, the Compression field SHALL be set to 1 indicating no
compression. A Compression field value of 1 is not allowed for any
other IFDs.
E1.7.2.2. Extension Fields
See Section 8.2.2.
E1.7.2.3. New Fields
Augment Section 8.2.3 with the fields from E1.5.2.3.
Bits 2 and 4 of the TIFF-FXExtensions field SHALL be set to 1.
E1.7.3. Recommended TIFF Fields
See Section E1.6.3.
The note that appears at the end of the T88Options[0] table,
prohibiting activation of bits 5 or 6 (i.e. ColourTagsFollow or
ColourTagsPresent respectively) for Profile T SHALL be disregarded.
If the IFD's T88Options[0] field has the ColourTagsFollow or
ColourTagsPresent bits set, then the following segment types SHALL
NOT occur in the JBIG2-coded position block:
- Pattern dictionary
- Halftone region
- Generic region
- Generic refinement region segment
McIntyre et al. Expires May 2001 [Page 49]
Internet Draft TIFF-FX Extensions 1.0 November 2000
E1.7.4 JBIG2 Shared Data
See Section E1.6.4.
E1.7.5 The Image Strip
See Section E1.6.5.
E1.7.6 Representation of JBIG2 data in TIFF
See Section E1.6.6.
E1.7.7 Colour Tag (Color Symbol) Compression
E1.7.7.1 Why Use Colour Tag Compression
Another opportunity that is afforded by JBIG2 is improved compression
of the foreground layer for documents containing colored text. In
most cases, if a document contains text, each individual text
character is a single, flat, color (e.g., black or red), and the
number of such colors is limited. The foreground layer in this case
looks like a number of colored blobs, one for each character, each
one having the shape of the corresponding character. This foreground
layer can be compressed using a new method that takes advantage of
the JBIG2 structure. If the mask layer is compressed using JBIG2
symbols, then decoding it essentially yields a sequence of
(XPosition, YPosition, Symbol ID) triples. Each triple indicates that
the symbol (from some dictionary) specified by "Symbol ID" SHOULD be
drawn at the location "(X, Y)". Simply augmenting a text region
triple with a fourth component, the color of that individual
character (the symbols "colour tag"), allows storage of the
foreground layer in a very small amount of space, using run-length
coding on those colors. The total space taken by the foreground layer
can be small in comparison to an encoded contone image.
E1.7.7.2 Colour Tag Terms of Use in TIFF
Colour tags are one of the JBIG2 image strip extensions referenced in
Section E1.6.5 (The JBIG2 Image Strip). Their Representation within
the image strip is expressed within Section E1.6.5.1 (Image Strip
Format). Stepping back and considering the MRC (Mixed Raster Content)
mask (bi-level data) and foreground (color data) layer pairs, we
arrive at the following terms of use to be applied when colour
tagging is used in foreground representation:
1. the (JBIG2-compressed) bi-level data (position block) SHALL be
followed immediately (in the file) by the colour tags. The
colour tags SHALL appear as an extension in the JBIG2 image
strip, with the image strip extension type = 1 (colour tags, as
McIntyre et al. Expires May 2001 [Page 50]
Internet Draft TIFF-FX Extensions 1.0 November 2000
defined in Section E1.6.5.1). The colour tags SHALL be
compressed using ITU-T Rec. T.45.
2. the mask IFD points to the start of the bi-level data, and the
associated byte count SHALL include ONLY the bi-level data (the
position block, but not the colour tags). The IFD's Compression
field SHALL be set to 12 (JBIG2). If present, the T88Options[0]
field SHOULD have bit 5 set to 1 (ColourTagsFollow).
3. the foreground IFD points to the bi-level data, and the
associated byte count SHALL include BOTH the bi-level data and
the colour tag extension. The IFD's Compression field SHALL be
set to 12 (JBIG2). The IFD's PhotometricInterpretation SHALL
indicate the color space used to interpret the colors found in
the colour tag data. If present, the T88Options[0] field SHOULD
have bit 6 set to 1 (ColourTagsPresent).
4. in the event that two symbol instances overlap, the
reconstructed image SHOULD be the one obtained by drawing each
JBIG2 symbol with the appropriate color, where the drawing SHALL
be done in the order that the JBIG2 symbols appear in the
encoded JBIG2 image strip.
Thus, the foreground IFD completely describes an image: it points to
enough data to reconstruct a colored image that contains the right
color at each pixel selected by the mask. It is reasonable that a
decoder will recognize that both a mask IFD and a foreground IFD
point to the same JBIG2 data, and decode the JBIG2 data only once
(not once for the mask, and again for the foreground). The
T88Options[0] bits "ColourTagsFollow" and "ColourTagsPresent" are
designed to make the decoder's job easier: if it sees
ColourTagsFollow in the T88Options[0] field of a mask IFD, it knows
it should defer decoding it until it decodes the corresponding
foreground IFD.
Similarly, if it sees ColourTagsPresent in a foreground IFD, then it
can optimize the drawing/decoding operations.
Note: This representation has two pointers to the same part of the
TIFF-FX file, which is a violation of a TIFF guideline, and could
conceivably cause problems in some unsuspecting TIFF editors.
However, these unsuspecting TIFF editors would probably not be able
to decode the JBIG2 data anyway. The shared pointers occur only in a
restricted case.
The nature of the two pointers is illustrated below:
McIntyre et al. Expires May 2001 [Page 51]
Internet Draft TIFF-FX Extensions 1.0 November 2000
+----------------------------+
| |
| |
| |
| |
+----------------------------+
| ... |
| SubIFD 0 StripOffsets |--:
| StripByteCounts|--|-:
| ... | | | mask IFD's
+----------------------------+ | | StripByteCounts
| | | | includes only
:---|------------<---------------|--: | bi-level data
| | | |
mask and | +----------------------------+<---:<--:
foreground :-->| JBIG2 Symbols & | | | foreground IFD's
IFD both | | data positions | | | StripByteCounts
point to | | _______________ |<---: | includes both
bi-level | | Colour Tag extension | | bi-level data and
data | +----------------------------+ <--: colour tags
| | | |
:---|------------<---------------|--: |
| | | |
+----------------------------+ | |
| ... | | |
| SubIFD 1 StripOffsets |--: |
| StripByteCounts|--------:
| ... |
+----------------------------+
| |
| |
| |
| |
| |
| |
+----------------------------+
E1.7.8 Rules and Requirements for Images
Revise the identified Profile M Section 8.4 Rules and Requirements
for Images as follows:
a. Revise Rule 1 to read:
1. If more than one layer exists, then the binary Mask layer SHALL
be present and be the primary image. The Mask layer SHALL
support the binary data representations defined in Section 3
and MAY support the binary data representations defined in
Sections 4, 5 and E1.6, with the exception that
PhotometricInterpretation SHALL be 0. If only one layer exists,
then the image corresponding to that layer is the primary
image.
McIntyre et al. Expires May 2001 [Page 52]
Internet Draft TIFF-FX Extensions 1.0 November 2000
b. Revise Rule 3 to read:
3. The Background and Foreground images SHALL support the color
representations defined in Section 6 and MAY support the color
representations defined in Sections 7 or E1.7.
E1.7.9. JBIG2 Extension of Profile M Summary
Recommended fields are shown with an asterisk *
Required fields or values are shown with a double asterisk **. If the
double asterisk is on the field name, then all the listed values are
required of implementations; if the double asterisks are in the
Values column, then only the values suffixed with a double asterisk
are required of implementations.
+------------------+-----------------------------------------+
| Baseline Fields | Values |
+------------------+-----------------------------------------+
| BitsPerSample | 1**: binary mask |
| | 2-8**: bits per color sample for FG/BG |
| | 9-16: optional 12 bits/sample |
+------------------+-----------------------------------------+
| Compression | 1: None (ImageBaseColor IFD only) |
| | 3**: Modified Huffman and Modified Read |
| | (mask layer) |
| | 4: Modified Modified Read |
| | 7**: JPEG (FG/BG layers) |
| | 9: JBIG, per T.85 |
| | 10: JBIG, per T.43 |
| | 12**: JBIG2, per T.88 (Note that T.45 |
| | Run-length Colour Encoding is also|
| | required for FG/BG layers) |
+------------------+-----------------------------------------+
| DateTime* | {ASCII): date/time in the 24-hour format|
| | "YYYY:MM:DD HH:MM:SS" |
+------------------+-----------------------------------------+
| FillOrder** | 1: Most significant bit first |
| | 2: Least significant bit first |
+------------------+-----------------------------------------+
| ImageDescription*| {ASCII}: A string describing the |
| | contents of the image. |
+------------------+-----------------------------------------+
| ImageWidth | 864, 1024, 1216, 1728**, 2048, 2432, |
| | 2592, 3072, 3456, 3648, 4096, 4864 |
+------------------+-----------------------------------------+
| ImageLength** | n: total number of scanlines in image |
+------------------+-----------------------------------------+
McIntyre et al. Expires May 2001 [Page 53]
Internet Draft TIFF-FX Extensions 1.0 November 2000
+------------------+-----------------------------------------+
| NewSubFileType** | 16, 18: |
| | Bit 1 indicates single page of a multi- |
| | page document on Primary IFD |
| | Bit 4 indicates MRC model |
+------------------+-----------------------------------------+
| Orientation | 1**-8, Default 1 |
+------------------+-----------------------------------------+
| PhotometricInter | 0**: WhiteIsZero (Mask layer) |
| pretation | 2: RGB |
| | 5: CMYK |
| | 10**: ITULAB (FG/BG layers) |
+------------------+-----------------------------------------+
| ResolutionUnit** | 2: inch |
+------------------+-----------------------------------------+
| RowsPerStrip | n: number or scanlines per strip |
+------------------+-----------------------------------------+
| SamplesPerPixel | 1**: L* (lightness) |
| | 3: RGB, LAB, CMY |
| | 4: CMYK |
+------------------+-----------------------------------------+
| Software* | {ASCII}: name & release number of |
| | creator software |
+------------------+-----------------------------------------+
| StripByteCounts**| <n>: number or bytes in each strip |
+------------------+-----------------------------------------+
| StripOffsets** | <n>: offset from beginning of file to |
| | each TIFF strip |
+------------------+-----------------------------------------+
| XResolution | 100, 200**, 300, 400 (written in |
| | pixels/inch) |
+------------------+-----------------------------------------+
| YResolution | equal to XResolution (pixels SHALL be |
| | square) |
+------------------+-----------------------------------------+
| Extension Fields |
+------------------+-----------------------------------------+
| T4Options | 0**: required if Compression is Modified|
| | Huffman, EOLs not byte aligned |
| | 1: required if Compression 2D Modified |
| | Read, EOLs are not byte aligned |
| | 4**: required if Compression Modified |
| | Huffman, EOLs byte aligned |
| | 5: required if Compression 2D Modified |
| | Read, EOLs are byte aligned |
+------------------+-----------------------------------------+
| T6Options | 0: required if Compression is 2D |
| | Modified Modified Read |
+------------------+-----------------------------------------+
McIntyre et al. Expires May 2001 [Page 54]
Internet Draft TIFF-FX Extensions 1.0 November 2000
+------------------+-----------------------------------------+
| DocumentName* | {ASCII}: name of scanned document |
+------------------+-----------------------------------------+
| PageNumber** | n, m: page number followed by total page|
| | count |
+------------------+-----------------------------------------+
| ChromaSubSampling| (1,1), (2, 2)** |
| | (1, 1): equal numbers of lightness and |
| | chroma samples horizontally & vertically|
| | (2, 2): twice as many lightness samples |
| | as chroma horizontally and vertically |
+------------------+-----------------------------------------+
| ChromaPositioning| 1: centered |
+------------------+-----------------------------------------+
| Indexed | 0: not a palette-color image |
| | 1: palette-color image |
+------------------+-----------------------------------------+
| SubIFDs | <IFD>: byte offset to FG/BG IFDs |
+------------------+-----------------------------------------+
| XPosition | horizontal offset in primary IFD |
| | resolution units |
+------------------+-----------------------------------------+
| YPosition | vertical offset in primary IFD |
| | resolution units |
+------------------+-----------------------------------------+
| New Fields |
+------------------+-----------------------------------------+
| Decode | minL, maxL, mina, maxa, minb, maxb: |
| | minimum and maximum values for L*a*b* |
+------------------+-----------------------------------------+
| ImageBaseColor | a, b, c: background color in ITULAB |
+------------------+-----------------------------------------+
| StripRowCounts | <n>: number of scanlines in each strip |
+------------------+-----------------------------------------+
| ImageLayer | n, m: layer number, imaging sequence |
| | (e.g., strip number) |
+------------------+-----------------------------------------+
| T82Options | 0: T.85 profile of T.82 coding |
+------------------+-----------------------------------------+
| GlobalParameters | IFD: global parameters IFD |
| IFD** | |
+------------------+-----------------------------------------+
| ProfileType* | n: type of data stored in TIFF file |
+------------------+-----------------------------------------+
| FaxProfile* | n: ITU-T compatible fax profile |
+------------------+-----------------------------------------+
| CodingMethods* | n: compression algorithms used in file |
+------------------+-----------------------------------------+
McIntyre et al. Expires May 2001 [Page 55]
Internet Draft TIFF-FX Extensions 1.0 November 2000
+------------------+-----------------------------------------+
| VersionYear* | byte sequence: year of ITU-T standard |
+------------------+-----------------------------------------+
| ModeNumber* | n: mode of T.44 standard |
+------------------+-----------------------------------------+
| TIFF-FXExtensions| n: extension(s) identification number, |
| ** | bits 2 and 4 for SharedData and |
| | Profile M SHALL be among the set bits |
+------------------+-----------------------------------------+
| T88Options* | n, m: option numbers, profile number |
| | - if colour tag is used then bit 1 of n |
| | SHALL NOT be set |
| | - if bit 5 is set then IFD is in mask |
| | layer with colour tag augmented JBIG2 |
| | coded corresponding foreground layer |
| | - if bit 6 is set then IFD is in |
| | foreground layer with colour tag |
| | augmented JBIG2 coding |
+------------------+-----------------------------------------+
| SharedData** | <n>: offset from beginning of file to |
| | the first Shared Data |
+------------------+-----------------------------------------+
E1.8. Security Considerations
This document describes a file format for Internet fax, which is a
series of profiles of TIFF for facsimile. As such, it does not create
any security issues not already identified in [TIFF-REG], in its use
of fields as defined in [TIFF]. There is also new TIFF fields
defined within this specification, but they are of a purely
descriptive nature, so that no new security risks are incurred.
Further, the encoding specified in this document does not in any way
preclude the use of any Internet security protocol to encrypt,
authenticate, or non-repudiate TIFF-encoded facsimile messages.
E1.9. References
The following references are appended to the list in Section 11 of
RFC XXXX.
[RFC XXXX] RFC XXXX, Draft Standard "File Format for Internet Fax",
known as TIFF-FX (pending issue)
[T.4 Amd1] Amendment 1 to ITU-T Recommendation T.4, Standardization
of group 3 facsimile apparatus for document transmission, March 2000
McIntyre et al. Expires May 2001 [Page 56]
Internet Draft TIFF-FX Extensions 1.0 November 2000
[T.44Amd1] Amendment 1 to ITU-T Recommendation T.44, Mixed Raster
Content (MRC), March 2000.
[T.45] ITU-T Recommendation T.45, Run-length Colour Encoding, March
2000.
[T.88] ITU-T Recommendation T.88|ISO/IEC 14492:2000, Information
technology - Lossy/Lossless coding of Bi-level Images. (Commonly
referred to as JBIG2 standard.)
[T.89] ITU-T Draft Recommendation T.89, Application Profiles for
Recommendation T.88 - Lossy/Lossless Coding of Bi-level Images
(JBIG2) for Facsimile, November 2000.
E1.10 Authors' Addresses
Dave Abercrombie Robert Buckley
Xerox Corporation Xerox Corporation
Mailstop PAHV-121 Mailstop 0128-30E
3400 Hillview Ave 800 Phillips Road
Palo Alto, CA 94304, USA Webster, NY 14580, USA
Voice: +1-650-813-6811 Voice: +1-716-422-1282
Fax: +1-650-813-6860 Fax: +1-716-265-8871
Email: aber@pahv.xerox.com Email:rbuckley@crt.xerox.com
Lloyd McIntyre William Rucklidge
Xerox Corporation Intelligent Markets
Mailstop PAHV-121 410 Jessie St., Suite 602
3400 Hillview Ave San Francisco, CA 94103, USA
Palo Alto, CA 94304, USA Voice: +1-415-369-5013
Voice: +1-650-813-6762 Email: wjr@imarkets.com
Fax: +1-650-845-2340
Email: lmcintyre@pahv.xerox.com
Full Copyright Statement
Copyright (C) The Internet Society (2000). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
McIntyre et al. Expires May 2001 [Page 57]
Internet Draft TIFF-FX Extensions 1.0 November 2000
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
McIntyre et al. Expires May 2001 [Page 58]