`Version 2.0
`
`28 August 1995
`
`This is a draft proposal. It is not yet final, and may change significantly
`before final release.
`
`A PDF version of this specification can be found at:
`
`http://www.adobe.com/Support/TechNotes.htm|
`or
`
`ftp://ftp.adobe.com/pub/adobe/DeveloperSupport/TechNotes/PDFfiles
`
`Free Acrobat Readers (PDF viewing/printing) can be downloaded from:
`
`http://www.adobe.com/Software/Acrobat
`or
`
`ftp://ftp.adobe.com/pub/adobe/Applications/Acrobat
`
`If you have comments or suggestions regarding OPI, please send them
`to:
`
`devsup-person@adobe.com.
`
`OPI—Version 2.0
`
`1
`
`PETITIONERS Ex. 1018, p. 1
`
`PETITIONERS Ex. 1018, p. 1
`
`
`
`Copyright © 1986-1988, 1992, 1995 by Adobe Systems Incorporated.
`All rights reserved.
`
`No part of this publication may be reproduced, stored in a retrieval
`system, or transmitted,
`in any form or by any means, electronic,
`mechanical, photocopying, recording, or otherwise, without the prior
`written consent of the publisher.
`
`PostScript is a trademark of Adobe Systems Incorporated. All instances
`of the name PostScript in the text are references to the PostScript
`language as defined by Adobe Systems Incorporated unless otherwise
`stated. The name PostScript also is used as a product trademark for
`Adobe Systems’ implementation of the PostScript language interpreter.
`
`Any references to a ”PostScript printer,” a ”PostScript file,” or a
`“PostScript driver" refer to printers, files, and driver programs
`(respectively) which are written in or support the PostScript language.
`The sentences in this specification that use ”PostScript language” as an
`adjective phrase are so constructed to reinforce that the name refers to
`the standard language definition as set forth by Adobe Systems
`Incorporated.
`
`PostScript, the PostScript logo, Display PostScript, Adobe, the Adobe
`logo, Adobe Illustrator, Aldus,
`l’ageMaker, TIFF, OPI, TrapWise,
`TranScript, Carta, and Sonata are trademarks of Adobe Systems
`Incorporated or its subsidiaries, and may be registered in some
`jurisdictions.
`
`Apple, LaserWriter, and Macintosh are registered trademarks and
`Finder and System 7 are trademarks of Apple Computer, Inc. Microsoft,
`MS-DOS and Windows are registered trademarks of Microsoft
`Corporation. UNIX is a registered trademark of UNIX System
`Laboratories, Inc., a wholly owned subsidiary of Novell, Inc. All other
`trademarks are the property of their respective owners.
`
`CPI—Version 2.0
`
`PETITIONERS Ex. 1018, p. 2
`
`PETITIONERS Ex. 1018, p. 2
`
`
`
`Table of Contents
`
`1 Introduction .......
`
`................................................ 4
`
`1.1 Terminology ............................................................................................................ 4
`1.2 References ............................................................................................................... 5
`
`2 OPI 2.0 Comments, in Order of Appearance ............................... 6
`%%BeginOPl:
`2.0 ......................................................................................... 6
`%%Disti|led
`(no keywords) ........................................................................ 6
`%%ImageFileName:
`<fi|ename> ............................................................................. 6
`%%Mainlmage:
`<Main|mage|D> ..................................................................... 6
`%%TlFFASCIlTag:
`<tagnumber> <tagtext> ........................................................ 7
`%%ImageDimensions;
`<width> <height> .................................................................. 8
`%%ImageCropRect;
`<|eft> <top> <right> <bottom> .............................................. 8
`%%ImageOverprint:
`false | true .............................................................................. 9
`%%Imagelnks:
`<type> <numberiofiinks> <name_ofvink,1> <ink71ileve|>
`...<name_of_ink_n> <ink_n_|evel> ........................................ 10
`............................................................................................ 12
`<set the graphics state>
`(no keywords) ...................................................................... 13
`%%Beginlncludedlmage
`<pixelswide> <pixelshigh> ................................................... 13
`%%IncludedlmageDimensions:
`<qua|ity> .............................................................................. 14
`%%I ncludedlmageQuality:
`............................................................................................ 15
`<|mage Operands St Data>
`(no keywords) ...................................................................... 16
`%%Endlncludedlmage
`(no keywords) ..................................................................... 16
`%%EndOPl
`3 Requirements for OPI Producers .................
`..... . ...... 17
`4 Requirements for OPI Consumers .............................................. 21
`5 Examples ............
`.....
`...................................... 23
`5.1 Example 1 ............................................................................................................. 23
`5.2 Examplez ............................................................................................................. 24
`6 Design and Usage ...................................................................... 25
`6.1 Design Requirements ............................................................................................. 25
`6.2 Workflow Options .................................................................................................. 25
`7 Reading from a named file ......................................................... 27
`8 Change History ..............................
`.........
`28
`Changes from Version 1.3 to Version 2.0 ................................................................ 28
`Colophon ...................... . ............................................................. 29
`
`OPI—Version 2.0
`
`3
`
`PETITIONERS Ex. 1018, p. 3
`
`PETITIONERS Ex. 1018, p. 3
`
`
`
`1
`
`Introduction
`
`The Open Prepress Interface (OPI) is a collection of PostScript®
`language conventions that allow low—resolution proxy images to be
`used for page layout. The high—resolution versions of the images are
`automatically stripped in later. Both desktop prepress software and
`non-desktop prepress systems can use OPI to minimize network traffic
`and image storage requirements.
`
`1.1 Terminology
`
`OPI Producer: An application that writes OPI comments—typically, a
`page layout program.
`
`OPI Consumer: An application that reads OPI comments and (usually)
`inserts high-resolution image data into the PostScript language stream.
`This is typically an OPI server, but other prepress applications can also
`be OPI Consumers.
`
`An application can be both an OPI Producer and an OPI Consumer. In
`fact, all OPI Consumers must also be valid OPI Producers if they wish
`to write out an altered PostScript language stream, since some other
`OPI Consumer may need to do things to the stream,
`too. An
`application should never assume that there is no other application
`between it and the imagesetter.
`
`Bitmap: A 1-bit deep image, typically imaged using the PostScript
`operator imagemask.
`
`Grayscale image: A monochrome image that is deeper than 1 bit per
`pixel (typically 8 bits).
`
`0P] context: Everything between "%%BeginOP|: 2.0” and the
`matching %%EndOP| comment, inclusive. Ol’l contexts may be
`included in EPS files that may be incorporated into other PostScript
`language streams.
`
`Proxy image: The lower—resolution version of the image that is
`imported into a page layout program or other OPI Producer.
`
`OPI—Version 2.0
`
`PETITIONERS Ex. 1018, p. 4
`
`PETITIONERS Ex. 1018, p. 4
`
`
`
`Main image: The high-resolution version of the image, as it was
`scanned or otherwise acquired, from which the proxy image is created.
`
`1.2
`
`References
`
`l. EQsLSgipt Language Reference Manual, Second Edition, Adobe
`Systems Incorporated. In this specification, we use the terms ”Red
`Book” or ”PSLRM" to refer to the l’ostScript Language Reference
`
`m 2
`
`. Adobe Technical Note #5001, “Document Structuring
`Conventions—Version 3.0," also found as Appendix G in the PSLRM.
`The name "Document Structuring Conventions” is sometimes
`abbreviated to "DSC."
`
`3. ”Proposal for Color Separation Conventions for PostScript Language
`Programs," Adobe Systems Technical Note #5044, dated 12/14/89.
`
`4. TIFF Revision 6.0, Aldus Corporation, June 3, 1992. As of June 1995,
`the TIFF specification is available in Adobe Acrobat PDF format at:
`
`http://www.adobe.com/Support/TechNotes.htm|
`or
`
`ftp://ftp.adobe.com/pub/adobe/DeveloperSupport/TechNotes/PDFfiles
`
`Free Acrobat Readers (PDF viewing/printing) can be downloaded from:
`
`http://www.adobe.com/Software/Acrobat
`or
`
`ftp://ftp.adobe.com/pub/adobe/Applications/Acrobat
`
`5. OPI White Paper, 1995, Apple Computer, Inc.,
`Cupertino, CA 95014-6299.
`(408) 996-1010.
`
`1 Infinite Loop
`
`OPI—Version 2.0
`
`5
`
`PETITIONERS Ex. 1018, p. 5
`
`PETITIONERS Ex. 1018, p. 5
`
`
`
`2 OPI 2.0 Comments, in Order of
`
`Appearance
`
`%%BeginOPl:
`
`2.0
`
`Marks the beginning of an OF] 2.0 context.
`
`%%Disti|led
`
`(no keywords)
`
`%%Disti|led is included in the stream at this point if and only if the
`original PostScript language stream was converted into an Adobe
`Portable Document Format (PDF) file, and then back to a PostScript
`language stream.
`
`An OPI Consumer should use this information to reapply color to a
`colorized grayscale image, based on the CPI color comments, since the
`normal automatic color application environment created by the
`original OPI Producer is disabled in a PostScript->PDF—>PostScript
`transformation.
`
`%%lmageFileName: <fi|ename>
`
`%%ImageFileName: must be written by an OPI 2 Producer for every
`image in the stream that may be the target of OPI image substitution.
`
`This comment records the full pathname of the low—resolution proxy
`image. filename is an elementary DSC type.
`
`The low-resolution proxy image is typically a TIFF or EPS file. (Some
`applications require low-resolution proxy images to be TIFF files.)
`
`%%Mainlmage:
`
`<Main|magelD>
`<Main|magelD> ::= <textline>
`
`An OPI 2.0 Producer must write this comment if the low-resolution
`
`proxy image is a TIFF file and the lmageID TIFF tag (#32781) exists.
`
`Main/mageID is the full pathname of the original, high—resolution file,
`or any other identifying string that uniquely identifies the main image.
`The Main/magelD string is a textline, an elementary DSC type.
`
`OPl—Version 2.0
`
`PETITIONERS EX. 1018, p. 6
`
`PETITIONERS Ex. 1018, p. 6
`
`
`
`Note
`
`The high-resolution image is NOT required to he in TIFF format. It can be
`in any format that the CPI Consumer wishes to support, including Scitex
`CT, EPS, and Quark DCS files.
`
`If the low-resolution proxy image is an EPS file instead of a TIFF file,
`the ID of the main image should be stored in a %%Mainlmage:
`comment in the EPS file, typically as part of an OPI context in the EPS
`file.
`
`If the %%Mainlmage: comment does not exist, an OPI Consumer must
`do the best it can to find and link to the correct high-resolution image,
`using the name given in the %%lmageFileName: comment. If the image
`does not exist at the indicated location, the OPI Consumer can ask the
`operator to help re-link the image or use search path rules that have
`been set up ahead of time.
`
`%°/oT|FFASC|ITag:
`
`<tagnumber> <tagtext>
`<tagnumber> :2 <uint>
`(TIFF tag number, in decimal)
`<tagtext> ::= <textline>
`(contents of TIFF field)
`
`An OPIZ Producer must write this comment if the low—resolution proxy
`image is a TIFF file and if there are ASCII fields in the file. The Producer
`writes a separate comment for each TIFF ASCII field.
`
`An OPIZ Producer uses this comment convention to pass TIFF ASCII
`field values from the proxy image to an OPI Consumer.
`
`tagnumber is the TIFF tag number. It is a S-digit or less decimal number,
`and is not padded with zeros or spaces.
`
`Examples:
`
`%%TIFFASCIITag: 270 (Sunrise from Waikiki)
`%%TIFFASCIITag: 306 (1995:02:14 13:55:59)
`%%TIFFASCIITag: 316 (Apple PowerMac\250 8100)
`%%TIFFASCIITag: 33432 (Copyright\251, Carl Stevensen, 1995. All rights
`reserved.)
`%%TIFFASCHTag: 65535 (First substring.)
`%%+ (Second substring.)
`
`is the value of the corresponding TIFF
`The value of %%TIFFASCIITag:
`ASCII field. The OPI Producer must translate tagtext into textlines, an
`elementary DSC data type. 50, for example, the Producer must check
`for special characters such as carriage return and line feed and translate
`them into the correct PostScript language escape sequences (see
`sections G.4.6 and 3.2.2 in the Red Book.) The Producer must break
`
`OPI—Version 2.0
`
`7
`
`PETITIONERS Ex. 1018, p. 7
`
`PETITIONERS Ex. 1018, p. 7
`
`
`
`comment lines longer than 255 characters into multiple lines using
`the ‘%%+’ continuation convention.
`
`Note that there may be more than one substring in a TIFF ASCII field.
`In the TIFF file, each substring is terminated with a null (zero) byte.
`When written out by the Producer, each substring after the first must
`start with a separate ’%%+’ comment line.
`
`%°/olmageDimensions:
`
`<width> <height>
`<width> ::= <real>
`
`<height> ::= <real>
`
`%%ImageCropRect:
`
`<left> <top> <right> <bottom>
`<|eft>
`::= <real>
`
`<top>
`<right>
`<bottom>
`
`::= <real>
`::= <real>
`:2 <real>
`
`%%ImageDimensions: and %%|mageCropRect: together specify the
`rectangular subset of the source image that is to be mapped onto the
`unit square (and thence onto the page), where (0,0) represents the
`upper left corner of the source image.
`
`If the image has not been cropped or placed inside of a frame by the
`OPI Producer, then these comments are optional, and the entire source
`image will be mapped onto the page.
`
`0 1
`
`2
`3
`
`4 5 6 7
`
`8
`
`9 .
`10 {
`
`
`
`;
`'-—~ Image
`%%lmageDimensions: 7 10
`
`Cropping rectangle
`%%lmageCropRect: 2 3 6 9
`
`PETITIONERS Ex. 1018, p. 8
`
`OPI—Version 2.0
`
`PETITIONERS Ex. 1018, p. 8
`
`
`
`width and height give the dimensions of the proxy image, in pixels or
`any other convenient units. The values of width and height do not
`matter; the only requirement is that
`
`0 <= left < right <= width, and
`
`0 <= top < bottom <= height
`
`This information allows the CPI Consumer to improve printing
`
`performance by including only the part of the image data that is
`actually Visible after the user of a page layout application has cropped
`it or placed it inside a frame, thereby reducing print time.
`
`If sending less data is not possible, then the OPT Consumer must send
`the whole image, scale and translate the image such that only the
`cropped part of the image is mapped to the unit square.
`
`In OPI Z the Producer is responsible for setting up a rectangular
`clipping path based on the destination rectangle (actually, it could be a
`parallelogram if the image is skewed) for the image.
`
`Note 1: Any clipping from a TIFF clipping path must come after the rectangular
`clip path setting. Reversing the order greatly increases probability of
`limitcheck errors due to path complexity.
`
`Note 2: An OPI 2 Consumer must not do its own clipping, or it will run a risk of
`causing limitcheck errors due to a complex TIFF clipping path that may be
`in effect at the time.
`
`See Figure 1.
`
`%%|mage0verprint:
`
`false | true
`
`Optional. The assumed default is false.
`
`Set to true if the image is to overprint underlying objects, and false if
`the image is to knock out underlying objects.
`
`”Overprinting” means that any separations not included in the
`%%lmagelnks: list (see below) are not to be erased in the area of the
`image. This could allow, for example, a Black image to be printed on
`top of a light blue background, without erasing the inks that make up
`the light blue color. In the area of the image, you would have, say,
`
`CPI—Version 2.0
`
`9
`
`PETITIONERS Ex. 1018, p. 9
`
`PETITIONERS Ex. 1018, p. 9
`
`
`
`cyan and magenta ink as well as black ink. Overprinting can be useful
`for avoiding trapping problems, but can introduce unwanted colors if
`used indiscriminately.
`
`”Knock out” means that any separations not included in the
`%%|magelnks: list are to be erased in the area of the image. In the
`example in the previous paragraph, imaging the black image would
`erase any inks that make up the light blue background, so that only
`black ink remains in the area of the image.
`
`%%|mageOverprint: is applicable to bitmap and grayscale images only.
`
`%%|magelnks:
`
`<type> <number_ofwinks> <name_of_ink_1> <ink_1_level>
`...<namefiof,ink_n> <ink_n_level>
`
`<type>
`<number of inks>
`<name of ink n>
`<ink n |eve|>
`
`::=
`::=
`::=
`::=
`
`<monochrome | registration i fu||_co|or>
`<uint>
`<text>
`<real>
`
`Optional. The assumed default is:
`
`%%|magelnks: monochrome 1
`
`(Black) 1.0
`
`for black and white and grayscale images, and
`
`%%lmagelnks: fu||_co|or
`
`for RGB, CMYK, and CIE Lab images.
`
`%%|magelnks: lists the inks that have been applied to the image, so
`that an OPI Consumer that can perform color separations knows
`whether or not data for this image should be included on a particular
`separation.
`
`type can be monochrome, registration, or fu||_co|or (explained in detail
`below).
`
`number_of_inks is the number of inks that make up the color that has
`been applied to the image.
`
`nameiofginkm is the name of the ink.
`
`ink_n_level is the amount of that ink to be applied to black (e.g., deep
`shadow) areas of the image. 1.0 represents full (100% dot) ink coverage,
`0.0 represents none of that ink.
`
`'|0
`
`CPI—Version 2.0
`
`PETITIONERS EX. 1018, p. 10
`
`PETITIONERS Ex. 1018, p. 10
`
`
`
`monochrome
`
`For bitmap and grayscale images, use the type monochrome or
`registration.
`
`If a “spot” (i.e. "custom”) ink is applied to a monochrome image, just
`that ink will be in the ink list, so that the comment would be written
`as:
`
`%%|magelnks: monochrome 1
`
`(Rose Red) 1.0
`
`If a process color is applied to a monochrome image, then four inks
`make up the color, so the comment would be written as:
`
`%%|mage|nks: monochrome4 (Cyan) .23 (Magenta) .45 (Yellow) .10
`(Black) .02
`
`If the image uses a single process ink, such as Black, the %%|mage|nks:
`comment would list just Black:
`
`%%|mage|nks: monochromel
`
`(Black) 1.0
`
`If this Black image is to be overprinted, so that ink layers other than
`Black are unaffected, be sure to write out %%|mage0verprint: true
`before the %%|mage|nks: comment.
`
`If a “hifi” (multi-ink) color is applied to a monochrome image, then
`there can be any number of inks. For example, we might have:
`
`%%|mage|nks: monochrome 5 (Cyan) .10 (Magenta) .35 (Yellow) .50
`(Black) .05 (Red) .60
`
`A duotone can be created by applying 2 inks to a monochrome image.
`For example, we might have:
`
`%%|mage|nks: monochrome 2 (Black) .50 (Sepia) .80
`
`However, it is also generally desirable to adjust the transfer curves
`differently for each in k; such manipulations are not prohibited, but are
`beyond the scope of this specification.
`
`Alternatively, a duotone, tritone, or quadtone can be specified as a
`multi-channel image,
`in which case the appropriate %%|mage|nks:
`keyword would be fucholor.
`
`Generally, an Ol’IZ Consumer does not need to worry about applying
`colors to monochrome images, since OPIZ Producers must create the
`appropriate color environment by defining appropriate procedures and
`operators. All the OPIZ Consumer needs to do is decide whether to
`
`OPl—Version 2.0
`
`11
`
`PETITIONERS EX. 1018, p. 11
`
`PETITIONERS Ex. 1018, p. 11
`
`
`
`insert image data or not, based on whether it is doing separations or
`composite printing, which separation is currently being printed, and
`which separations are affected by this image.
`
`In particular, the OPIZ Consumer should use the OPlimage operator
`for grayscale images.) The OPIZ Producer must define the OPlimage
`operator so that the correct color is automatically applied to the image.
`
`The OPlimage Operator uses the same arguments as the standard
`PostScript language image operator.
`
`The inks listed in this comment must also be listed in the DSC
`comments %%DocumentCustomColors: or %%DocumentProcessColors:.
`
`registration
`
`If a monochrome image is to be printed on every separation, the
`comment would be written as:
`
`%%|magelnks:
`
`registration
`
`ful|_co|or
`
`For RGB, CMYK, and CIE Lab 3- or 4—component color images, or any
`image containing more than 1 component, the %%|magelnks:
`comment would be:
`
`%%|magelnks:
`
`full_co|or
`
`Note We do not directly specify a list ofinks for multicomponent, ”fucholor”
`images, since the CPI Consumer typically wants to control the process of
`converting deep RGB and Lab images into the appropriate CMYK or hifl
`output color space for the currentjob.
`
`<set the graphics state>
`
`Before %%Beginlncludedlmage, an OPI 2 Producer must set up the
`graphics state in such a way as to allow an OPI 2 Consumer to not have
`to deal with color, position, or clipping paths.
`
`An OPI 2 Producer must first invoke the PostScript operator save or
`gsave, to allow the graphics state to be restored at the end of the OH
`context.
`
`Note Using save/restore has the advantage of allowing all VM used by the
`imaging process to be recovered. In particular, the string used for buffering
`image data may be quite large for wide images, and if there are multiple
`images on a page, this can start consuming a significant amount of VM.
`On the other hand, using save/restore increases the likelihood of hitting
`
`12
`
`OP|——Version 2.0
`
`PETITIONERS EX. 1018, p. 12
`
`PETITIONERS Ex. 1018, p. 12
`
`
`
`the PostScript interpreter limit on the number of save/restore contexts that
`can be nested. gsave/grestore has a higher limit than save/restore in most
`implementations, and is faster, but VM consumption could be a significant
`issue if there are many large images on a single page.
`
`In OPI 2, the responsibility for image placement shifts from the
`Consumer to the Producer. After the save or gsave, an OPI 2 Producer
`must include PostScript language code that maps a unit square to the
`desired position, size, and rotation on the page. The Consumer is no
`longer responsible for positioning the image. This coordinate mapping
`technique is a major difference between OPI 2 and previous versions of
`the CPI specification.
`
`PostScript language code to set the color of bitmaps and grayscale
`images also goes here, as well as code to set up any clipping path that
`may be associated with the image.
`
`°/o°/oBegin|nc|uded|mage
`
`(no keywords)
`
`Required (must be written by GP] 2 Producers), whether proxy data is
`present or not.
`
`%%Begin|ncluded|mage and %%Endlncludedlmage bracket the actual
`image data and the call to the appropriate image procedure.
`
`There must be no executable code between %%Begin|ncluded|mage and
`the last %%lncludedlmageXXXX comment, %%lncludedlmageQuality:.
`
`<pixe|swide> <pixe|shigh>
`%%IncludedlmageDimensions:
`<pixe|swide>
`::=
`<uint>
`<pixe|shigh>
`:2
`<uint>
`
`Must be written by OPI 2 compliant Producers if image data is included
`between %%Begin|ncluded|mage and %%Endlncludedlmage.
`
`Do not write the %%lncludedlmageDimensions: comment if no image
`data is included. Do not write the %%IncludedImageDimensions:
`comment if the Producer does not know what the pixel dimensions
`are, which will generally be the case when the proxy image is an EPS
`file.
`
`pixelswide and pixelshigh give the width and height of the included
`image, in pixels, before cropping.
`
`OPI—Version 2.0
`
`13
`
`PETITIONERS EX. 1018, p. 13
`
`PETITIONERS Ex. 1018, p. 13
`
`
`
`These values are used by an OPl Consumer to determine if the image
`data that is present in the PostScript language file is low—resolutionv
`and hence needs to be replaced with a high-resolution version—or is
`already high-resolution and does not need to be replaced. This can
`easily be determined by comparing the %%lnc|udedlmageDimensions:
`values with the dimensions of the high-resolution image that is about
`to be placed into the PostScript language stream.
`
`The %%lnc|udedlmageDimensions: values may well not be the same as
`the %%|mageDimensions: values. For example, if a user chooses a "for
`position only” print setting, the Producer may send only a subset of
`the placed image data to the printer.
`
`°/o°/o|nc|uded|mageQuality:
`
`<qua|ity>
`<qua|ity>
`
`2::
`
`<real>
`
`Must be written by OPI Z compliant Producers if image data is included
`between %%Begin|ncludedlmage and %%End|ncludedlmage.
`
`This is the last of the %%lnc|uded|mageXXX comments. OPl 2
`Consumers can expect to find image operands and image data after
`this comment.
`
`Do not write the %%|nc|uded|mageQuality: comment if no image data
`is included.
`
`Quality can be 1.0, 2.0, or 3.0.
`
`A quality of 10 means that the included image data has definitely been
`subsampled, so that an OPI Consumer should make every attempt to
`substitute higher—resolution image data.
`
`There are at least two conditions that should cause an OPI Producer to
`
`set a quality value of 1.0:
`
`(1) The 0P1 Producer has subsampled the version of the image that
`was imported into it.
`
`(2) The image imported by the OPI Producer is a TIFF file, the
`OPIProxy tag (#351) was present in the TIFF file, and the value of
`the OPIProxy tag is 1. This marks the image as a low-resolution
`proxy image.
`
`A quality of 2.0 means that the included image data was the highest
`resolution that could be found by the CPI Producer, but a higher
`
`14
`
`OPI—Version 2.0
`
`PETITIONERS EX. 1018, p. 14
`
`PETITIONERS Ex. 1018, p. 14
`
`
`
`<|mage Operands 8t Data>
`
`resolution version may exist elsewhere. An OPI Consumer should
`attempt to replace it with a higher—resolution version if possible, but
`not finding a higher—resolution version may not be a fatal error.
`
`A quality of 3.0 means that the included image data is certain to be
`sufficient for final printing. An OPI Consumer should not replace the
`included image data with new image data.
`
`An Ol’l Consumer should be prepared to do something reasonable even
`if the value for quality is something other than 1.0, 2.0, or 3.0.
`
`If image data is included, it goes here, along with a call to the desired
`form of the image operator and its operands.
`
`The image matrix must be set to [w 0 0 h neg 0 h], where wand h are the
`width and height of the image, in pixels. (This assumes that the visual
`top of the image is the first scan line. If the visual top of the image is
`the last scan line, use [w 0 O h 0 h].) This causes the image to map itself
`onto the unit square. As mentioned above, the Ol’l Producer must have
`previously set up the appropriate transformation to map the unit
`square onto the correct place on the page. In contrast to the 0P1 1.3
`conventions, this OH 2 convention allows an OPI Consumer to not
`have to know or care where the image goes on the page.
`
`If the low-resolution proxy image is an EPS file, PostScript language
`code to map the EPS file to the unit square goes here, before the EPS
`data. Code to map an EPS file onto the unit square might look
`something like:
`
`[A O O D E F] concat
`
`where A : 1/(urx-IIX), D = l/(ury—lly), E = -||x/(urx-|lx), F = —||y/(ury-lly),
`
`and (llx,|ly),(urx,ury) are the %%BoundingBox: coordinates of the EPS
`file.
`
`if you prefer to think about it in 2 separate operations, and
`Or,
`remembering that the concat operator tare-multiplies the new matrix
`with the CTM, so that we must do the operations in right-to-left order:
`
`l/(urx-le) l/(ury—lly) scale
`-||x -||y translate
`
`Producers must not put anything between %%lnc|udedlmageQua|ity:
`and %%End|nc|udedlmage that is intended to apply to 3 replaced high-
`
`OPl—Version 2.0
`
`15
`
`PETITIONERS EX. 1018, p. 15
`
`PETITIONERS Ex. 1018, p. 15
`
`
`
`resolution image, since everything between these two comments is
`stripped out by an OP] Consumer.
`
`If image data is included in the file, the data and the call to the image
`operator must be surrounded by the %%Begin(End)Data comments; see
`the DSC document. These comments allow the OPI Consumer to scan
`
`quickly to the end of the image data, and not get confused by trying to
`scan binary data. These comments must not be written if no data is
`included.
`
`%%End|nc|udedlmage
`
`(no keywords)
`
`Required, whether proxy data is present or not.
`
`This marks the end of the OP] 2 included image data.
`
`See 0/o%Begin|nc|uded|mage.
`
`%%EndOP|
`
`(no keywords)
`
`%%EndOP| must be written by OPI 2 Producers.
`
`This marks the end of the OPI 2 context.
`
`See %%BeginOPI:.
`
`Following %%EndOPl, the CPI Producer must call the PostScript
`operator restore, 0r grestore, to restore the interpreter state to its
`condition prior to the %%BeginOPI: comment.
`
`16
`
`OPl—Version 2.0
`
`PETITIONERS EX. 1018, p. 16
`
`PETITIONERS Ex. 1018, p. 16
`
`
`
`3 Requirements for OPI Producers
`
`An 0P1 Producer can be any program that either creates a PostScript
`language stream containing OPI comments, or adds or changes OPI
`comments in an existing stream. The initial OPI Producer is typically a
`page layout or illustration program, but it could also be an OPI server
`that wishes to create EPS proxy images using OPI 2 comments.
`
`The requirements for OH 2 Producers have changed significantly from
`OPI 1.x requirements, to reduce the effort required to design and
`implement an OPl Consumer.
`
`The PostScript language file created by an OPl 2 Producer must
`conform to the following requirements:
`
`Document Structuring Conventions. PostScript-language files
`containing OP] 2 comments must adhere to the Document Structuring
`Conventions, version 3.0 or later. See Appendix G, "Document
`Structuring Conventions—Version 3.0,” in the PostScript Language
`Reference Manual, Second Edition, or Adobe Technical Note #5001,
`“Document Structuring Conventions, Version 3.0.” In this
`specification, we use the abbreviation “DSC” to refer to the Document
`Structuring Conventions.
`
`The Backus-Naur form (BNF) used in the DSC 3.0 document is also
`used in this specification.
`
`Color Separation Conventions. The color separation conventions
`provide guidelines for structure and content of PostScript language files
`for use in color separation environments. The current version does not
`require the use of PostScript Level 2 separation facilities. See Adobe
`Systems' “Proposal for Color Separation Conventions for PostScript
`Language Programs, ” Technical Note #5044, for further information.
`
`Prepare the graphics state. An OPI 2 Producer must set up a number
`of aspects of the graphics state before the %%Beginlncludedlmage
`comment, so that the OPI Consumer does not have to deal with them.
`In particular, the OPI 2 Producer must:
`
`0
`
`set up a rectangular clipping path around the image. (The rect-
`angle becomes a parallelogram if the image is skewed.)
`
`CPI—Version 2.0
`
`17
`
`PETITIONERS EX. 1018, p. 17
`
`PETITIONERS Ex. 1018, p. 17
`
`
`
`-
`
`-
`
`-
`
`-
`
`-
`
`set up the coordinate system (CTM) so that a unit square gets
`mapped to the correct position, scale factor, skew, and rotation of
`the image on the page.
`
`create PostScript language instructions that will apply the correct
`color to a monochrome image, following the standard color
`separation conventions for findcmykcustomcolor, setcustomcolor,
`customcolorimage, and so on.
`
`In particular a procedure named OPlimage must be defined by an
`OPI 2 Producer. The OPlimage procedure is used by both Producer
`and Consumer for all grayscale images. The parameters for
`OPlimage are the same as for the Level 1 image operator, but it
`should call customcolorimage, using previously set color informa-
`tion.
`
`create PostScript language instructions to set up a clipping path
`for a TIFF file that contains a clipping path. Use
`%ADBBegin|mageC|ipPath and %ADBEnd|mageClipPath (no argu—
`ments) to encapsulate the clipping path, since an OPI Consumer
`may want to replace it with a higher-resolution version.
`
`create PostScript language instructions to effect any changes made
`to the lightness or contrast of a monochrome image, typically by
`setting up the appropriate transfer function. Be careful to prepend
`to the current transfer function.
`
`create PostScript language instructions to effect any changes made
`to the screen frequency or spot function of an image.
`
`The OPI 2 Consumer does not have to worry about any of these things.
`The only things an OPI Consumer must do are find the high—resolution
`image, decide whether the image is of a higher resolution than any
`image data already in the PostScript language stream, and, if so, insert
`the high resolution image data into the PostScript language stream,
`replacing any lower—resolution data.
`
`OPI 2.0 vs OPI 1.x. It is up to the OPI Producer whether or not to write
`out both OPI 1.x and OPI 2 comments. it is possible to create a
`PostScript language stream that is readable by both OPI 1.x and OP] 2
`Consumers. See Example 2 below in the Examples section.
`
`We anticipate that Adobe applications will discontinue support for OPI
`1.x comments as soon as the major Producers and Consumers have
`switched over to OPI 2.
`
`18
`
`OPI—Version 2.0
`
`PETITIONERS EX. 1018, p. 18
`
`PETITIONERS Ex. 1018, p. 18
`
`
`
`Composite vs separated PostScript language streams. OPI was
`originally designed for use with composite color files. However some
`prepress applications now use 01’] with separated PostScript language
`streams, so that they can avoid dealing with the intricacies of
`p