summaryrefslogtreecommitdiff
path: root/pcl/Anomalies.txt
diff options
context:
space:
mode:
Diffstat (limited to 'pcl/Anomalies.txt')
-rw-r--r--pcl/Anomalies.txt937
1 files changed, 937 insertions, 0 deletions
diff --git a/pcl/Anomalies.txt b/pcl/Anomalies.txt
new file mode 100644
index 000000000..3a7406ffe
--- /dev/null
+++ b/pcl/Anomalies.txt
@@ -0,0 +1,937 @@
+Overview:
+
+Though designed to emulate the HP Color LaserJet 5/5M, there are several areas
+where the behavior of the Artifex interpreter differs from that device. The
+first part of this document provides an overview of these differences, and
+the second part notes specific examples in the PCL 5c FTS where the differences
+between the Artifex interpreter and the HP implementation are apparent.
+
+Overview:
+
+ Fonts
+ Since the release of the LaserJet III in 1989, successive printer products
+ from HP have shifted away from using bitmap fonts toward scalable fonts,
+ originally using Intellifont fonts and more recently TrueType fonts (using
+ the InfiniFont packaging technique). The Color LaserJet 5/5M represents an
+ intermediate stage in this development. It has a single bitmap font (line-
+ printer), a primary set of scalable fonts in Intellifont format, and an
+ additional set of fonts in TrueType format.
+
+ Artifex is not a font vendor, and the default set of fonts offered with the
+ interpreter is not meant to exactly emulate the offerings of an HP product.
+ In addition, the default font set corresponds to a later stage in the
+ evolution of HP products; more similar to the monochrome LaserJet 5/5M and
+ the LaserJet 6P than the Color LaserJet 5/5M (which more closely resembles
+ the font offering of the monochrome LaserJet 4 series). Though the set of
+ typeface "names" that are supported is similar, the format in which these
+ fonts are stored and some aspects of the supported character set vary.
+
+ This discrepancy in font offerings has many visible manifestations, most of
+ them quite minor. Some of the more obvious differences are:
+
+ 1. Spacing.
+
+ Not all of the proportionally spaced fonts in the default set match
+ the spacing (advance width) of the corresponding fonts provided
+ by HP. This is most often visible when lines of text are set up to be
+ clipped at the right margin (rare in applications but more common in
+ the FTS), or when the automatic line wrap feature is used.
+
+ 2. Adherence to requested height and/or (fixed-width) space.
+
+ In normal operation, a PCL document does not directly specify which
+ fonts are to be used for a given block of text. Rather, the document
+ will specify a set of font properties which the interpreter attempts
+ to match as best possible given the set of available fonts (the rules
+ which define a "best" match are quite specific). Among the properties
+ specified are the height of the font and, in the case of a fixed-pitch
+ font, the character pitch.
+
+ All of the fonts provided in the default set for the Artifex
+ interpreter are scalable, hence all will exactly adhere to the
+ requested font size and/or pitch. In situations where a bitmap font
+ would, instead, be used by an HP printer, only an approximate match
+ may be available for font size/pitch. Hence, the size of text
+ rendered by the Artifex interpreter may differ from that of an HP
+ printer.
+
+ 3. Interaction with downloaded symbol sets.
+
+ All of the fonts in the Artifex default set are TrueType fonts, which
+ make use of the Unicode font encoding scheme. Intellifont fonts, such
+ as the base set provided with the Color LaserJet 5/5M, make use of a
+ different font encoding scheme known as MSL. (In principle there is no
+ connection between a font's scaling technology and its encoding scheme,
+ but in practice all Intellifont fonts use the MSL scheme and all
+ (unbound) TrueType fonts use the Unicode scheme.)
+
+ In PCL, a user defined (downloaded) symbol set may apply to either the
+ Unicode or the MSL encoding scheme, but not to both. Hence, a downloaded
+ symbol set that uses the MSL encoding can be used with the base font
+ set of the Color LaserJet 5/5M, but not with fonts provided with the
+ Artifex interpreter. Conversely, any downloaded symbol set that uses
+ the Unicode encoding can be used with the base font set of the Artifex
+ interpreter, but not the Color LaserJet 5/5M.
+
+ Because support for the currently selected symbol set is the highest
+ priority selection parameter in the PCL font selection mechanism, this
+ difference in font format can have dramatic effects, as is evident in
+ some of the 5c FTS tests.
+
+ 4. Font scaler anomalies
+
+ The set of Intellifont fonts distributed by Agfa includes fonts with
+ some "malformed" character outlines (outlines that do not adhere to the
+ documented format). These outlines are handled differently by the
+ HP Intellifont scaler and the scaler provided with the Artifex
+ interpreter. For example, in the 5c FTS, the lower case 't' in the
+ Park Avenue font has a malformed outline, and its rendering with the
+ Artifex interpreter is quite different (i.e., distorted) from that
+ produced by an HP interpreter.
+
+ Rendering Methods/Halftones
+
+ HP's documentation identifies 20 different "rendering algorithms" that can
+ be selected on an object-by-object basis. For the most part these rendering
+ algorithms represent different halftones, though certain rendering
+ algorithms also specify color mapping (in particular, color to monochrome
+ conversion).
+
+ No actual devices support all 20 algorithms. For any given device, many
+ algorithms are mapped to others, so that no more than 6 to 12 unique
+ algorithms are supported. This remapping respects color transformations:
+ a monochrome algorithm may be remapped to another monochrome algorithm but
+ not to a color algorithm, and vice-versa. Hence, the remapping of render
+ algorithms is essentially a mechanism for selecting amongst different
+ halftones.
+
+ Halftones for PCL 5c devices fall into two categories: "predictable" and not
+ "predictable". Prior to the release of the Color LaserJet 5/5M, all PCL 5c
+ halftones were predictable: all halftones were based on threshold arrays
+ (HP's documentation terms such halftones "ordered dithers", because they
+ have a monotonicity or "order" property), and the same halftone was used on
+ all devices. (Strictly speaking, there is "upward compatibility": some
+ devices offer more halftones than others, but when a halftone is offered on
+ multiple devices it is the same.)
+
+ The Color LaserJet 5/5M completely broke with this tradition, and offered
+ only "unpredictable", or device specific, halftones. This was accomplished
+ by adding five new halftone algorithms to the previously existing set of 15,
+ and on the Color LaserJet 5/5M, remapping all of the existing algorithms
+ that require halftoning (algorithms 1 and 2 do not) to these five.
+
+ The "predictability" of a halftone is potentially of great significance in
+ PCL 5c, because of the manner in which HP chose to implement raster
+ operations. These are defined on a pixel-by-pixel basis after halftoning
+ (at least, where such a definition is possible; see the contone discussion
+ below for further information). Hence, when using raster operations to
+ combine objects rendered with two different halftones, the order in which
+ a halftone darkens pixels is of great significance: given two objects of
+ approximately 50% intensity and an exclusive-or raster operation, the
+ resulting region may be solidly colored, fully white, or anything in
+ between.
+
+ The Artifex interpreter provides the full set of rendering algorithms that
+ use "predictable" halftones, and except for the case of the noise ordered
+ dither, the halftone used is identical to that used by HP devices prior
+ to the Color LaserJet 5/5M. The halftone provided for noise-ordered
+ dither is only roughly similar to that provided by HP, but this should
+ not cause a problem in practice. Though in principle "predictable", the
+ noise ordered dither used on HP devices is so large (128 x 128 pixels)
+ that no application could reasonably take advantage of its ordered
+ property.
+
+ The Artifex interpreter provides no device-specific halftones because it
+ is impossible to know a priori what output device it will be used with.
+ Mechanisms are provided to allow device-specific halftones to be assigned
+ to specific rendering methods--see the accompanying interface description
+ for more information. All of the rendering algorithms that would normally
+ use a device specific halftone have been remapped to a method that uses
+ a predictable halftone. A mechanism is available for modifying this
+ mapping; again, see the interface document for details.
+
+ The Artifex interpreter supports user-downloaded threshold (dither) arrays,
+ which are supported by all recent HP color devices except the Color
+ LaserJet 5/5M. If desired, this support can be disabled by remapping the
+ corresponding render algorithms (9 and 10) via the mechanism noted above;
+ by default, however, these are not remapped.
+
+ In practice, this implies that halftoned output produced by the unmodified
+ Artifex PCL 5c interpreter will have a very different appearance from that
+ produced by the Color LaserJet 5/5M, even when the former is output on the
+ 5/5M. (There are also other complications, which are described further
+ below.) In general, the output from the Artifex interpreter will be similar
+ to that of the original Color LaserJet and the HP DeskJet 1200 and 1600
+ C/CM printers. This is a reflection of a different configuration rather
+ than a fundamental difference in the interpreter.
+
+ Raster Operations, device pixel depth
+
+ In any industry that undergoes rapid technological evolution, any technical
+ term that becomes significant for purposes of marketing tends to lose its
+ technical meaning, as manufacturers shift the definition to show their
+ products in the best light. Such has been the case for the term "resolution"
+ when used with respect to inkjet and laser printers.
+
+ HP does not provided a resolution specification for the Color LaserJet 5/5M.
+ It does, however, claim "1200 dpi" equivalent performance, via the use of
+ "resolution enhancement technology" (RET).
+
+ Based on the traditional metric, namely, the thinnest horizontal and
+ vertical pure color line that can be drawn, the Color LaserJet 5/5M is
+ a 300 dpi device. The resolution enhancement technology used by HP
+ provides for more rapid modulation of the laser in the fast-scan
+ direction (the long edge of a letter or A4 page). This is used as part of
+ a halftoning technique that produces thinner lines in the slow-scan
+ direction than would be indicated by the 300 dpi resolution. This makes
+ the printer somewhat of a contone device, with between 8 and 16 levels
+ per pixel in each color plane.
+
+ Based on empirical evidence, HP does not make use of this contone capability
+ in a direct manner. Rather, the level used for a specific pixel is based
+ both on the color of that pixel and on the colors for a small number of
+ nearest neighbor pixels. A likely reason for this is that PCL rasters are
+ traditionally bi-level in each color plane (this is true for all of the
+ default or "fixed" color palettes), and the printer will only support
+ input resolutions to 300 dpi.
+
+ A side-effect of this arrangement is to make the effect of general raster
+ operations completely unpredictable; indeed, much less predictable than
+ would be indicated by usage of "unpredictable" halftones. For actual
+ applications this is almost never visible, but in several of the tests
+ in the PCL 5c FTS, the results on the Color LaserJet 5/5M bear only
+ slight resemblance to what is documented and what is produced by other
+ PCL 5c printers. In these cases, the Artifex PCL 5c interpreter
+ follows the documentation, as the results produced by the CLJ 5/5M seem to
+ be extremely specific to that device.
+
+ Color Correction
+
+ The Color LaserJet 5/5M provides sets of two device dependent and three
+ device independent color spaces. One of the latter is not, however, a fully
+ device independent color space: the "Colorimetric RGB" space is documented
+ as a device independent color space but is implemented as a set of lookup
+ tables based on the device-dependent RGB space (all above board: this
+ arrangement is noted in the documentation).
+
+ The implementation of the device dependent color spaces is simple enough,
+ with the exception of some peculiar color correction applied to the fixed
+ color spaces. The latter is discussed below. The implementation in the
+ Artifex code matches that of the Color LaserJet 5/5M quite closely in this
+ area, with the exception of the color correction anomaly.
+
+ The device independent color spaces are another matter entirely. Nothing can
+ be said directly about the "Colorimetric RGB" space since this is not
+ actually supported. The documentation for this format does, however, include
+ several parameters whose significance is, at best, obscure. The definition
+ of the chromaticities of the primaries is straightforward enough, and the
+ specification of gamma parameters for the components is reasonably
+ standard (though why the language provides for both a per component gamma
+ specification and a per-component, per-color-space lookup table is less
+ clear). The gain parameter, on the other hand, is not standard, and we
+ could find no description in the literature as to what it might mean. Based
+ on empirical work using the luminance-chrominance color space (which uses
+ the same parameter for its base color space), we have implemented the
+ gamma and gain parameters as:
+
+ out = 1.0 - (1.0 - pow(in, 1/gamma)) / gain
+
+ The CIE L*a*b* color space provided by the Color LaserJet 5/5M is also
+ somewhat peculiar. Its most unusual property is that an L* value 0 does not
+ yield black but rather a fairly solid red. This leaves one at somewhat of a
+ loss as to what the L* parameter is intended to correspond to. In any event,
+ after prior discussions with the OEM customer, the Artifex interpreter
+ was built to use the CIE specified conversion from L*a*b* to XYZ (the
+ color rendering dictionary converts the latter to device colors). The
+ difference between the two is visible in several of the tests of the PCL
+ 5c FTS.
+
+ The default color correction information provided with the Artifex
+ interpreter assumes the output device has uncorrected SMPTE primaries. This
+ is, of course, not likely to be correct for any actual output device. The
+ output observed using device independent color spaces will be incorrect
+ unless a suitable color rendering dictionary has been installed. How this
+ may be accomplished is described in the accompanying interface document.
+
+ Device dependent color correction
+
+ The fixed or "simple" color space palettes provided with the Color LaserJet
+ 5/5M are ostensibly variations of the device-dependent RGB color space.
+ However, unlike the latter, the "simple" color spaces produce different
+ results when used for raster as opposed to geometric objects: red becomes
+ orange, green becomes notably lighter in shade, cyan becomes nearly blue,
+ and blue becomes deep purple. This effect is quite noticeable and is only
+ present on the Color LaserJet 5/5M; other HP printers do not show this
+ effect.
+
+ Because rasters rendered with the simple color spaces generate output much
+ more "quickly" than rasters generated with the equivalent writeable color
+ palette by a factor of about 3, it is our belief that the simple color
+ space raster palettes represent the true colors of the device primaries,
+ and that color correction is applied to colors used with geometric objects
+ to make them more nearly match what is expected of these colors.
+
+ The Artifex PCL 5c interpreter does and, and indeed cannot, provide the
+ same form of correction. In the 5c interpreter, geometric and raster
+ objects that use the same color will have identical appearance. Hence,
+ rasters produced with simple color space in the Artifex interpreter will not
+ have the same appearance as those produced by the Color LaserJet 5/5m.
+
+ View Illuminant
+
+ For reasons that are likely specific to the implementation, the view
+ illuminant setting on the Color LaserJet 5/5m only affects rasters, not
+ geometric objects. The Artifex interpreter does not replicate this
+ behavior: the view illuminant setting affects all output. This leads to
+ different output on one of the tests of the PCL 5c FTS.
+
+ Default Colors
+
+ HP specifies that up to the first eight entries of each palette be given
+ a set of default, device dependent primary colors. Furthermore, these colors
+ are not affected by color lookup tables for the device independent color
+ spaces, but are affected by lookup tables for the appropriate device
+ dependent color space.
+
+ This effect is difficult to achieve given the design of the Artifex
+ interpreter and its underlying graphic library. The effect is also of
+ questionable merit: why use a device-dependent default color with a
+ device independent color space? Hence, in the Artifex interpreter, the
+ default colors used with device independent color spaces are themselves
+ device independent, and are affected by all applicable color lookup
+ tables.
+
+ Transparency
+
+ The implementation of transparency in the Artifex PCL 5c interpreter
+ closely follows that of HP interpreters, with one major exception. In HP
+ interpreters, the determination of which colors are white is made at the
+ device level, immediately before dithering. In the Artifex interpreter,
+ the same determination is made at the source color level, after consider-
+ ation of the black and white reference points but before any other color
+ transformation. This is arguably a bug but one that is difficult to remedy
+ given the design of the underlying graphic library.
+
+ In practice, this difference is not visible in application files, and is
+ visible in test files in only two cases: when using an inverting color
+ lookup table, and when using rendering algorithm 2 (map black to white and
+ all other colors to black). Both of these situations arise in a small
+ number of tests in the PCL 5c FTS.
+
+ Pixel Placement
+
+ Though the definition of pixel placement is consistent across all PCL 5c
+ implementations from HP, the set of objects affected is not. In all cases
+ pixel placement affects rectangles in PCL and polygon fills in GL, and do
+ not affect PCL rasters. For all devices except the Color LaserJet 5/5M,
+ pixel placement does not affect text; this is also the documented behavior.
+ For the CLJ 5/5M, pixel placement affects the rendering of scalable fonts,
+ but does so in a manner not consistent with its effects on other objects
+ (an extra pixel is added on each side of the character, as opposed to just
+ the right and bottom sides).
+
+ The Artifex PCL 5c interpreter adheres to the documented behavior: only
+ PCL rectangles and polygon fills in GL/2 are affected by pixel placement
+ (currently there is a bug that causes the pixel placement command in
+ GL/2 to have incorrect behavior, but the design intent is as stated).
+
+ Driver configuration parameters
+
+ The Artifex PCL 5c interpreter does not implement the driver configuration
+ command. This causes several tests near the end of the PCL 5c FTS to
+ produce different results than is the case for the Color LaserJet 5/5M.
+
+
+
+Difference in specific tests of the PCL 5c FTS
+
+54:
+
+ The line "12345..." is printed in an 8 pt. version of the default
+ proportionally spaced font. In the Artifex interpreter, this is a Times
+ font, as it is for the Color LaserJet 5/5M, but not with the same spacing.
+
+65, 75, 85, 95, 103:
+
+ The raster in each of these tests is printed in a "simple" color space
+ (fixed palette). As described above, the colors in these color spaces
+ vary between geometric objects and rasters for the Color LaserJet 5/5M,
+ but not for the Artifex interpreter. Hence, the colors for the raster
+ will appear different in the two interpreters.
+
+140, 143:
+
+ The vertical bar character is from the bitmap lineprinter font on
+ the HP and from the Courier font on the Artifex interpreter, hence
+ the differences in the length of the bars.
+
+273, 274, 275, 276, 284, 285, 286:
+
+ Symbol set differences.
+
+310, 320:
+
+ These two panels are printed with the printer's "line printer" font.
+ On the HP DJ 1600C/CM and the CLJ 5/5M, this is a bitmap font that is
+ not scalable and is offered in only one size, hence its size does not
+ change with pitch. On the Artifex system, the scalable Courier font is
+ substituted for the line printer font. This font does change pitch as
+ requested in the tests.
+
+403, 412:
+
+ The Univers Condensed font provided with the Artifex PCL interpreter
+ has all characters condensed. In the version of the same font provided
+ by HP, certain "universal" characters (characters that are independent
+ of font style), are not condensed.
+
+411 (et. al.):
+
+ The lower case 't' in the downloaded Park Avenue font contains a malformed
+ outline. This is handled differently by the Intellifont font scaler
+ provided with the Artifex PCL interpreter than by the scaler provided with
+ HP PCL implementations.
+
+422:
+
+ The default vertical offset applied to floating underlines by the Artifex
+ PCL interpreter is not the same as that provided by HP PCL interpreters.
+
+441 - 443, 450 - 512:
+
+ The fonts provided with the Artifex PCL 5 interpreter are TrueType fonts,
+ which use the Unicode encoding scheme. The corresponding fonts in the
+ Color LaserJet 5/5M are Intellifont fonts, which use the MSL encoding
+ scheme. Thus, downloaded symbol sets that use the MSL coding scheme
+ can be used with the resident fonts of the Color LaserJet 5/5M, but not
+ with the resident fonts provided with the Artifex interpreter. Similarly,
+ downloaded symbol sets that use the Unicode encoding scheme can be used
+ with fonts provided with the Artifex interpreter, but not with those
+ provided with the CLJ 5/5M.
+
+520, 521:
+
+ Symbol set discrepancies.
+
+680 - 682:
+
+ These rasters are generated in a simple color space, and thus have the color
+ anomalies described in the first section of this document.
+
+701:
+ The length of the bitarray for the third and fourth pair of raster
+ (magenta and yellow) differ from those on the HP CLJ 5/5M.
+
+ The output of the Artifex interpreter matches that of the HP DJ 1600C/CM.
+ The output of the CLJ 5/5M is contrary to the documentation, and likely
+ a limitation of the particular implementation due to the interaction
+ between rasters and the hardware dither method.
+
+714:
+
+ On the Color LaserJet 5/5M, two of the white gaps between the cyan lines
+ appear to be wider than the others (after the 48th line and 98th cyan
+ lines). These larger gaps are not present in the input data, and are
+ probably due to a resonance phenomenon between the raster and the
+ resolution enhancement technology used by the CLJ 5/5M. This behavior
+ is not reproduced in the Artifex PCL 5c interpreter.
+
+721:
+
+ This raster are generated in a simple color space, and thus has the color
+ anomalies described in the first section of this document.
+
+722:
+
+ On the Color LaserJet 5/5M, the first of the shorter, magenta raster lines
+ appears to be thinner than the others. In the input data all of the lines
+ are the same width, and there is no apparent reason for the thinness of
+ the first line. The Artifex PCL 5c interpreter does not replicate this
+ anomaly.
+
+750:
+
+ In the third row, the row with the greatest reduction in scale, the first
+ (thinnest) bar of the raster completely disappears on the Color LaserJet
+ 5/5M, but not with the Artifex PCL 5c interpreter.
+
+ Whether a given artifact of a raster appears or disappears when scaled down
+ is a property of the specific raster scale implementation used. There is
+ no reason to expect the results to be the same across two implementations,
+ and little reason to try to make them the same.
+
+765:
+
+ The output produced by the Artifex interpreter appears to be correct and
+ agrees with the output of the DJ 1600C/CM. The output on the CLJ 5/5M
+ differs, quite probably due to a physical limitation of the printer.
+
+ This example involves scaled PCL rasters. Such rasters are clipped to the
+ the page's printable region. In PCL, a page is always assumed to have a 1/6"
+ unprintable margin. For this test all three of the rasters present are
+ scaled by a factor of 14.5. The middle (green) raster in the example has a
+ width of 25 samples, and is placed 205 pixels to the left of the right
+ printable margin. Hence, all of the first 14 samples should be visible
+ (14 * 14.5 = 203), as well as two pixels of the 15th sample.
+
+ In this test, all raster sample lines are the same, and consist of the
+ following pattern (0 == white, 1 == color, either dark blue or green):
+
+ 0000 0001 0000 0011 0000 0111 0
+
+ Hence, the 15th sample value is colored, and a two-pixel-wide sliver of this
+ sample should be visible.
+
+800 - 804:
+
+ Each of the "bars" in these test are rendered in a different color space,
+ in the sequence RGB, CMY, Colorimetric RGB, CIE L*a*b*, Luminance-
+ Chrominance. The final three bars are in device independent color spaces,
+ hence their appearance will vary based on the color rendering
+ dictionary provided.
+
+ Note also that fourth bar in tests 800 and 803 reflect the implementation
+ of the CIE L*a*b* color space in the Color LaserJet 5/5M, which renders
+ colors with the value of L* = 0 as red rather than black.
+
+811
+
+ Each raster in this example is rendered in a different color space, in the
+ sequence RGB, CMY, Colorimetric RGB, CIE L*a*b*, and Luminance-Chrominance.
+ Hence, the appearance of the last three rows will depend on the color
+ rendering dictionary provided. For the fourth raster, the different
+ implementations of the CIE L*a*b* color spaces is also evident.
+
+813:
+ The first two rasters are printed in RGB and CMY color spaces, with the
+ white and black points reversed. Due to an error in the implementation
+ of transparency in the CLJ 5/5M, this causes BOTH white and black to be
+ considered transparent, which in turn causes the center region to be
+ fully transparent.
+
+ The Artifex implementation does not have this bug, hence either the
+ black triangles or the black background of this region is visible.
+
+ The additional three rasters are printed in device-independent color spaces,
+ hence their appearance is dependent on the color rendering dictionary
+ provided.
+
+830, 831:
+
+ A number of differences between the Artifex PCL 5c interpreter and the
+ CLJ 5/5M are visible in these tests:
+
+ 1. The Artifex PCL 5c interpreter, in its default form, supports the
+ rendering methods with predictable halftones, and does not support
+ the rendering methods with unpredictable or device-specific halftones.
+ The CLJ 5/5M has the reverse arrangement. In particular, the Artifex
+ interpreter supports user downloaded dithers, which the CLJ 5/5M
+ does not.
+
+ 2. The Artifex PCL 5c interpreter determines which pixels are "white"
+ for purposes of transparency prior to the effects of the color mapping
+ implied by the rendering algorithm; the CLJ 5/5M makes this same
+ determination after such color mapping. This is most visible in the
+ case of render algorithm 2 (prominent horizontal black lines in both
+ tests), where the output from the Artifex interpreter is transparent
+ while that of the CLJ 5/5M is opaque.
+
+ 3. The Artifex PCL 5c interpreter, in common with most HP implementations
+ of PCL 5c, implements render algorithm 1 (snap to primaries) after
+ applying gamma correction. The CLJ 5/5M is exceptional in this area in
+ snapping the colors to primaries before applying gamma correction.
+ Hence, when using render algorithm 1, the output of the Artifex
+ interpreter (and most HP PCL 5c interpreters) is always a solid
+ primary color, while for the CLJ 5/5M it may be a halftoned color.
+ This difference is visible in the latter part of test 831.
+
+ 4. The final two columns of tests 830 and 831 represent a non-solid
+ raster object combined with a non-solid foreground, using logical
+ operation 252. Especially for the larger gamma values, the appearance
+ of the result is critically dependent on the nature of the halftones
+ used for the raster and the foreground. In the Artifex PCL 5c
+ interpreter, the halftones used cause these regions to become white
+ more rapidly than is the case for the CLJ 5/5M.
+
+833:
+
+ Each pair of lines in this example constitutes a pair of rasters. The
+ data for each raster pair is the same, only resolution is changed.
+ A bug in the CLJ 5/5M interpreter, also evident in test 701, results in
+ the improper rendering of raster output at 100 and 150 dpi in some
+ situations. The Artifex PCL 5c interpreter does not mimic this bug,
+ hence the different appearance of the output.
+
+853:
+
+ The modified render algorithm referred to in the fourth line of this test
+ is render algorithm 10, monochrome user defined dither. This render method
+ is supported by the Artifex PCL 5c interpreter (in its default form),
+ but not by the CLJ 5/5M. Hence the different appearance. Note also that
+ the final foreground for the fourth line is used to draw the text for
+ the final, fifth line of the test, so its appearance is modified as well.
+
+860 - 865:
+
+ See discussion for test 830 and 831.
+
+866:
+
+ The different appearance of this test between the Artifex PCL 5c
+ interpreter and the Color LaserJet 5/5M is due to the different halftones
+ used.
+
+871:
+
+ The final three rows of rectangles in this example are rendered in a device
+ independent color space, hence their appearance will depend on the nature
+ of the color rendering dictionary provided. In the default configuration,
+ these rectangles have a yellow hue where white would be expected.
+
+883:
+
+ The output from the Artifex PCL 5c interpreter matches the documented
+ behavior, and the behavior of HP implementations other than the CLJ 5/5M.
+ For reasons that are not clear, the CLJ 5/5M will print a faint outline
+ of "Text" for the rightmost instance of this string in the first line
+ of the test. Examination under magnification reveals that this outline
+ is smaller than the design resolution of the device, so this may be a
+ print engine artifact.
+
+956:
+
+ The rectangle on the right is printed with a transparent pattern. This
+ produces the expected output on the HP 1600C/CM and with the Artifex PCL
+ interpreter. It does not produce the expected output for the HP CLJ 5/5M,
+ apparently due to a bug.
+
+
+974:
+
+ See the discussion for test 830. This particular example also demonstrates
+ a situation in which different color mapping methods are being used for the
+ foreground and the raster being printed. For reasons that are not yet
+ clear, this (highly unusual) combination is not properly supported by the
+ graphic library underlying the Artifex PCL 5c interpreter.
+
+980, 981:
+
+ 1. The raster operation mechanism of the CLJ 5/5M is broken, and thus
+ cannot be used as a reliable comparison (see notes at the start of
+ this document).
+
+ 2. The implementation of opaque text for scalable fonts in the
+ Artifex PCL 5c interpreter is somewhat imperfect. The implementation
+ requires both inside and "outside" of a path to be filled, in
+ independent operations. The two filled regions do not join exactly,
+ hence a faint outline of the original character is usually visible.
+
+ 3. When compared to the documented behavior, the behavior of the Artifex
+ interpreter varies in some of the opaque source, transparent pattern
+ cases. We have not yet analyzed why this is the case, but do not
+ expect it to cause difficulty in practice.
+
+983:
+
+ The behavior of the Artifex PCL 5c interpreter matches the documented
+ behavior, and the behavior of HP devices other than the CLJ 5/5M. Raster
+ operations on the CLJ 5/5M are broken.
+
+1053:
+
+ The behavior of the Artifex PCL 5c interpreter matches the documented
+ behavior, and the behavior of HP devices other than the CLJ 5/5M. The
+ behavior of the CLJ 5/5M is apparently a bug.
+
+1074 and 1084:
+
+ The artifex interpreter's implementation of fill type 3 and 4
+ (FT) differs slightly from HP. Artifex gl/2 vector fills always
+ radiate away from the origin in plotter units space. This can
+ cause slight discrepancies as evidenced in these two frames.
+
+1070:
+ The artifex interpreter always fills along +x and +y for hpgl/2
+ vector fills. HP apparently fills in a direction related to the
+ direction of the graphical objects. We believe our interpretation
+ is follows the HP spec.
+
+1272:
+
+ The gl/2 interpreter places scalable characters slightly to the
+ left, the discrepancy for a font scaled to 2" is about 1/16".
+ Attachment 1 below illustrates the problem. The GL/2 Label is
+ drawn then we return to pcl maintaining the current "y" coordinate,
+ select the same font and print the same string. The Artifex
+ interpreter produces the same output for each string, the expected
+ result. HP does not.
+
+begin 664 gl2chbug.pcl
+M&T4;)3!"24X[4%<P.T94-"PV,RXU+#`[4$$P+#`[4E(U,#`P,"PU,#`P,#M0
+M5S`N,C4[1E0T+#4P."PP.U!!,"PP.U)2-3`P,#`L-3`P,#`[4%<P+C4[1E0T
+M+#$P,38L,#M003`L,#M24C4P,#`P+#4P,#`P.QLE,4))3CM34#$[25`[4%<P
+M+C`T.U-$-"PQ-#0L,BPQ+#<L-#$P,3M003`L-3`P,#M,0E!#3`-003`L,#L;
+5)3%!&RAS,30T5ALH<S%04$-,&T4*
+`
+end
+
+1402 (et. al.):
+
+ The filling of GL/2 polygon regions with lines in the Artifex PCL 5c
+ interpreter is not completely accurate. Line space and phasing are both
+ incorrect. These bugs are present in many other GL/2 tests as well.
+
+1422, 1423, 1424, 1445, 1446, 1462, 1463, 1801, 1803, 1811, 1817, 1894, 1895, 1941, 1946,
+1950, 1951, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 2210 (page 1), 2220 (page 2)
+
+ Artifex GL/2 contains minor discrepancies with anchoring line
+ fills. The problem is more evident in cases where scaling is
+ specified. Low priority.
+
+1463, 1463:
+
+ The patterned line fills used in these two tests vary in appearance
+ between the CLJ 5/5M and the Artifex PCL 5c interpreter because
+ the latter does not properly set the phase of GL/2 line fills.
+
+1601, 1602:
+
+ The GL/2 label printing command ("LB") in the Artifex PCL 5c interpreter
+ does not set the initial position of text correctly when printing in the
+ vertical direction.
+
+1641:
+
+ The handling of horizontal tab in GL/2 differs between the Artifex PCL 5c
+ interpreter and the CLJ 5/5M.
+
+1642, 1650:
+
+ The position of the label origin in GL/2 varies between the Artifex PCL 5c
+ interpreter and the CLJ 5/5M.
+
+1680:
+
+ The character sets supported by the fonts used in Artifex PCL 5c
+ interpreter, in its default form, are not the same as those supported by
+ the fonts in the CLJ 5/5M.
+
+1752, 1753 (et. al.):
+
+ The lower-case 'a' in the GL/2 stick font provided with the Artifex PCL 5c
+ interpreter is a different style than that of the stick font in the
+ CLJ 5/5M. This difference is also evident in other tests.
+
+1860, 1862, 1863:
+
+ The position of the GL/2 label origin in the Artifex PCL 5c interpreter is
+ not accurate. This is particularly noticeable for arbitrary transformations
+ of text, as in the first two tests cited.
+
+2080:
+
+ The scaling of the rightmost imported image in this test is
+ different than the HP printer. The artifex interpreter complies
+ with the HP PCLTRM. The following test shows that simply entering
+ and leaving HPGL/2 <ESC>%OB<ESC>%0A has the side effect of
+ resetting HPGL/2 scaling. This should not happen according to
+ PCLTRM 18-17.
+
+ <ESC>E
+ <ESC>*c720X
+ <ESC>*c0T
+ <ESC>*c8.3K
+(1) <ESC>%0B /* enter hpgl2/2 */
+(2) <ESC>%0A /* enter pcl */
+ <ESC>*c420Y
+ <ESC>*c0T
+ <ESC>%1BSP2;PW0;IN;SP6;SC0,100,0,100;PA50,50;SC;SP7;CI450;
+ <ESC>%1A
+ <ESC>E
+
+ the two commands (1) and (2) change the behavior the HP scaling
+ but not Artifex Scaling. If (1) and (2) are removed both HP and
+ Artifex produce the same results.
+
+2101, 2102:
+
+ See comments for test 830 and 831.
+
+2106:
+
+ Logical operations are broken on the CLJ 5/5M. The behavior of the Artifex
+ PCL 5c interpreter follows the documentation.
+
+2120, 2122:
+
+ HPGL/2 pixel placement is implemented using the postscript
+ operator setfilladjust. The HP command definition is not consistant with
+ the behavior of the implementation and different devices (Color
+ Laserjet & 6MP) produce different results for each of these test files.
+
+2210 and 2220 (fourth page):
+
+ SI, SR discrenpancy.
+
+
+2322, 2323:
+
+ Because the Artifex PCL 5c interpreter determines which regions are "white"
+ for purposes of transparency before taking into account any color lookup
+ table modifications, the white arrows in the center of these images are
+ considered transparent even in the center case (the inverting color
+ lookup table). Hence, for the inverting color lookup table case, the
+ central rectangle of the raster will be completely white.
+
+2330:
+
+ The CLJ 5/5M does not support the viewing illuminant command; the Artifex
+ PCL interpreter does.
+
+2331:
+
+ These rasters are rendered in a device independent color space, hence
+ their appearance will be dependent on the color rendering dictionary
+ provided.
+
+2351, 2352:
+
+ The driver configuration command linearly maps saturation and
+ lightness arguments to pcl's gamma function. It is expected that
+ vendors will provide product specific code for this function.
+
+2412:
+
+ After downloading a color lookup table, the monochrome palettes at the
+ bottom of the first and second pages of this test have one additional
+ black entry when rendered with the Artifex PCL 5c interpreter, as compared
+ to the output of the CLJ 5/5M. This problem has not been analyzed.
+
+PCL5c ATS Anomalies
+===================
+
+
+ak506k21.bin:
+
+ A PCL raster does not overlap an HPGL/2 line segment because the
+ line is not positioned exactly like HP due to a rounding
+ difference. The HP 1600C/CM also images this differently than
+ the HP Color Laserjet breaking only half of the line. After
+ rounding to the nearest pixel the ASI interpreter places the
+ raster rectangle one 300 dpi pixel below the gl/2 line. The HP
+ overlaps for at least one pixel on the 1600C/CM and the width of
+ the line on the Color Laserjet.
+
+fp309k22.bin:
+
+ The right edge of the clipboard is missing. This is a font
+ rasterizer anomaly. The clipboard is a winding bitmap font and
+ images correctly at 600 dpi but is slightly clipped at 300 dpi.
+
+Qp606w21.bin:
+
+ It is possible for the artifex interpreter to miss closing a
+ path in polygon mode under certain unusual conditions, due to
+ rounding problems. Here is a very simple example that
+ demonstrates the problem. This problem has only manifested in
+ problems of low visibility so we have not fixed it.
+
+begin 664 Qp606w21.bin.small
+M&R4M,3(S-#580%!*3"!3150@4$%'15!23U1%0U0]05543PI`4$I,(%-%5"!2
+M15-/3%5424]./38P,`I`4$I,($5.5$52($Q!3D=504=%/5!#3`H;11LE,$))
+M3E-0,5!!4%<N-3M053(Q,C`L,SDT-CM033`[4$0[4%(M."PM,BPM-#8L+3$Q
+?+#(R,2PM.#8W+"TQ-C<L.#@P.U!-,CM%4!LE,$$;10``
+`
+end
+
+
+---
+
+HP Color Laserjet 5C FTS printed on the Color Laserjet 4600
+
+panel 411 - The HP interpreter falls back to Times Bold Italic on line
+6. On the previous line the brush font was properly selected, text
+printed with the font then typeface family 4128 is selected.
+Extracting out the non vendor bits results in typeface 32 which is the
+typeface number of the brush font. There are no intervening relevant
+commands before the next sentence is printed so, we don't see how any
+other font than brush font could be selected and assume this is a bug
+in the HP printer. Similarly we believe the Dom Casual downloaded
+font should be selected on lines 7 & 8.
+
+
+----
+
+HP Color Laserjet 4600 CET
+
+18-01.BIN page 25 - The vertical bar and checkerboard character are
+missing on this page. The glyphs are not actually present in the
+downloaded font. It will work properly with Monotype if the plugins
+are configured correctly.
+
+20-07.BIN page 18 (repeats throughout test) - The HP prints the text
+in the wrong color. The logical operation 17 (DSon) is used to paint
+green text on a white background. The result should be black, the
+text is green. The following example prints the wrong colored text
+from the example and a rectangle with the same raster operation and
+colors, the rectangle is the predicted black and the text is green.
+
+(quoted printable)
+
+=1BE=1B*r3U=1B*v2S=1B*l17O=1B*p300x400Y=1B*c90A=1B*c150B=1B*c0PDownloa=
+ding symbol set 62F and making it permanent=1BE
+
+
+24-04 page 3, 4 and 6 - The HP 4600 is incorrect. The reference point is
+explicitly set to the current position before drawing the rectangles.
+The pattern's origin should coincide with the rectangle's origin as it
+does in the Artifex output.
+
+
+28-10 page 11 - This test checks fractional bit support for the
+polyline encoding command. The last box on the page uses 26 fractional
+bits, Artifex supports this and prints the box, the HP 4600 does not
+support 26 bits and does not print the box. The PCL Technical
+Reference Manual calls states the -26 <= fractional bits <= 26. The
+HPGL/2 RTL tecnical reference manual states the value is device
+dependent.
+
+
+
+----
+
+HP Color Laserjet 4600 CET printed on the Color Laserjet 4550
+
+
+21-09.BIN :
+
+ 4550 printer infinite loop raster width range test.
+
+
+21-10.BIN :
+
+ 4550 printer infinite loop raster height range test.
+
+
+21-10.BIN page 24, 25 and
+21-12.BIN page 17 :
+
+ Raster height > raster sent and the palette
+0 entry is not white. We zero fill with white, HP with Black or
+the palette color at entry 0.
+
+
+21-12.BIN page 19 :
+
+ HP incorrectly renders the first image stretching it
+in the X dimension.
+
+
+21-13.BIN page 2 :
+
+ HP incorrectly renders 4 of the rasters on the page
+Black triangles appear in a regular pattern across the raster
+
+
+
+