From 635d89918d5b44649e1d79769f7e7a3518a5aa24 Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Mon, 17 May 2021 14:12:47 +0200
Subject: [PATCH] PPD: Melusine via XCPT

---
 ppd/gen-melusine-xcpt | 547 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 547 insertions(+)
 create mode 100755 ppd/gen-melusine-xcpt

diff --git a/ppd/gen-melusine-xcpt b/ppd/gen-melusine-xcpt
new file mode 100755
index 0000000..d89777a
--- /dev/null
+++ b/ppd/gen-melusine-xcpt
@@ -0,0 +1,547 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use lib ".";
+use PPD;
+use PPD::PJL;
+use PPD::Paper;
+use PPD::Common;
+
+set('FileVersion', '1.0');
+set('PCFileName', 'XRAL8135.PPD');
+
+set('Manufacturer', 'Xerox');
+set('Product', [ 'Altalink C8135', '(1.3.6.1.4.1.253.8.62.1.20.6.26.1.1)' ]);
+set('PSVersion', '(3021.101) 3000');
+
+set('Throughput', 35);
+set('TTRasterizer', 'Type42');
+set('Protocols', 'PJL BCP TBCP');
+
+set('cupsFilter', 'application/vnd.cups-pdf 0 xerox-xcpt');
+set('cupsFilter', 'application/vnd.cups-postscript 0 xerox-xcpt');
+
+set('ColorDevice', 1);
+set('DefaultColorSpace', 'CMYK');
+
+define_ui_group({ Key => 'Basic', Name => 'Basic options' });
+
+option({
+	Key => 'Duplex',
+	Name => '2-Sided Printing',
+	Choice => 'PickOne',
+	Priority => 40,
+	JCL => 1,
+	Values => [
+		{ Key => 'None', Name => 'Off (1-Sided)', PS => jopt('SIDES', 'one-sided') },
+		{ Key => 'DuplexNoTumble', Name => 'Long-Edge Binding', PS => jopt('SIDES', 'two-sided-long-edge') },
+		{ Key => 'DuplexTumble', Name => 'Short-Edge Binding', PS => jopt('SIDES', 'two-sided-short-edge') },
+	]
+});
+
+option({
+	Key => 'Collate',
+	Choice => 'Boolean',
+	Priority => 41,
+	JCL => 1,
+	Values => [
+		{ Key => 'False', Name => 'Off', PS => jopt('COLLATE', 'uncollated') },
+		{ Key => 'True', Name => 'On', PS => jopt('COLLATE', 'collated'), Default => 1 },
+	]
+});
+
+option({
+	Key => 'XRPrivate',
+	Choice => 'Boolean',
+	Name => 'Private Job',
+	Priority => 59,
+	JCL => 1,
+	Values => [
+		{ Key => 'False', Name => 'Print normally', PS => jopt('PRIVATE', "") },
+		{ Key => 'True', Name => 'Private print-out', PS => jopt('PRIVATE', 'YES') },
+	],
+});
+
+PPD::PJL::add_jcl({ PDF => 1 });
+
+PPD::Paper::add_papers({
+	MinW => 252, MaxW => 864,
+	MinH => 278, MaxH => 1368,
+	MarginH => 11.34, MarginV => 11.34,
+	JCL => 1,
+	PSPageSize => sub { my ($m) = @_; return jopt('MEDIA_XSIZE', $m->{W}, 'MEDIA_YSIZE', $m->{H}); },
+	PSCustomPageSize => jopt('MEDIA_XSIZE', '\1', 'MEDIA_YSIZE', '\2'),
+});
+
+switch_group('Media');
+
+option({
+	Key => 'MediaType',
+	Name => 'Media Type',
+	Choice => 'PickOne',
+	Priority => 20,
+	JCL => 1,
+	Values => [
+		map { { Key => $_->[0], Name => $_->[1], PS => jopt('MEDIA_TYPE', $_->[2]) } }
+		(
+		[ 'AutoSelect',				'Automatically Select',				'use-ready'			],
+		[ 'SystemDefault',			'Printer Default',				'system-default'		],
+		[ 'Plain',				'Plain',					'stationery'			],
+		[ 'PlainReload',			'Plain Reloaded',				'stationery-reloaded'		],
+		[ 'Recycled',				'Recycled',					'stationery-recycled'		],
+		[ 'Punched',				'Punched',					'stationery-pre-punched'	],
+		[ 'Lightweight',			'Lightweight',					'stationery-lightweight'	],
+		[ 'LightweightCardStock',		'Lightweight Cardstock',			'cardstock-lightweight'		],
+		[ 'LightweightCardStockReloaded',	'Lightweight Cardstock Reloaded',		'cardstock-lightweight-reloaded' ],
+		[ 'CardStock',				'Cardstock',					'cardstock'			],
+		[ 'CardStockReloaded',			'Cardstock Reloaded',				'cardstock-reloaded',		],
+		[ 'HeavyweightCardstock',		'Heavyweight Cardstock',			'cardstock-heavyweight'		],
+		[ 'HeavyweightCardstockReloaded',	'Heavyweight Cardstock Reloaded',		'cardstock-heavyweight-reloaded' ],
+		[ 'LightweightGlossyCardStock',		'Lightweight Glossy Cardstock',			'cardstock-lightweight-glossy'		],
+		[ 'LightweightGlossyCardStockReloaded',	'Lightweight Glossy Cardstock Reloaded',	'cardstock-lightweight-glossy-reloaded' ],
+		[ 'GlossyCardStock',			'Glossy Cardstock',				'cardstock-glossy',		],
+		[ 'GlossyCardStockReloaded',		'Glossy Cardstock Reloaded',			'cardstock-glossy-reloaded',	],
+		[ 'HeavyweightGlossyCardstock',		'Heavyweight Glossy Cardstock',			'cardstock-heavyweight'		],
+		[ 'HeavyweightGlossyCardstockReloaded',	'Heavyweight Glossy Cardstock Reloaded',	'cardstock-heavyweight-reloaded' ],
+		[ 'PrePrinted',				'Pre-Printed',					'stationery-pre-printed'	],
+		[ 'Letterhead',				'Letterhead',					'stationery-letterhead'		],
+		[ 'Transparency',			'Transparency',					'transparency'			],
+		[ 'Bond',				'Bond',						'bond'				],
+		[ 'Labels',				'Labels',					'labels',			],
+		[ 'Envelopes',				'Envelope',					'envelope',			],
+		[ 'Custom1',				'Custom Type 1',				'custom1'			],
+		[ 'Custom2',				'Custom Type 2',				'custom2'			],
+		[ 'Custom3',				'Custom Type 3',				'custom3'			],
+		[ 'Custom4',				'Custom Type 4',				'custom4'			],
+		[ 'Custom5',				'Custom Type 5',				'custom5'			],
+		[ 'Custom6',				'Custom Type 6',				'custom6'			],
+		[ 'Custom7',				'Custom Type 7',				'custom7'			],
+		[ 'Other',				'Other Type',					'other'				],
+		)
+	],
+});
+
+option({
+	Key => 'MediaColor',
+	Name => 'Media Color',
+	Choice => 'PickOne',
+	Priority => 21,
+	JCL => 1,
+	Values => [
+		map { { Key => $_->[0], Name => $_->[1], PS => jopt('MEDIA_COLOR', $_->[2]) } }
+		(
+		[ 'SystemDefault',	'Printer Default',	'system-default'	],
+		[ 'Blue',		'Blue',			'blue'			],
+		[ 'Buff',		'Buff',			'buff'			],
+		[ 'Clear',		'Clear',		'no-color'		],
+		[ 'Goldenrod',		'Goldenrod',		'goldenrod'		],
+		[ 'Gray',		'Gray',			'gray'			],
+		[ 'Green',		'Green',		'green'			],
+		[ 'Ivory',		'Ivory',		'ivory'			],
+		[ 'Orange',		'Orange',		'orange'		],
+		[ 'Pink',		'Pink',			'pink'			],
+		[ 'Red',		'Red',			'red'			],
+		[ 'White',		'White',		'white'			],
+		[ 'Yellow',		'Yellow',		'yellow'		],
+		[ 'Custom1',		'Custom Color 1',	'custom1'		],
+		[ 'Custom2',		'Custom Color 2',	'custom2'		],
+		[ 'Custom3',		'Custom Color 3',	'custom3'		],
+		[ 'Custom4',		'Custom Color 4',	'custom4'		],
+		[ 'Custom5',		'Custom Color 5',	'custom5'		],
+		[ 'Custom6',		'Custom Color 6',	'custom6'		],
+		[ 'Custom7',		'Custom Color 7',	'custom7'		],
+		[ 'Other',		'Other Color',		'other'			],
+		)
+	],
+});
+
+option({
+	Key => 'InputSlot',
+	Name => 'Input Slot',
+	Choice => 'PickOne',
+	Priority => 30,
+	JCL => 1,
+	Values => [
+		{ Key => 'AutoSelect', Name => 'Automatically Select', PS => jopt('INPUT_TRAY', 'automatic') },
+		{ Key => 'Tray1', Name => 'Tray 1', PS => jopt('INPUT_TRAY', 'tray-1') },
+		{ Key => 'Tray2', Name => 'Tray 2', PS => jopt('INPUT_TRAY', 'tray-2') },
+		{ Key => 'Tray3', Name => 'Tray 3', PS => jopt('INPUT_TRAY', 'tray-3') },
+		{ Key => 'Tray4', Name => 'Tray 4', PS => jopt('INPUT_TRAY', 'tray-4') },
+		{ Key => 'Tray5', Name => 'Tray 5 (Bypass)', PS => jopt('INPUT_TRAY', 'tray-5') },
+		{ Key => 'ManualFeed', Name => 'Tray 5 (Bypass with manual feed)', PS => jopt('INPUT_TRAY', 'manualfeed', 'TRAY_FEED', 'manual-check') },
+	],
+});
+
+option({
+	Key => 'RequiresPageRegion',
+	Values => [{ Key => 'All', String => 'True' }],
+	Default => undef,
+});
+
+define_ui_group({ Key => 'Finishing', Name => 'Finishing' });
+
+option({
+	Key => 'OutputBin',
+	Name => 'Paper Destination',
+	Choice => 'PickOne',
+	Priority => 50,
+	JCL => 1,
+	Values => [
+		{ Key => 'AutoSelect', Name => 'Automatically Select', PS => jopt('OUTPUT', 'automatic') },
+		{ Key => 'Middle', Name => 'Center Tray', PS => jopt('OUTPUT', 'center') },
+		{ Key => 'Left', Name => 'Left Top Tray', PS => jopt('OUTPUT', 'left') },
+		{ Key => 'RightTop', Name => 'Right Top Tray', PS => jopt('OUTPUT', 'right-top') },
+		{ Key => 'RightMiddle', Name => 'Right Middle Tray', PS => jopt('OUTPUT', 'right-middle') },
+	],
+});
+
+option({
+	Key => 'Jog',
+	Name => 'Offset',
+	Choice => 'PickOne',
+	Priority => 51,
+	JCL => 1,
+	Values => [
+		{ Key => 'None', Name => 'No Offset', PS => jopt('OFFSET', 'none') },
+		{ Key => 'EndOfSet', Name => 'Each Set', PS => jopt('OFFSET', 'offset-set'), Default => 1 },
+		{ Key => 'EndOfJob', Name => 'Each Job', PS => jopt('OFFSET', 'offset-job') },
+	],
+});
+
+# This is very similar to *LeadingEdge, but the semantics are subtly different,
+# so we prefer to use a different name.
+option({
+	Key => 'XRFeed',
+	Name => 'Feed Orientation',
+	Choice => 'PickOne',
+	Priority => 59,
+	JCL => 1,
+	Values => [
+		{ Key => 'AutoSelect', Name => 'Automatically Select', PS => jopt('FEED_ORIENTATION', "automatic") },
+		{ Key => 'LongEdge', Name => 'Long Edge First', PS => jopt('FEED_ORIENTATION', 'long-edge-first') },
+		{ Key => 'ShortEdge', Name => 'Short Edge First', PS => jopt('FEED_ORIENTATION', 'short-edge-first') },
+	],
+});
+
+define_ui_group({ Key => 'Quality', Name => 'Print Quality' });
+
+option({
+	Key => 'XRColor',
+	Name => 'Color Printing',
+	Choice => 'PickOne',
+	Priority => 70,
+	JCL => 1,
+	Values => [
+		{ Key => 'Color', Name => 'Color', PS => jopt('COLOR', 'color') },
+		{ Key => 'Mono', Name => 'Monochromatic', PS => jopt('COLOR', 'mono') },
+	],
+});
+
+option({
+	Key => 'OutputMode',
+	Name => 'Print Quality',
+	Choice => 'PickOne',
+	Priority => 71,
+	JCL => 1,
+	Values => [
+		{ Key => 'Standard', Name => 'Standard', PS => jopt('QUALITY', 'standard') },
+		{ Key => 'Enhanced', Name => 'Enhanced', PS => jopt('QUALITY', 'enhanced') },
+		{ Key => 'HighResolution', Name => 'Highest Resolution', PS => jopt('QUALITY', 'highest-resolution') },
+		{ Key => 'TonerSaver', Name => 'Toner Saver', PS => jopt('QUALITY', 'toner-saver') },
+	],
+});
+
+int_option({
+	Key => 'XRContrast',
+	Name => 'Contrast adjustment',
+	Priority => 80,
+	JCL => 1,
+	Int => {
+		Min => -100,
+		Max => 100,
+		Step => 10,
+		FixedPS => sub { jopt('ADJUST_CONTRAST', $_[0]); },
+		CustomKey => 'Contrast',
+	},
+});
+
+int_option({
+	Key => 'XRLightness',
+	Name => 'Lightness adjustment',
+	Priority => 81,
+	JCL => 1,
+	Int => {
+		Min => -100,
+		Max => 100,
+		Step => 10,
+		FixedPS => sub { jopt('ADJUST_LIGHTNESS', $_[0]); },
+		CustomKey => 'Lightness',
+	},
+});
+
+int_option({
+	Key => 'XRSaturation',
+	Name => 'Saturation adjustment',
+	Priority => 82,
+	JCL => 1,
+	Int => {
+		Min => -100,
+		Max => 100,
+		Step => 10,
+		FixedPS => sub { jopt('ADJUST_SATURATION', $_[0]); },
+		CustomKey => 'Saturation',
+	},
+});
+
+int_option({
+	Key => 'XRCyanRed',
+	Name => 'Cyan/Red adjustment',
+	Priority => 83,
+	JCL => 1,
+	Int => {
+		Min => -100,
+		Max => 100,
+		Step => 10,
+		FixedPS => sub { jopt('ADJUST_CYAN_RED', $_[0]); },
+		CustomKey => 'CyanRed',
+	},
+});
+
+int_option({
+	Key => 'XRMagentaGreen',
+	Name => 'Magenta/Green adjustment',
+	Priority => 84,
+	JCL => 1,
+	Int => {
+		Min => -100,
+		Max => 100,
+		Step => 10,
+		FixedPS => sub { jopt('ADJUST_MAGENTA_GREEN', $_[0]); },
+		CustomKey => 'MagentaGreen',
+	},
+});
+
+int_option({
+	Key => 'XRYellowBlue',
+	Name => 'Yellow/Blue adjustment',
+	Priority => 85,
+	JCL => 1,
+	Int => {
+		Min => -100,
+		Max => 100,
+		Step => 10,
+		FixedPS => sub { jopt('ADJUST_YELLOW_BLUE', $_[0]); },
+		CustomKey => 'YellowBlue',
+	},
+});
+
+# As reported by the printer
+fonts( <<'AMEN' );
+AdobeSansMM: Standard "(001.002)" Standard ROM
+AdobeSerifMM: Standard "(001.003)" Standard ROM
+AlbertusMT-Italic: Standard "(001.001)" Standard ROM
+AlbertusMT-Light: Standard "(001.001)" Standard ROM
+AlbertusMT: Standard "(001.001)" Standard ROM
+AntiqueOlive-Bold: Standard "(001.002)" Standard ROM
+AntiqueOlive-Compact: Standard "(001.002)" Standard ROM
+AntiqueOlive-Italic: Standard "(001.002)" Standard ROM
+AntiqueOlive-Roman: Standard "(001.002)" Standard ROM
+Apple-Chancery: Standard "(3.0)" Standard ROM
+Arial-BoldItalicMT: Standard "(001.003)" Standard ROM
+Arial-BoldMT: Standard "(001.003)" Standard ROM
+Arial-ItalicMT: Standard "(001.003)" Standard ROM
+ArialMT: Standard "(001.003)" Standard ROM
+AvantGarde-Book: Standard "(003.000)" Standard ROM
+AvantGarde-BookOblique: Standard "(003.000)" Standard ROM
+AvantGarde-Demi: Standard "(003.000)" Standard ROM
+AvantGarde-DemiOblique: Standard "(003.000)" Standard ROM
+Bodoni-Bold: Standard "(001.003)" Standard ROM
+Bodoni-BoldItalic: Standard "(001.003)" Standard ROM
+Bodoni-Italic: Standard "(001.003)" Standard ROM
+Bodoni-Poster: Standard "(001.003)" Standard ROM
+Bodoni-PosterCompressed: Standard "(001.002)" Standard ROM
+Bodoni: Standard "(001.003)" Standard ROM
+Bookman-Demi: Standard "(003.000)" Standard ROM
+Bookman-DemiItalic: Standard "(003.000)" Standard ROM
+Bookman-Light: Standard "(003.000)" Standard ROM
+Bookman-LightItalic: Standard "(003.000)" Standard ROM
+Carta: Special "(001.001)" Special ROM
+Chicago: Standard "(3.0)" Standard ROM
+Clarendon-Bold: Standard "(001.002)" Standard ROM
+Clarendon-Light: Standard "(001.002)" Standard ROM
+Clarendon: Standard "(001.002)" Standard ROM
+CooperBlack-Italic: Standard "(001.004)" Standard ROM
+CooperBlack: Standard "(001.004)" Standard ROM
+Copperplate-ThirtyThreeBC: Standard "(001.003)" Standard ROM
+Copperplate-ThirtyTwoBC: Standard "(001.003)" Standard ROM
+Coronet-Regular: Standard "(001.002)" Standard ROM
+Courier-Bold: Standard "(004.000)" Standard ROM
+Courier-BoldOblique: Standard "(004.000)" Standard ROM
+Courier-Oblique: Standard "(004.000)" Standard ROM
+Courier: Standard "(004.000)" Standard ROM
+Eurostile-Bold: Standard "(001.002)" Standard ROM
+Eurostile-BoldExtendedTwo: Standard "(001.003)" Standard ROM
+Eurostile-ExtendedTwo: Standard "(001.003)" Standard ROM
+Eurostile: Standard "(001.003)" Standard ROM
+Geneva: Standard "(3.0)" Standard ROM
+GillSans-Bold: Standard "(001.002)" Standard ROM
+GillSans-BoldCondensed: Standard "(001.002)" Standard ROM
+GillSans-BoldItalic: Standard "(001.003)" Standard ROM
+GillSans-Condensed: Standard "(001.002)" Standard ROM
+GillSans-ExtraBold: Standard "(001.002)" Standard ROM
+GillSans-Italic: Standard "(001.003)" Standard ROM
+GillSans-Light: Standard "(001.002)" Standard ROM
+GillSans-LightItalic: Standard "(001.003)" Standard ROM
+GillSans: Standard "(001.003)" Standard ROM
+Goudy-Bold: Standard "(001.003)" Standard ROM
+Goudy-BoldItalic: Standard "(001.003)" Standard ROM
+Goudy-ExtraBold: Standard "(001.002)" Standard ROM
+Goudy-Italic: Standard "(001.003)" Standard ROM
+Goudy: Standard "(001.004)" Standard ROM
+GreekMono737-Bold: Special "(001.001)" Special ROM
+GreekMono737-BoldItalic: Special "(001.001)" Special ROM
+GreekMono737-Italic: Special "(001.001)" Special ROM
+GreekMono737: Special "(001.001)" Special ROM
+GreekMono851-Bold: Special "(001.001)" Special ROM
+GreekMono851-BoldItalic: Special "(001.001)" Special ROM
+GreekMono851-Italic: Special "(001.001)" Special ROM
+GreekMono851: Special "(001.001)" Special ROM
+GreekMono8859-7: Special "(001.001)" Special ROM
+GreekMono8859-7Bold: Special "(001.001)" Special ROM
+GreekMono8859-7BoldItalic: Special "(001.001)" Special ROM
+GreekMono8859-7Italic: Special "(001.001)" Special ROM
+GreekSans737-Bold: Special "(001.001)" Special ROM
+GreekSans737-BoldItalic: Special "(001.001)" Special ROM
+GreekSans737-Italic: Special "(001.000)" Special ROM
+GreekSans737: Special "(001.001)" Special ROM
+GreekSans851-Bold: Special "(001.001)" Special ROM
+GreekSans851-BoldItalic: Special "(001.001)" Special ROM
+GreekSans851-Italic: Special "(001.001)" Special ROM
+GreekSans851: Special "(001.001)" Special ROM
+GreekSans8859-7: Special "(001.001)" Special ROM
+GreekSans8859-7Bold: Special "(001.001)" Special ROM
+GreekSans8859-7BoldItalic: Special "(001.001)" Special ROM
+GreekSans8859-7Italic: Special "(001.001)" Special ROM
+GreekSerif737-Bold: Special "(001.001)" Special ROM
+GreekSerif737-BoldItalic: Special "(001.001)" Special ROM
+GreekSerif737-Italic: Special "(001.001)" Special ROM
+GreekSerif737: Special "(001.001)" Special ROM
+GreekSerif851-Bold: Special "(001.001)" Special ROM
+GreekSerif851-BoldItalic: Special "(001.001)" Special ROM
+GreekSerif851-Italic: Special "(001.001)" Special ROM
+GreekSerif851: Special "(001.001)" Special ROM
+GreekSerif8859-7: Special "(001.001)" Special ROM
+GreekSerif8859-7Bold: Special "(001.001)" Special ROM
+GreekSerif8859-7BoldItalic: Special "(001.001)" Special ROM
+GreekSerif8859-7Italic: Special "(001.001)" Special ROM
+Helvetica-Bold-ISOLatin9: Special "(003.000)" Special ROM
+Helvetica-Bold: Standard "(003.000)" Standard ROM
+Helvetica-BoldOblique: Standard "(003.000)" Standard ROM
+Helvetica-Condensed-Bold: Standard "(003.000)" Standard ROM
+Helvetica-Condensed-BoldObl: Standard "(003.000)" Standard ROM
+Helvetica-Condensed-Oblique: Standard "(003.000)" Standard ROM
+Helvetica-Condensed: Standard "(003.000)" Standard ROM
+Helvetica-ISOLatin9: Special "(003.000)" Special ROM
+Helvetica-Narrow-Bold: Standard "(003.000)" Standard ROM
+Helvetica-Narrow-BoldOblique: Standard "(003.000)" Standard ROM
+Helvetica-Narrow-Oblique: Standard "(003.000)" Standard ROM
+Helvetica-Narrow: Standard "(003.000)" Standard ROM
+Helvetica-Oblique: Standard "(003.000)" Standard ROM
+Helvetica: Standard "(003.000)" Standard ROM
+HoeflerText-Black: Standard "(1.0)" Standard ROM
+HoeflerText-BlackItalic: Standard "(1.0)" Standard ROM
+HoeflerText-Italic: Standard "(1.0)" Standard ROM
+HoeflerText-Ornaments: Special "(001.001)" Special ROM
+HoeflerText-Regular: Standard "(1.0)" Standard ROM
+JoannaMT-Bold: Standard "(001.001)" Standard ROM
+JoannaMT-BoldItalic: Standard "(001.001)" Standard ROM
+JoannaMT-Italic: Standard "(001.001)" Standard ROM
+JoannaMT: Standard "(001.001)" Standard ROM
+LetterGothic-Bold: Standard "(001.007)" Standard ROM
+LetterGothic-BoldSlanted: Standard "(001.006)" Standard ROM
+LetterGothic-Slanted: Standard "(001.005)" Standard ROM
+LetterGothic: Standard "(001.005)" Standard ROM
+LogoFont-Regular: Standard "(001.001)" Standard ROM
+LubalinGraph-Book: Standard "(001.004)" Standard ROM
+LubalinGraph-BookOblique: Standard "(001.004)" Standard ROM
+LubalinGraph-Demi: Standard "(001.004)" Standard ROM
+LubalinGraph-DemiOblique: Standard "(001.004)" Standard ROM
+Marigold: Standard "(001.001)" Standard ROM
+MonaLisa-Recut: Standard "(001.001)" Standard ROM
+Monaco: Standard "(3.0)" Standard ROM
+NewCenturySchlbk-Bold: Standard "(003.000)" Standard ROM
+NewCenturySchlbk-BoldItalic: Standard "(003.000)" Standard ROM
+NewCenturySchlbk-Italic: Standard "(003.000)" Standard ROM
+NewCenturySchlbk-Roman: Standard "(003.000)" Standard ROM
+NewYork: Standard "(001.000)" Standard ROM
+Optima-Bold: Standard "(001.007)" Standard ROM
+Optima-BoldItalic: Standard "(001.001)" Standard ROM
+Optima-Italic: Standard "(001.001)" Standard ROM
+Optima: Standard "(001.006)" Standard ROM
+Oxford: Standard "(001.001)" Standard ROM
+Palatino-Bold: Standard "(003.000)" Standard ROM
+Palatino-BoldItalic: Standard "(003.000)" Standard ROM
+Palatino-Italic: Standard "(003.000)" Standard ROM
+Palatino-Roman: Standard "(003.000)" Standard ROM
+StempelGaramond-Bold: Standard "(001.003)" Standard ROM
+StempelGaramond-BoldItalic: Standard "(001.003)" Standard ROM
+StempelGaramond-Italic: Standard "(001.003)" Standard ROM
+StempelGaramond-Roman: Standard "(001.003)" Standard ROM
+Symbol: Special "(001.008)" Special ROM
+SystemBoldFont: Special "<unknown version>" Special ROM
+SystemFont: Special "<unknown version>" Special ROM
+Tekton: Standard "(001.002)" Standard ROM
+Times-Bold: Standard "(003.000)" Standard ROM
+Times-BoldItalic: Standard "(003.000)" Standard ROM
+Times-Italic: Standard "(003.000)" Standard ROM
+Times-Roman: Standard "(003.000)" Standard ROM
+TimesNewRomanPS-BoldItalicMT: Standard "(001.003)" Standard ROM
+TimesNewRomanPS-BoldMT: Standard "(001.004)" Standard ROM
+TimesNewRomanPS-ItalicMT: Standard "(001.003)" Standard ROM
+TimesNewRomanPSMT: Standard "(001.003)" Standard ROM
+Univers-Bold: Standard "(001.004)" Standard ROM
+Univers-BoldExt: Standard "(001.001)" Standard ROM
+Univers-BoldExtObl: Standard "(001.001)" Standard ROM
+Univers-BoldOblique: Standard "(001.004)" Standard ROM
+Univers-Condensed: Standard "(001.003)" Standard ROM
+Univers-CondensedBold: Standard "(001.002)" Standard ROM
+Univers-CondensedBoldOblique: Standard "(001.002)" Standard ROM
+Univers-CondensedOblique: Standard "(001.003)" Standard ROM
+Univers-Extended: Standard "(001.001)" Standard ROM
+Univers-ExtendedObl: Standard "(001.001)" Standard ROM
+Univers-Light: Standard "(001.004)" Standard ROM
+Univers-LightOblique: Standard "(001.004)" Standard ROM
+Univers-Oblique: Standard "(001.004)" Standard ROM
+Univers: Standard "(001.004)" Standard ROM
+Wingdings-Regular: Special "(Version 2.00)" Special ROM
+Wingdings: Special "(001.001)" Special ROM
+XeroxSans-Bold: Special "(001.001)" Special ROM
+XeroxSans-BoldItalic: Special "(001.001)" Special ROM
+XeroxSans-Italic: Special "(001.001)" Special ROM
+XeroxSans-Light: Special "(001.001)" Special ROM
+XeroxSans-LightRegSym: Special "(001.001)" Special ROM
+XeroxSans: Special "(001.001)" Special ROM
+ZapfChancery-MediumItalic: Standard "(003.000)" Standard ROM
+ZapfDingbats: Special "(002.000)" Special ROM
+AMEN
+
+# Various constraints
+
+constrain(undef, 'PageSize', 'MediaType', sub {
+	my ($ps, $mt) = @_;
+	return !($ps =~ m{^Env} && $mt ne 'Envelopes' && $mt ne 'AutoSelect');
+});
+
+constrain(undef, 'Duplex', 'PageSize', sub {
+	my ($dp, $ps) = @_;
+	return !($dp ne 'None' && $ps !~ m{^(A[345]|ISOB[345]|Letter|Legal)$});
+});
+
+constrain(undef, 'Duplex', 'MediaType', sub {
+	my ($dp, $mt) = @_;
+	return !($dp ne 'None' && $mt =~ /^(Labels|Transparency|Bond|Envelopes)$/);
+});
+
+generate();
-- 
GitLab