## #define

### Syntax

        #define name value

### Examples

        #define FOO 100
        #define BAR "Bar, Inc."

### Description

The `#define` directive assigns a value to a name which can be later referenced using `$name`. The name is case-insensitive and can be any sequence of letters, numbers, and the underscore. The value can be any number or string.

### See Also

`#include`

## #font

### Syntax

        #font name encoding "version" charset status

### Examples

        #font Courier Standard "(1.05)" Standard ROM
        #font Symbol Special "(001.005)" Special ROM
        #font Barcode-Foo Special "(1.0)" Special Disk
        #font Unicode-Foo Expert "(2.0)" Adobe-Identity ROM

### Description

The `#font` directive defines a "base font" for all printer drivers. The name is the PostScript font name.

The encoding is the default encoding of the font, usually `Standard`, `Expert`, or `Special`, as defined in the Adobe PPD file specification.

The version is the PostScript string definition that corresponds to the font version number.

The charset defines the available characters in the font, usually `Standard` or `Special`, as defined in the Adobe PPD file specification.

The status is the installation status of the font and must be either the word `ROM` or `Disk`.

Base fonts differ from fonts defined using the `Font` directive in that they are not automatically associated with all drivers - you must use the special `Font *` directive to include them in a driver.

Currently the `#font` directive is used mainly for defining the standard raster fonts in the `<font.defs>` include file.

### See Also

`#include`, `Font`

## #include

### Syntax

        #include <filename>
        #include "filename"

### Examples

        #include <font.defs>
        #include "myfile.h"

### Description

The `#include` directive reads the named driver information file. If the filename is included inside angle brackets (`<filename>`), then the PPD compiler will look for the file in all of the include directories it knows about. Otherwise, the file is opened in the current directory relative to the current driver information file, and if that fails then it looks in the include directories for the file.

The `#include` directive can be nested to as many files as are allowed by the host operating system, typically at least 100 files.

### See Also

`#define`, `#font`, `#media`

## #media

### Syntax

        #media name width length
        #media "name/text" width length

### Examples

        #media "Letter/Letter - 8.5x11in" 8.5in 11in
        #media "A4/A4 - 210x297mm" 210mm 297mm
        #media "w936h1368/Super B/A3 - 13x19in" 936 1368
        #media Photo 4in 6in

### Description

The `#media` directive defines a named media size for inclusion in a driver. The name with optional user text defines the name for the media size and is used with the `MediaSize` directive to associate the media size with the driver. The name may only contain letters, numbers, and the underscore and may not exceed 40 characters in length. The user text, if supplied, may not exceed 80 characters in length.

The width and length define the dimensions of the media. Each number is optionally followed by one of the following unit suffixes:

- `cm` - centimeters
- `ft` - feet
- `in` - inches
- `m` - meters
- `mm` - millimeters
- `pt` - points (72 points = 1 inch)

Points are assumed if no units are specified.

### See Also

`#include`, `CustomMedia`, `MediaSize`

## #po

### Syntax

        #po locale filename

### Examples

        #po es "es.po"
        #po fr_CA "mydriver-fr_CA.po"

### Description

The `#po` directive defines a message catalog to use for the given POSIX language abbreviation. Multiple `#po` directives can be specified to list multiple catalogs.

## Attribute

### Syntax

        Attribute name "" value
        Attribute name keyword value
        Attribute name "keyword/text" value

### Examples

        Attribute cupsInkChannels "" 1
        Attribute cupsAllDither 600dpi "1.0"
        Attribute fooProfile "Photo/Photographic Profile" "photopro.icc"

### Description

The `Attribute` directive creates a PPD attribute. The name is any combination of letters, numbers, and the underscore and can be up to 40 characters in length.

The selector can be the empty string (`""`), a keyword consisting of up to 40 letters, numbers, and the underscore, or a string composed of a keyword and user text of up to 80 characters.

The value is any string or number; the string may contain multiple lines, however no one line may exceed 255 characters.

## Choice

### Syntax

        Choice name "code"
        Choice "name/text" "code"

### Examples

        Choice None "<</MediaType (None)>>setpagedevice"
        Choice "False/No" "<</cupsCompression 0>>setpagedevice"

### Description

The `Choice` directive adds a single choice to the current option. The name is any combination of letters, numbers, and the underscore and can be up to 40 characters in length.

If provided, the text can be any string up to 80 characters in length. If no text is provided, the name is used.

The code is any string and may contain multiple lines, however no one line may exceed 255 characters.

### See Also

`ColorModel`, `Cutter`, `Darkness`, `Duplex`, `Finishing`, `Group`, `InputSlot`, `Installable`, `MediaType`, `Option`, `Resolution`, `UIConstraints`

## ColorDevice

### Syntax

        ColorDevice boolean-value

### Examples

        ColorDevice no
        ColorDevice yes

### Description

The `ColorDevice` directive tells the application if the printer supports color. It is typically used in conjunction with the `ColorModel` directive to provide color printing support.

### See Also

`ColorModel`

## ColorModel

### Syntax

        ColorModel name colorspace colororder compression
        ColorModel "name/text" colorspace colororder compression

### Examples

        ColorModel Gray/Grayscale w chunky 0
        ColorModel RGB/Color rgb chunky 0
        ColorModel CMYK cmyk chunky 0

### Description

The `ColorModel` directive is a convenience directive which creates a ColorModel option and choice for the current printer driver. The name is any combination of letters, numbers, and the underscore and can be up to 40 characters in length.

If provided, the text can be any string up to 80 characters in length. If no text is provided, the name is used.

The colorspace argument is one of the standard colorspace keywords defined later in this appendix in the section titled, "Colorspace Keywords".

The colororder argument is one of the standard color order keywords defined later in this appendix in the section titled, "Color Order Keywords".

The compression argument is any number and is assigned to the `cupsCompression` attribute in the PostScript page device dictionary.

### See Also

`Choice`, `ColorDevice`, `Cutter`, `Darkness`, `Duplex`, `Finishing`, `Group`, `InputSlot`, `Installable`, `MediaType`, `Option`, `Resolution`, `UIConstraints`

## ColorProfile

### Syntax

        ColorProfile resolution/mediatype gamma density matrix

### Examples

        ColorProfile -/- 1.7 1.0
             1.0    0.0    0.0
    	 0.0    1.0    0.0
    	 0.0    0.0    1.0

        ColorProfile 360dpi/- 1.6 1.0
             1.0   -0.05  -0.3
    	-0.35   1.0   -0.15
    	-0.095 -0.238  0.95

        ColorProfile 720dpi/Special 1.5 1.0
             1.0    0.0   -0.38
    	-0.4    1.0    0.0
    	 0.0   -0.38   0.9

### Description

The `ColorProfile` directive defines a CMY transform-based color profile. The resolution and mediatype arguments specify the `Resolution` and `MediaType` choices which use the profile; the hyphen (`-`) is used to specify that any resolution or mediatype can be used with the profile.

The gamma argument specifies the gamma correction to apply to the color values (P = pg) and is a real number greater than 0. Values larger than 1 cause a general lightening of the print while values smaller than 1 cause a general darkening of the print. A value of 1 disables gamma correction.

The density argument specifies the linear density correction to apply to the color values (P = d * pg) and is a real number greater than 0 and less than or equal to 1. A value 1 of disables density correction while lower values produce proportionately lighter output.

The matrix argument specifies a 3x3 linear transformation matrix in row-major order. The matrix is applied only to the CMY component of a RGB to CMYK transformation and is not used when printing in grayscale or CMYK mode unless the printer only supports printing with 3 colors.

### See Also

`SimpleColorProfile`

## Copyright

### Syntax

        Copyright "text"

### Examples

        Copyright "Copyright 2004 by Foo Enterprises"

        Copyright
        "This software is free software; you can redistribute it and/or
        modify it under the terms of the GNU General Public License as
        published by the Free Software Foundation; either version 2 of
        the License, or (at your option) any later version.

        This software is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        GNU General Public License for more details.

        You should have received a copy of the GNU General Public
        License along with this software; if not, write to the Free
        Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
        MA 02111 USA"

### Description

The `Copyright` directive adds text comments to the top of a PPD file, typically for use in copyright notices. The text argument can contain multiple lines of text, but no line may exceed 255 characters.

## CustomMedia

### Syntax

        CustomMedia name width length left bottom right top
            "size-code" "region-code"

        CustomMedia "name/text" width length left bottom right top
            "size-code" "region-code"

### Examples

        CustomMedia Letter 8.5in 11in 0.25in 0.46in 0.25in 0.04in
            "<</PageSize[612 792]/ImagingBBox null/ManualFeed false>>
             setpagedevice"
    	"<</PageSize[612 792]/ImagingBBox null/ManualFeed true>>
             setpagedevice"

        CustomMedia "A4/A4 - 210x297mm" 210mm 297mm 12 12 12 12
            "<</PageSize[595 842]/ImagingBBox null>>setpagedevice"
    	"<</PageSize[595 842]/ImagingBBox null>>setpagedevice"

### Description

The `CustomMedia` directive adds a custom media size to the driver. The name is any combination of letters, numbers, and the underscore and can be up to 40 characters in length.

If provided, the text can be any string up to 80 characters in length. If no text is provided, the name is used.

The width and length arguments specify the dimensions of the media as defined for the `#media` directive.

The left, bottom, right, and top arguments specify the printable margins of the media.

The size-code and region-code arguments specify the PostScript commands to run for the `PageSize` and `PageRegion` options, respectively. The commands can contain multiple lines, however no line may be more than 255 characters in length.

### See Also

`#media`, `MediaSize`

## Cutter

### Syntax

        Cutter boolean-value

### Examples

        Cutter yes
        Cutter no

### Description

The `Cutter` directive specifies whether the printer has a built-in media cutter. When a cutter is present, the printer's PPD file will contain a `CutMedia` option that allows the user to control whether the media is cut at the end of the job.

### See Also

`Choice`, `ColorModel`, `Darkness`, `Duplex`, `Finishing`, `Group`, `InputSlot`, `Installable`, `MediaType`, `Option`, `Resolution`, `UIConstraints`

## Darkness

### Syntax

        Darkness temperature name
        Darkness temperature "name/text"

### Examples

        Darkness 0 Light
        Darkness 2 "Normal/Standard"

### Description

The `Darkness` directive defines a choice for the `cupsDarkness` option which sets the `cupsCompression` attribute in the PostScript page device dictionary. It is used with the CUPS rastertolabel sample driver to control the print head temperature and therefore the darkness of the print.

The temperature argument specifies a temperature value for the Dymo driver from 0 (lowest) to 3 (highest), with 2 representing the normal setting.

The name is any combination of letters, numbers, and the underscore and can be up to 40 characters in length.

If provided, the text can be any string up to 80 characters in length. If no text is provided, the name is used.

### See Also

`Choice`, `ColorModel`, `Cutter`, `Duplex`, `Finishing`, `Group`, `InputSlot`, `Installable`, `MediaType`, `Option`, `Resolution`, `UIConstraints`

## DriverType

### Syntax

        DriverType type

### Examples

        DriverType custom
        DriverType escp
        DriverType pcl
        DriverType ps

### Description

The `DriverType` directive tells the PPD compiler which DDK filters to include in the PPD file. The following types are supported:

- `custom` - Use only those filters that are defined in the driver information file
- `epson` - Use the CUPS sample Epson driver filter rastertoepson
- `escp` - Use the ESC/P DDK driver filters commandtoescpx and rastertoescpx
- `hp` - Use the CUPS sample HP driver filter rastertohp
- `label` - Use the CUPS sample label driver filter rastertolabel
- `pcl` - Use the HP-PCL DDK driver filters commandtopclx and rastertopclx
- `ps` - Use no filters; this driver is for a standard PostScript device

### See Also

`Filter`, `ModelNumber`

## Duplex

### Syntax

        Duplex type

### Examples

        Duplex none
        Duplex normal
        Duplex flip

### Description

The `Duplex` directive determines whether double-sided printing is supported in the current driver. The type argument specifies the type of duplexing that is supported:

- `none` - double-sided printing is not supported
- `normal` - double-sided printing is supported
- `flip` - double-sided printing is supported, but the back side image needs to be flipped vertically (used primarily with inkjet printers)

### See Also

`Choice`, `ColorModel`, `Cutter`, `Darkness`, `Finishing`, `Group`, `InputSlot`, `Installable`, `MediaType`, `Option`, `Resolution`, `UIConstraints`

## Filter

### Syntax

        Filter mime-type cost program

### Examples

        Filter application/vnd.cups-raster 50 rastertofoo
        Filter application/vnd.hp-HPGL 25 /usr/foo/filter/hpgltofoo

### Description

The `Filter` directive adds a filter for the current driver. The mime-type argument is a valid MIME media type name as defined in a CUPS mime.types file.

The cost argument specifies the relative cost of the filter. In general, use a number representing the average percentage of CPU time that is used when printing the specified MIME media type.

The program argument specifies the program to run; if the program is not an absolute filename, then CUPS will look for the program in the CUPS filter directory.

### See Also

`DriverType`

## Finishing

### Syntax

        Finishing name
        Finishing "name/text"

### Examples

        Finishing None
        Finishing "Glossy/Photo Overcoat"

### Description

The `Finishing` directive adds a choice to the `cupsFinishing` option. The name is any combination of letters, numbers, and the underscore and can be up to 40 characters in length. The name is stored in the `OutputType` attribute in the PostScript page device dictionary.

If provided, the text can be any string up to 80 characters in length. If no text is provided, the name is used.

### See Also

`Choice`, `ColorModel`, `Cutter`, `Darkness`, `Duplex`, `Group`, `InputSlot`, `Installable`, `MediaType`, `Option`, `Resolution`, `UIConstraints`

## Font

### Syntax

        Font name encoding "version" charset status
        Font *

### Examples

        Font *
        Font Courier Standard "(1.05)" Standard ROM
        Font Symbol Special "(001.005)" Special ROM
        Font Barcode-Foo Special "(1.0)" Special Disk
        Font Unicode-Foo Expert "(2.0)" Adobe-Identity ROM

### Description

The `Font` directive defines a "device font" for the current printer driver. The name is the PostScript font name.

The encoding is the default encoding of the font, usually `Standard`, `Expert`, or `Special`, as defined in the Adobe PPD file specification.

The version is the PostScript string definition that corresponds to the font version number.

The charset defines the available characters in the font, usually `Standard` or `Special`, as defined in the Adobe PPD file specification.

The status is the installation status of the font and must be either the word `ROM` or `Disk`.

Device fonts differ from fonts defined using the `#font` directive in that they are automatically associated with the current driver. Fonts defined using `#font` may be imported into the current driver using the `Font *` form of this directive.

### See Also

`#font`

## Group

### Syntax

        Group name
        Group "name/text"

### Examples

        Group General
        Group "InstallableOptions/Options Installed"
        Group "Special/Vendor Options"

### Description

The `Group` directive specifies the group for new `Option` directives. The name is any combination of letters, numbers, and the underscore and can be up to 40 characters in length. The names `General` and `InstallableOptions` are predefined for the standard Adobe UI keywords and for installable options, respectively.

If provided, the text can be any string up to 40 characters in length. If no text is provided, the name is used.

Note: Because of certain API binary compatibility issues, CUPS limits the length of PPD group translation strings (text) to 40 characters, while the PPD specification allows for up to 80 characters.

### See Also

`Choice`, `ColorModel`, `Cutter`, `Darkness`, `Duplex`, `Finishing`, `InputSlot`, `Installable`, `MediaType`, `Option`, `Resolution`, `UIConstraints`

## HWMargins

### Syntax

        HWMargins left bottom right top

### Examples

        HWMargins 18 36 18 36
        HWMargins 0.25in 0.5in 0.25in 0.5in
        HWMargins 0.6cm 1.2cm 0.6cm 1.2cm

### Description

The `HWMargins` directive specifies the current margins for `MediaSize` that follow. The left, bottom, right, and top margin values specify the printable margins.

### See Also

`MediaSize`

## InputSlot

### Syntax

        InputSlot position name
        InputSlot position "name/text"

### Examples

        InputSlot 0 Auto
        InputSlot 1 "Upper/Tray 1"

### Description

The `InputSlot` directive adds a new choice to the `InputSlot` option. The position argument is a number from 0 to 232-1 specifying the value that is placed in the `MediaPosition` attribute in the PostScript page device dictionary.

The name is any combination of letters, numbers, and the underscore and can be up to 40 characters in length.

If provided, the text can be any string up to 80 characters in length. If no text is provided, the name is used.

### See Also

`Choice`, `ColorModel`, `Cutter`, `Darkness`, `Duplex`, `Finishing`, `Group`, `Installable`, `MediaType`, `Option`, `Resolution`, `UIConstraints`

## Installable

### Syntax

        Installable name
        Installable "name/text"

### Examples

        Installable EnvTray
        Installable "Option1/Duplexer Installed"

### Description

The `Installable` directive adds a new boolean option to the `InstallableOptions` group with a default value of `False`. The name is any combination of letters, numbers, and the underscore and can be up to 40 characters in length.

If provided, the text can be any string up to 80 characters in length. If no text is provided, the name is used.

## ManualCopies

### Syntax

        ManualCopies boolean-value

### Examples

        ManualCopies no
        ManualCopies yes

### Description

The `ManualCopies` directive specifies whether copies need to be produced by the RIP filters. The default is `no`.

### See Also

`Choice`, `ColorModel`, `Cutter`, `Darkness`, `Duplex`, `Finishing`, `Group`, `InputSlot`, `MediaType`, `Option`, `Resolution`, `UIConstraints`

## Manufacturer

### Syntax

        Manufacturer "name"

### Examples

        Manufacturer "Foo"
        Manufacturer "HP"

### Description

The `Manufacturer` directive specifies the manufacturer name for the current driver. The name argument must conform to the manufacturer name requirements in the Adobe PPD file specification.

### See Also

`ModelName`, `PCFileName`, `Version`

## MaxSize

### Syntax

        MaxSize width length

### Examples

        MaxSize 36in 100ft
        MaxSize 300cm 30m

### Description

The `MaxSize` directive specifies the maximum width and length that is supported for custom page sizes.

### See Also

`MinSize`, `VariablePaperSize`

## MediaSize

### Syntax

        MediaSize name

### Examples

        MediaSize Letter
        MediaSize A4

### Description

The `MediaSize` directive adds the named size to the current printer driver using the current margins defined with the `HWMargins` directive. The name argument must match a media size defined using the `#media` directive.

### See Also

`#media`, `HWMargins`

## MediaType

### Syntax

        MediaType type name
        MediaType type "name/text"

### Examples

        MediaType 0 Auto
        MediaType 1 "Plain/Plain Paper"

### Description

The `MediaType` directive adds a new choice to the `MediaType` option. The type argument is a number from 0 to 232-1 specifying the value that is placed in the `cupsMediaType` attribute in the PostScript page device dictionary.

The name is any combination of letters, numbers, and the underscore and can be up to 40 characters in length. The name is placed in the `MediaType` attribute in the PostScript page device dictionary.

If provided, the text can be any string up to 80 characters in length. If no text is provided, the name is used.

### See Also

`Choice`, `ColorModel`, `Cutter`, `Darkness`, `Duplex`, `Finishing`, `Group`, `InputSlot`, `Installable`, `Option`, `Resolution`, `UIConstraints`

## MinSize

### Syntax

        MinSize width length

### Examples

        MinSize 4in 8in
        MinSize 10cm 20cm

### Description

The `MinSize` directive specifies the minimum width and length that is supported for custom page sizes.

### See Also

`MaxSize`, `VariablePaperSize`

## ModelName

### Syntax

        ModelName "name"

### Examples

        ModelName "Foo Laser Printer 2000"
        ModelName "Colorific 123"

### Description

The `ModelName` directive sets the printer name for the `ModelName`, `NickName`, and `ShortNickName` attributes for the printer driver. The name is any string of letters, numbers, spaces, and the characters ".", "/", "-", and "+" and should not begin with the manufacturer name since the PPD compiler will add this automatically for you. The maximum length of the name string is 31 characters to conform to the Adobe limits on the length of `ShortNickName`.

### See Also

`Manufacturer`, `PCFileName`, `Version`

## ModelNumber

### Syntax

        ModelNumber number

### Examples

        ModelNumber 123
        ModelNumber ($PCL_PAPER_SIZE $PCL_PJL)

### Description

The `ModelNumber` directive sets the `cupsModelNumber` attribute for the printer driver, which is often used by the printer driver filter to tailor its output for the current device. The number is any integer or bitwise OR of integers and constants that is appropriate for the printer driver filters.

A complete list of printer driver model number constants is available later in this appendix in the section titled, "Printer Driver ModelNumber Constants".

### See Also

`DriverType`, `Filter`

## Option

### Syntax

        Option name type section order
        Option "name/text" type section order

### Examples

        Option Punch Boolean AnySetup 10
        Option "fooFinish/Finishing Option" PickOne DocumentSetup 10

### Description

The `Option` directive creates a new option in the current group, by default the `General` group. The name is any combination of letters, numbers, and the underscore and can be up to 40 characters in length.

If provided, the text can be any string up to 80 characters in length. If no text is provided, the name is used.

The type argument is one of the following keywords:

- `Boolean` - a true/false option
- `PickOne` - allows the user to pick one choice from a list
- `PickMany` - allows the user to pick zero or more choices from a list

The section argument is one of the following keywords:

- `AnySetup` - The option can be placed in either the DocumentSetup or PageSetup sections of the PostScript document
- `DocumentSetup` - The option must be placed in the DocumentSetup section of the PostScript document; this does not allow the option to be overridden on individual pages
- `ExitServer` - The option must be placed in a separate initialization job prior to the document (not used for raster printer drivers)
- `JCLSetup` - The option contains job control language commands and must be sent prior to the document using the `JCLBegin` and `JCLToPSInterpreter` attributes (not used for raster printer drivers)
- `PageSetup` - The option must be placed at the beginning of each page in the PostScript document
- `Prolog` - The option must be placed in the prolog section of the PostScript document; this is typically used to add special comments for high-end typesetters, but can also be used to add CUPS PostScript job ticket comments.

The order argument is a real number greater than or equal to 0.0 and is used to sort the printer commands from many options before sending them to the printer or RIP filter.

### See Also

`Choice`, `ColorModel`, `Cutter`, `Darkness`, `Duplex`, `Finishing`, `Group`, `InputSlot`, `Installable`, `MediaType`, `Resolution`, `UIConstraints`

## PCFileName

### Syntax

        PCFileName "filename.ppd"

### Examples

        PCFileName "foljt2k1.ppd"
        PCFileName "deskjet.ppd"

### Description

The `PCFileName` attribute specifies the name of the PPD file for the current driver. The filename argument must conform to the Adobe PPD file specification and can be no more than 8 filename characters plus the extension ".ppd".

### See Also

`Manufacturer`, `ModelName`, `Version`

## Resolution

### Syntax

        Resolution colorspace bits-per-color row-count row-feed row-step name
        Resolution colorspace bits-per-color row-count row-feed row-step "name/text"

### Examples

        Resolution - 8 0 0 0 300dpi
        Resolution k 8 0 0 0 "600x300dpi/600 DPI Grayscale"

### Description

The `Resolution` directive creates a new `Resolution` option choice which sets the `HWResolution`, `cupsBitsPerColor`, `cupsRowCount`, `cupsRowFeed`, `cupsRowStep`, and optionally the `cupsColorSpace` page device dictionary attributes. The colorspace argument specifies a colorspace to use for the specified resolution and can be the hyphen (`-`) character to make no change to the selected color model or any keyword listed in the section titled, "Colorspace Keywords", to force the named colorspace.

The bits-per-color argument specifies the number of bits per color to generate when RIP'ing a job. The values 1, 2, 4, and 8 are currently supported by CUPS.

The row-count, row-feed, and row-step argument specify the driver-dependent values for the `cupsRowCount`, `cupsRowFeed`, and `cupsRowStep` attributes, respectively. Most drivers leave these attributes set to 0, but any number from 0 to 232-1 is allowed.

The name argument must conform to the resolution naming conventions in the Adobe PPD file specification, either `HHHdpi` for symmetric resolutions or `HHHxVVVdpi` for asymmetric resolutions. The `HHH` and `VVV` in the examples represent the horizontal and vertical resolutions which must be positive integer values.

If provided, the text can be any string up to 80 characters in length. If no text is provided, the name is used.

### See Also

`Choice`, `ColorModel`, `Cutter`, `Darkness`, `Duplex`, `Finishing`, `Group`, `InputSlot`, `Installable`, `MediaType`, `Option`, `UIConstraints`

## SimpleColorProfile

### Syntax

        SimpleColorProfile resolution/mediatype density
            yellow-density red-density gamma
    	red-adjust green-adjust blue-adjust

### Examples

        SimpleColorProfile -/- 100 100 200 1.0 0 0 0

        SimpleColorProfile 360dpi/- 100 95 150 1.2 5 10 15

        SimpleColorProfile 720dpi/Glossy 100 90 120 1.5 -5 5 10

### Description

The `SimpleColorProfile` directive creates a matrix-based `ColorProfile` using values chosen with the `cupsprofile(1)` utility. The resolution and mediatype arguments specify the `Resolution` and `MediaType` choices which use the profile; the hyphen (`-`) is used to specify that any resolution or mediatype can be used with the profile.

The density argument specifies the linear density correction to apply to the color values (P = d * 0.01 * pg) and is an integer greater than 0 and less than or equal to 100. A value 100 of disables density correction while lower values produce proportionately lighter output. The density value adjusts all color channels equally in all color modes.

The yellow-density argument specifies the density of the yellow channel when printing in grayscale or RGB mode and is an integer greater than 0 and less then or equal to 100. A value of 100 disables yellow density correction while lower values produce proportionately lighter output.

The red-density argument specifies the two-color density limit (e.g. C + M, C + Y, M + Y) when printing in grayscale or RGB mode and is an integer greater than 0 and less then or equal to 200. A value of 200 disables two-color density correction while lower values produce proportionately lighter output.

The gamma argument specifies the gamma correction to apply to the color values (P = pg) and is a real number greater than 0. Values larger than 1 cause a general lightening of the print while values smaller than 1 cause a general darkening of the print. A value of 1 disables gamma correction.

The red-adjust, green-adjust, blue-adjust arguments specify the percentage of color to add or remove. Positive red-adjust values add magenta and negative values add yellow. Positive green-adjust values add cyan and negative values add yellow. Positive blue-adjust values add cyan and negative values add magenta. Values of 0 disable color adjustments.

### See Also

`ColorProfile`

## Throughput

### Syntax

        Throughput pages-per-minute

### Examples

        Throughput 1
        Throughput 10

### Description

The `Througput` directive sets the `Troughput` attribute for the current printer driver. The pages-per-minute argument is a positive integer representing the peak number of pages per minute that the printer is capable of producing. Use a value of 1 for printers that produce less than 1 page per minute.

## UIConstraints

### Syntax

        UIConstraints "*Option1 *Option2"
        UIConstraints "*Option1 Choice1 *Option2"
        UIConstraints "*Option1 *Option2 Choice2"
        UIConstraints "*Option1 Choice1 *Option2 Choice2"

### Examples

        UIConstraints "*Finishing *MediaType"
        UIConstraints "*Option1 False *Duplex"
        UIConstraints "*Duplex *MediaType Transparency"
        UIConstraints "*Resolution 600dpi *ColorModel RGB"

### Description

The `UIConstraints` directive adds a constraint between two options. Constraints inform the application when a user has chosen incompatible options. Each option name is preceded by the asterisk (`*`). If no choice is given for an option, then all choices except `False` and `None` will conflict with the other option and choice(s). Since the PPD compiler automatically adds reciprocal constraints (option A conflicts with option B, so therefore option B conflicts with option A), you need only specify the constraint once.

### See Also

`Choice`, `ColorModel`, `Cutter`, `Darkness`, `Duplex`, `Finishing`, `Group`, `InputSlot`, `Installable`, `MediaType`, `Option`, `Resolution`

## VariablePaperSize

### Syntax

        VariablePaperSize boolean-value

### Examples

        VariablePaperSize yes
        VariablePaperSize no

### Description

The `VariablePaperSize` directive specifies whether the current printer supports variable (custom) page sizes. When `yes` is specified, the PPD compiler will include the standard PPD attributes required to support custom page sizes.

### See Also

`MaxSize`, `MinSize`

## Version

### Syntax

        Version number

### Examples

        Version 1.0
        Version 3.7

### Description

The `Version` directive sets the `FileVersion` attribute in the PPD file and is also used for the `NickName` attribute. The number argument is a positive real number.

### See Also

`Manufacturer`, `ModelName`, `PCFileName`

## Standard Include Files

Table B-1 shows the standard include files which are provided with the DDK.

Table B-1, Standard Include Files
Include File | Description
--- | ---
`<font.defs>` | Defines all of the standard fonts which are included with ESP Ghostscript and the Apple PDF RIP.
`<epson.h>` | Defines all of the CUPS ESC/P sample driver constants.
`<escp.h>` | Defines all of the DDK ESC/P driver constants.
`<hp.h>` | Defines all of the CUPS HP-PCL sample driver constants.
`<label.h>` | Defines all of the CUPS label sample driver constants.
`<media.defs>` | Defines all of the standard media sizes listed in Appendix B of the Adobe PostScript Printer Description File Format Specification.
`<pcl.h>` | Defines all of the DDK HP-PCL driver constants.
`<raster.defs>` | Defines all of the CUPS raster format constants.

## Printer Driver ModelNumber Constants

The CUPS DDK and sample drivers use the `cupsModelNumber` attribute in the PPD file to tailor their output to the printer. The following sections describe the constants for each driver.

### The CUPS ESC/P Sample Driver (epson)

The `epson` driver supports Epson and Okidata dot-matrix, Epson Stylus Color, and Epson Stylus Photo printers. Table B-2 lists the constants for the `ModelNumber` directive. `ModelNumber` values should be inserted by referencing only one of these constants.

Table B-2, `epson` driver constants
Constant | Description
--- | ---
`EPSON_9PIN` | Epson and Okidata 9-pin dot-matrix printers
`EPSON_24PIN` | Epson and Okidata 24-pin dot-matrix printers
`EPSON_COLOR` | Older Epson Stylus Color printers that use the `ESC .` graphics command
`EPSON_PHOTO` | Older Epson Stylus Photo printers that use the `ESC .` graphics command
`EPSON_ICOLOR` | Newer Epson Stylus Color printers that use the `ESC i` graphics command
`EPSON_IPHOTO` | Newer Epson Stylus Photo printers that use the `ESC i` graphics command

### The CUPS HP-PCL Sample Driver (hp)

The `hp` driver supports HP LaserJet and DeskJet printers. Table B-3 lists the constants for the `ModelNumber` directive. `ModelNumber` values should be inserted by referencing only one of these constants.

Table B-3, `hp` driver constants
Constant | Description
--- | ---
`HP_LASERJET` | HP LaserJet printers supporting PCL 3, 4, or 5
`HP_DESKJET` | HP DeskJet printers supporting PCL 3 and using the simple color graphics command (`ESC * r # U`)
`HP_DESKJET2` | HP DeskJet printers supporting PCL3GUI and using the configure raster graphics command (`ESC * g # W`)

### The CUPS Label Sample Driver (label)

The `label` driver supports the Dymo Labelwriter, Zebra CPCL, Zebra EPL, and Zebra ZPL, and Intellitech PCL label printers. Table B-4 lists the constants for the `ModelNumber` directive. `ModelNumber` values should be inserted by referencing only one of these constants.

Table B-4, `label` driver constants
Constant | Description
--- | ---
`DYMO_3x0` | Format output for the Dymo Labelwriter 300, 330, or 330 Turbo.
`INTELLITECH_PCL` | Format output for the Intellitech PCL printers.
`ZEBRA_CPCL` | Format output for the Zebra CPCL printers.
`ZEBRA_EPL_LINE` | Format output for the Zebra EPL line mode (EPL 1) printers.
`ZEBRA_EPL_PAGE` | Format output for the Zebra EPL page mode (EPL 2) printers.
`ZEBRA_ZPL` | Format output for the Zebra ZPL printers.

### The DDK ESC/P Driver (escp)

The `escp` driver supports all Epson inkjet printers. Table B-6 lists the constants for the `ModelNumber` directive. `ModelNumber` values should be specified as the bitwise OR of one or more of these constants.

Table B-6, `escp` driver constants
Constant | Description
--- | ---
`ESCP_MICROWEAVE` | Use microweave command?
`ESCP_STAGGER` | Are color jets staggered?
`ESCP_ESCK` | Use print mode command?
`ESCP_EXT_UNITS` | Use extended unit commands?
`ESCP_EXT_MARGINS` | Use extended margin command?
`ESCP_USB` | Send USB packet mode escape
`ESCP_PAGE_SIZE` | Use page size command
`ESCP_RASTER_ESCI` | Use `ESC i` graphics command
`ESCP_REMOTE` | Use remote mode commands
`ESCP_REMOTE_AC` | Use auto-cutter command
`ESCP_REMOTE_CO` | Use cutter-operation command
`ESCP_REMOTE_EX` | Use media-position command
`ESCP_REMOTE_MS` | Use media-size command
`ESCP_REMOTE_MT` | Use media-type command
`ESCP_REMOTE_PC` | Use paper-check command
`ESCP_REMOTE_PH` | Use paper-thickness command
`ESCP_REMOTE_PP` | Use paper-path command
`ESCP_REMOTE_SN0` | Use feed-sequence-0 command
`ESCP_REMOTE_SN1` | Use platten-gap command
`ESCP_REMOTE_SN2` | Use feed-sequence-2 command
`ESCP_REMOTE_SN6` | Use eject-delay command
`ESCP_REMOTE_FP` | Use print-position command

### The DDK HP-PCL Driver (pcl)

The `pcl` driver supports all HP LaserJet, DeskJet, and DesignJet printers. Table B-5 lists the constants for the `ModelNumber` directive. `ModelNumber` values should be specified as the bitwise OR of one or more of these constants.

Table B-5, `pcl` driver constants
Constant | Description
--- | ---
`PCL_PAPER_SIZE` | Use paper size command (`ESC & l # A`)
`PCL_INKJET` | Use inkjet commands
`PCL_RASTER_END_COLOR` | Use new end-raster command (`ESC * r C`)
`PCL_RASTER_CID` | Use configure-image-data command (`ESC * v # W`)
`PCL_RASTER_CRD` | Use configure-raster-data command (`ESC * g # W`)
`PCL_RASTER_SIMPLE` | Use simple-raster-color command (`ESC * r # U`)
`PCL_RASTER_RGB24` | Use 24-bit RGB mode
`PCL_PJL` | Use PJL commands
`PCL_PJL_PAPERWIDTH` | Use PJL PAPERWIDTH/LENGTH commands
`PCL_PJL_HPGL2` | Use PJL ENTER HPGL2 command
`PCL_PJL_PCL3GUI` | Use PJL ENTER PCL3GUI command
`PCL_PJL_RESOLUTION` | Use PJL SET RESOLUTION command

## Color Keywords

The PPD compiler defines two types of color keywords: colorspace and color order. The following sections list the supported keywords for each type.

### Colorspace Keywords

The following colorspace keywords are recognized:

- `cielab` - CIE Lab **
- `ciexyz` - CIE XYZ **
- `cmy` - Cyan, magenta, yellow
- `cmyk` - Cyan, magenta, yellow, black
- `gmck` - Gold, magenta, yellow, black **
- `gmcs` - Gold, magenta, yellow, silver **
- `gold` - Gold foil **
- `icc1` - ICC-based, 1 color **
- `icc2` - ICC-based, 2 colors **
- `icc3` - ICC-based, 3 colors **
- `icc4` - ICC-based, 4 colors **
- `icc5` - ICC-based, 5 colors **
- `icc6` - ICC-based, 6 colors **
- `icc7` - ICC-based, 7 colors **
- `icc8` - ICC-based, 8 colors **
- `icc9` - ICC-based, 9 colors **
- `icca` - ICC-based, 10 colors **
- `iccb` - ICC-based, 11 colors **
- `iccc` - ICC-based, 12 colors **
- `iccd` - ICC-based, 13 colors **
- `icce` - ICC-based, 14 colors **
- `iccf` - ICC-based, 15 colors **
- `k` - Black
- `kcmy` - Black, cyan, magenta, yellow *
- `kcmycm` - Black, cyan, magenta, yellow, light-cyan, light-magenta *
- `rgb` - Red, green, blue
- `rgba` - Red, green, blue, alpha
- `rgbw` - Red, green, blue, luminance *
- `silver` - Silver foil **
- `w` - Luminance
- `white` - White ink (as black) **
- `ymc` - Yellow, magenta, cyan *
- `ymck` - Yellow, magenta, cyan, black *
  * = This colorspace is not supported on Mac OS X prior to 10.4.
  ** = This colorspace is not supported on Mac OS X.

### Color Order Keywords

The following color order keywords are recognized:

- `chunked` or `chunky` - Color values are passed together on a line as RGB RGB RGB RGB
- `banded` - Color values are passed separately on a line as RRRR GGGG BBBB *
- `planar` - Color values are passed separately on a page as RRRR RRRR RRRR ... GGGG GGGG GGGG ... BBBB BBBB BBBB *
  * = This color order is not supported by the current Apple RIP filters and should not be used when developing printer drivers for MacOS X 10.2 or 10.3.