Installing Fonts for Oracle Reports in UNIX

This step-by-step tutorial makes use of the free IDAutomation Code 128 barcode font demo package.

Note: Use of this pll, requires a Developer License or above.

1.  Install the barcode font on UNIX. This is useful to view the reports generated in the previewer.

	a.  Copy the IDAutomationC128M.pfa file included in the download to the following directory
	 /usr/lib/X11/fonts/type1
	Note: the user's font path may be different).
	
	b.  Make the necessary changes to the fonts.dir file. Note: Make sure to make a backup of 
	this file before changing it. There are two ways to do this:
	
		1.  Run the executable mkfontsdir. This will update the fonts.dir file with the new 
		barcode fonts installed into the directory. View the file and make sure the fonts 
		are included. If the fonts are not included, use the next method.
		
		2.  Modify the fonts.dir file manually by either incrementing the number on the 
		first line of the file by six (the number represents the number of fonts found 
		in the file) or by adding the following lines to the file:
IDAutomationC128M.pfa -Type1-IDAutomationC128M-medium-r-normal-0-0-0-0-p-0-iso8859-1

c.  Save and exit the file 
	
	d.  Run the following command so openwin will rehash with the new font: 
xset fp rehash
	
2.  Update the Oracle Files - Reports used the following files to determine how to use the fonts.

	a.  FTP the IDAutomationC128M.afm file to the /$ORACLE_HOME/guicommon6/tk60/admin/AFM/ as 
	ASCII, not BINARY
	
	b.  Rename the file on the unix machine to IDAutomationC128M with no afm extension
	(eg. IDAutomationC128M.afm = IDAutomationC128M) Note: This is case sensitive.
	
	c.  Open each file and modify the FontName, FullName and Family Name to be the same as 
	the filename. (eg. FontName IDAutomationC128M)
	
	d.  Make sure a printer is defined in the uiprint.txt file in 
$ORACLE_HOME/guicommon6/tk60/admin/. If no printer is defined, add a line at the end of 
	the file with the following format: 

printername:Postscript:postscript_version:printer_description:printer_definition_file:
(eg. canon:Postscript:2:Canon Printer:canon.ppd:)
	
	e.  Edit the printer definition file from step d) to include the barcode fonts. This file 
	is found in $ORACLE_HOME/guicommon6/tk60/admin/PPD. Add the following lines in the font 
	information section of the file. See sample PPD file in Appendix B.
    	*Font IDAutomationC128M: Standard "(00.1001)" Standard ROM
    
	f.  Modify the Oracle font alias file, uifont.ali, found in 
$ORACLE_HOME/guicommon6/tk60/admin 

1.  Map a font from the list provided in the file to an installed font.
		Note: Choose a font that is not used. Eg. Mapping the font called clean to barcode 
IDAutomationC128M See Appendix A for a sample uifont.ali file.
		 
		2.  (Optional) A utility may be used to verify if the font file has the correct 
		syntax. Run ORACLE_HOME/bin/fontchk60.
		
3.  Generating and distributing the report with the barcode font.

	a.  Generate a report to a postscript file. (eg. File generated=myreport.ps)
	
	b.  Prepend the *.pfa file to the beginning of the file. 
	(eg. cat IDAutomationC128M.pfa myreport.ps = myreport_with_barcode_font.ps)
	
	c.  (Optional) Convert the file to pdf.
	(eg. ps2pdf myreport_with_barcode_font.ps). 
	A new file with a .pdf extension will be created.
	
	d.  Send new pdf or ps file to the printer or any other computer for viewing.

Appendix A – Sample uifont.ali file
NOTE: This sample assumes the user is using a postscript printer, so the postscript section has the font mapping.
Please add the lines to the section that applies to the user's printer.

#
#
$Header: uifont.ali@@/main/TOOLS_DEV2K_992/1 \
#
Checked in on Wed Feb 17 16:49:30 PST 1999 by ksivaram \
# Copyright (c) 1999 by Oracle Corporation. All Rights Reserved. \
# $
#
#
# $Revision: /main/TOOLS_DEV2K_992/1 $
#
# Copyright (c) Oracle Corporation 1994, 1999.
# All Rights Reserved.
#
# DESCRIPTION:
#
# Each line is of the form:
#
#   <Face>.<Size>.<Style>.<Weight>.<Width>.<CharSet> = \
#           <Face>.<Size>.<Style>.<Weight>.<Width>.<CharSet> #
# The <Face> must be the name (string/identifier) of a font face. The
# <Style>, <Weight>, <Width>, and <CharSet> may either be a numeric
# value or a predefined identifier/string. For example, both US7ASCII
# and 1 are valid <CharSet> values, and refer to the same character set.
# The <Size> dimension must be an explicit size, in points.
#
# The following is a list of recognized names and their numeric
# equivalents:
#
#   Styles        Numeric value
#    Plain           0
#    Italic           1
#    Oblique          2
#    Underline         4
#    Outline          8
#    Shadow          16
#    Inverted         32
#    Overstrike        64
#    Blink          128
#
#   Weights        Numeric value
#    Ultralight         1
#    Extralight         2
#    Light           3
#    Demilight         4
#    Medium           5
#    Demibold          6
#    Bold            7
#    Extrabold         8
#    Ultrabold         9
#
#   Widths        Numeric value
#    Ultradense         1
#    Extradense         2
#    Dense           3
#    Semidense         4
#    Normal           5
#    Semiexpand         6
#    Expand           7
#    Extraexpand        8
#    Ultraexpand        9
#
# Styles may be combined; the user can use plus ("+") to delimit parts of a
# style. For example,
#
#    Arial..Italic+Overstrike = Helvetica.12.Italic.Bold
#
# are equivalent, and either one will map any Arial that has both Italic
# and Overstrike styles to a 12-point, bold, italic Helvetica font.
#
# All strings are case-insensitive in mapping. Font faces are likely to
# be case-sensitive on lookup, depending on the platform and surface, so
# care should be taken with names used on the right-hand side; but they
# will be mapped case-insensitively.
#
# See the user's platform documentation for a list of all supported character
# sets, and available fonts.
#
#
# BUGS:
#  o Should accept a RHS ratio (e.g., "Helv = Arial.2/3").
#
 
#===============================================================
[ Global ] # Put mappings for all surfaces here.
 
# Mapping from MS Windows
Arial       = helvetica
"Courier New"   = courier
"Times New Roman" = times
Modern      = helvetica
"MS Sans Serif"  = helvetica
"MS Serif"    = times
"Small Fonts"   = helvetica
 
# Mapping from Macintosh
"New Century Schlbk" = "new century schoolbook"
"New York"    = times
geneva      = helvetica
 
 
#===============================================================
[ Printer ] # Put mappings for all printers here.
 
 
#===============================================================
[ Printer:PostScript1 ] # Put mappings for PostScript level 1 printers here.
 
# Sample Kanji font mappings
...UltraLight..JEUC = "Ryumin-Light-83pv-RKSJ-H"...Light..JEUC
...UltraLight..SJIS = "Ryumin-Light-83pv-RKSJ-H"...Light..SJIS
...ExtraLight..JEUC = "Ryumin-Light-83pv-RKSJ-H"...Light..JEUC
...ExtraLight..SJIS = "Ryumin-Light-83pv-RKSJ-H"...Light..SJIS
...Light..JEUC   = "Ryumin-Light-83pv-RKSJ-H"...Light..JEUC
...Light..SJIS   = "Ryumin-Light-83pv-RKSJ-H"...Light..SJIS
...DemiLight..JEUC = "Ryumin-Light-83pv-RKSJ-H"...Light..JEUC
...DemiLight..SJIS = "Ryumin-Light-83pv-RKSJ-H"...Light..SJIS
.....JEUC      = "GothicBBB-Medium-83pv-RKSJ-H"...Medium..JEUC
.....SJIS      = "GothicBBB-Medium-83pv-RKSJ-H"...Medium..SJIS
 
# Mapping from MS Windows
Roman       = palatino
Script      = "itc zapf chancery"
FixedSys     = courier
System      = helvetica
 
# Mapping from Macintosh
"Avant Garde"   = "itc avant garde gothic"
 
# Mapping from Motif display
fixed       = courier
#clean       = times     Comment this line out
 
lucidatypewriter = courier
lucidabright   = times
 
# Mapping for Barcode Font     Add these two lines
clean = IDAutomationC128M
 
#===============================================================
[ Printer:PostScript2 ] # Put mappings for PostScript level 2 printers here.
 
# Sample Kanji font mappings
...UltraLight..JEUC = "Ryumin-Light-83pv-RKSJ-H"...Light..JEUC
...UltraLight..SJIS = "Ryumin-Light-83pv-RKSJ-H"...Light..SJIS
...ExtraLight..JEUC = "Ryumin-Light-83pv-RKSJ-H"...Light..JEUC
...ExtraLight..SJIS = "Ryumin-Light-83pv-RKSJ-H"...Light..SJIS
...Light..JEUC   = "Ryumin-Light-83pv-RKSJ-H"...Light..JEUC
...Light..SJIS   = "Ryumin-Light-83pv-RKSJ-H"...Light..SJIS
...DemiLight..JEUC = "Ryumin-Light-83pv-RKSJ-H"...Light..JEUC
...DemiLight..SJIS = "Ryumin-Light-83pv-RKSJ-H"...Light..SJIS
.....JEUC      = "GothicBBB-Medium-83pv-RKSJ-H"...Medium..JEUC
.....SJIS      = "GothicBBB-Medium-83pv-RKSJ-H"...Medium..SJIS
 
# Mapping from MS Windows
Roman       = palatino
Script      = "itc zapf chancery"
FixedSys     = courier
System      = helvetica
 
# Mapping from Macintosh
"Avant Garde"   = "itc avant garde gothic"
 
# Mapping from Motif display
fixed       = courier
#clean       = times  Comment this line out
lucidatypewriter = courier
lucidabright   = times
 
# Bar Code Font        Add these two lines
clean = IDAutomationC128M
 
#===============================================================
[ Printer:PCL5 ] # Put mappings for PCL 5 printers here.
 
helvetica     = univers
times       = "cg times"
clean       = "antique olv"
fixed       = courier
lucida      = univers
lucidabright   = "cg times"
lucidatypewriter = courier
"new century schoolbook" = univers
terminal     = "line printer"
 
 
#===============================================================
[ Display ] # Put mappings for all display surfaces here.
 
 
#===============================================================
[ Display:Motif ] # Put mappings for Motif displays here
 
# Fix for bug no 778937 DO NOT MOVE!
Roman.....sjis  = lucida.....jeuc
Script.....sjis  = lucidabright.....jeuc
FixedSys.....sjis = fixed.....jeuc
System.....sjis  = lucida.....jeuc
.....sjis     = .....jeuc
 
# Mapping from MS Windows
Roman       = lucida
Script      = lucidabright
FixedSys     = fixed
System      = lucida
 
# Mapping from Macintosh
"Avant Garde"   = helvetica
"Bookman"     = times
 
 
#===============================================================
[ Display:CM ]   # Put mappings for all CM displays here.
 
# These are DEC-specific, and may need localization
*..Blink     = Blinking
*..Inverted+Underline.Bold = ReverseBoldUnderline
*..Inverted+Underline.   = UnderlineReverse
*..Underline.Bold = UnderlineBold
*..Inverted.Bold = ReverseBold
*...Bold     = Bold
*..Underline   = Underline
*..Inverted    = Reverse
*         = Plain        # The font of last resort

Appendix B – Sample PPD file

NOTE : The new lines to be added are highlighted in yellow.
The PPD file should be available from the printer manufacturer (for postscript printers).
 
*PPD-Adobe: "4.3"
*% Adobe Systems PostScript(R) Printer Description File
*% Copyright 1993-95 Electronics for Imaging, Inc.
*% All Rights Reserved.
*% Permission is granted for redistribution of this file as
*% long as this copyright notice is intact and the contents
*% of the file is not altered in any way from its original form.
*% End of Copyright statement
 
*% *********
*%
*%EFFileVersion: 2.0
*%
*% *********
 
*FormatVersion: "4.3"
*FileVersion: "1.0"
*PCFileName: "EFMC6A20.PPD"
*LanguageVersion: English
*LanguageEncoding: ISOLatin1
*Product: "(iR600-550-60)"
*PSVersion: "(3010.104) 1"
*ModelName: "Canon iR600-550-60 PS Print Server Ver 2.0"
*ShortNickName: "Canon iR600-550-60 PS Ver 2.0"
*NickName: "Canon iR600-550-60 PS Print Server Ver 2.0"
*Manufacturer: "Canon"
 
 
*% PPD body begins
 
*% === EFIFlags, Options and Constraints =========
 
*%EFIGroupName Job/Job :True
*%EFIGroupName Quality/Quality :True
*%EFIGroupName Finishing/Finishing :True
*%EFIGroupName Notes/Notes :True
*%EFIGroupName Options/Device Options :True
 
 
 
*OpenGroup: InstallableOptions/Options Installed
 
 
*%EFIFlags *EFFinisherOpt
*%EFIGroup *EFFinisherOpt Options/Device Options
*OpenUI *EFFinisherOpt/Finisher : PickOne
*DefaultEFFinisherOpt: None
*EFFinisherOpt None/Not Installed: ""
*EFFinisherOpt FinisherYFloor/Finisher: ""
*EFFinisherOpt FinisherYMinCRD/Saddle Finisher: ""
*CloseUI: *EFFinisherOpt
 
*%EFIFlags *EFZFolderOpt
*%EFIGroup *EFZFolderOpt Options/Device Options
*OpenUI *EFZFolderOpt/Paper Folding Unit : Boolean
*DefaultEFZFolderOpt: False
*EFZFolderOpt False/Not Installed: ""
*EFZFolderOpt True/Installed: ""
*CloseUI: *EFZFolderOpt
 
*%EFIFlags *EFInserterOpt
*%EFIGroup *EFInserterOpt Options/Device Options
*OpenUI *EFInserterOpt/Cover Insertion Unit : Boolean
*DefaultEFInserterOpt: False
*EFInserterOpt False/Not Installed: ""
*EFInserterOpt True/Installed: ""
*CloseUI: *EFInserterOpt
 
*%EFIFlags *EFPaperDeckOpt
*%EFIGroup *EFPaperDeckOpt Options/Device Options
*OpenUI *EFPaperDeckOpt/Side Paper Deck : Boolean
*DefaultEFPaperDeckOpt: False
*EFPaperDeckOpt False/Not Installed: ""
*EFPaperDeckOpt True/Installed: ""
*CloseUI: *EFPaperDeckOpt
 
 
 
*CloseGroup: InstallableOptions
 
 
 
*% UIConstraints
*% UIConstraints between Installable Options
*UIConstraints: *EFFinisherOpt None *EFZFolderOpt True
*UIConstraints: *EFZFolderOpt True *EFFinisherOpt None
…(A lot of constraints
UIConstraints: *MediaType P_Interleaved *EFFirstPage ManualFeed
*UIConstraints: *EFFirstPage ManualFeed *MediaType P_Interleaved
 
 
*% General Information and Defaults ===============
*ContoneOnly: False
*FreeVM: "875652"
*FCacheSize 64MB: 131072
*VMOption 64MB: "875652"
*LanguageLevel: "2"
*ColorDevice: False
*DefaultColorSpace: Gray
*TTRasterizer: Type42
*PrintPSErrors: True
*FileSystem: True
*?FileSystem: "
  save
    statusdict /diskstatus known{(True)} {(False)} ifelse = flush
  restore
  "
*End
*Throughput: "10"
*Password: "0"
*ExitServer: "
  count 0 eq
 
… ( A lot of defaults)
*End
*CloseUI: *InputSlot
 
 
 
 
*% EFIEndPrintOptions
 
*%================= Halftone Information ===============
*ScreenFreq: "66.0"
*ScreenAngle: "0"
*DefaultScreenProc: Line
*ScreenProc Line: "
{4 0
{ 3 1 roll 4 -1 roll exch
{dup 6 ge { 6 sub} if exch
dup -1.0 le {pop -1.0} if dup 0.99 gt {pop 0.99} if  
1.0 add 6 2 div mul add dup 6 ge {6 sub} if
dup 0 lt {0 exch sub} if cvi
}
exec 6 mul 3 1 roll exch
{dup 6 ge { 6 sub} if exch
dup -1.0 le {pop -1.0} if dup 0.99 gt {pop 0.99} if  
1.0 add 6 2 div mul add dup 6 ge {6 sub} if
dup 0 lt {0 exch sub} if cvi
}
exec add
{36 31 5 3 9 27
30 20 13 11 17 24
2 16 22 33 26 8
4 10 28 35 32 6
12 18 23 29 19 14
34 25 7 1 15 21
}
exch get 6 dup mul div} exec}
"
*End
 
*DefaultTransfer: Null
*Transfer Null: "{ }"
*Transfer Null.Inverse: "{ 1 exch sub }"
 
*% Black substitution is always on.
*DefaultBlackSubstitution: True
*BlackSubstitution True: ""
 
 
*% PPD pages begins
 
*% Paper Handling ===================
*% Use these entries to set paper size most of the time, unless there is
*% specific reason to use PageRegion.
 
*%EFIFlags *PageSize
*OpenUI *PageSize/Page Size :PickOne
*OrderDependency: 25 AnySetup *PageSize
*DefaultPageSize: Letter
*PageSize Tabloid/11x17: "
   /XJXsetpagesize where { pop (Tabloid) XJXsetpagesize } if "
*End
*PageSize Legal/Legal: "
   /XJXsetpagesize where { pop (Legal) XJXsetpagesize } if "
*End
*PageSize Letter/Letter: "
   /XJXsetpagesize where { pop (Letter) XJXsetpagesize } if "
*End
*PageSize Statement/Statement: "
   /XJXsetpagesize where { pop (Statement) XJXsetpagesize } if "
*End
*PageSize A3/A3: "
   /XJXsetpagesize where { pop (A3) XJXsetpagesize } if "
*End *PageSize B4/B4: "
   /XJXsetpagesize where { pop (B4) XJXsetpagesize } if "
*End
*PageSize A4/A4: "
   /XJXsetpagesize where { pop (A4) XJXsetpagesize } if "
*End
*PageSize B5/B5: "
   /XJXsetpagesize where { pop (B5) XJXsetpagesize } if "
*End
*PageSize A5/A5: "
   /XJXsetpagesize where { pop (A5) XJXsetpagesize } if "
*End
*PageSize Executive/Executive: "
   /XJXsetpagesize where { pop (Executive) XJXsetpagesize } if "
*End
 
*?PageSize: "
    save currentpagedevice /PageSize get aload pop
    2 copy gt {exch} if (Unknown)
    10 dict
        dup [792 1224] (Tabloid) put
        dup [612 1008] (Legal) put
        dup [612 792] (Letter) put
        dup [396 612] (Statement) put
        dup [842 1191] (A3) put
        dup [729 1032] (B4) put
        dup [595 842] (A4) put
        dup [516 729] (B5) put
        dup [420 595] (A5) put
     dup [522 756] (Executive) put
    { exch aload pop 4 index sub abs 5 le exch 5 index sub abs 5 le and
   { exch pop exit } { pop } ifelse
    } bind forall = flush pop pop
    restore "
*End
*CloseUI: *PageSize
 
*% These entries will set up the frame buffer. Usually used with manual feed.
*%
*OpenUI *PageRegion/Page Size :PickOne
*OrderDependency: 30 AnySetup *PageRegion
*DefaultPageRegion: Letter
*PageRegion Tabloid/11x17: "
   /XJXsetpagesize where { pop (Tabloid) XJXsetpagesize } if "
*End
*PageRegion Legal/Legal: "
   /XJXsetpagesize where { pop (Legal) XJXsetpagesize } if "
*End
*PageRegion Letter/Letter: "
   /XJXsetpagesize where { pop (Letter) XJXsetpagesize } if "
*End
*PageRegion Statement/Statement: "
   /XJXsetpagesize where { pop (Statement) XJXsetpagesize } if "
*End
*PageRegion A3/A3: "
   /XJXsetpagesize where { pop (A3) XJXsetpagesize } if "
*End
*PageRegion B4/B4: "
   /XJXsetpagesize where { pop (B4) XJXsetpagesize } if "
*End
*PageRegion A4/A4: "
   /XJXsetpagesize where { pop (A4) XJXsetpagesize } if "
*End
*PageRegion B5/B5: "
   /XJXsetpagesize where { pop (B5) XJXsetpagesize } if "
*End
*PageRegion A5/A5: "
   /XJXsetpagesize where { pop (A5) XJXsetpagesize } if "
*End
*PageRegion Executive/Executive: "
   /XJXsetpagesize where { pop (Executive) XJXsetpagesize } if "
*End
*CloseUI: *PageRegion
 
*DefaultImageableArea: Letter
*ImageableArea Tabloid/11x17: "14 14 778 1210"
*ImageableArea Legal/Legal: "14 14 598 994"
*ImageableArea Letter/Letter: "14 14 598 778"
*ImageableArea Statement/Statement: "14 14 382 598"
*ImageableArea A3/A3: "14 14 828 1177"
*ImageableArea B4/B4: "14 14 715 1018"
*ImageableArea A4/A4: "14 14 581 828"
*ImageableArea B5/B5: "14 14 502 715"
*ImageableArea A5/A5: "14 14 406 581"
*ImageableArea Executive/Executive: "14 14 508 742"
*?ImageableArea: "
 save /cvp { cvi (      ) cvs print ( ) print } bind def
 newpath clippath pathbbox
 4 -2 roll exch 2 {ceiling cvp} repeat
 exch 2 {floor cvp} repeat flush
 restore
"
*End
 
*% These provide the physical dimensions of the paper (by keyword)
*DefaultPaperDimension: Letter
*PaperDimension Tabloid/11x17:    "792 1224"
*PaperDimension Legal/Legal: "612 1008"
*PaperDimension Letter/Letter:   "612 792"
*PaperDimension Statement/Statement: "396 612"
*PaperDimension A3/A3:   "842 1191"
*PaperDimension B4/B4: "729 1032"
*PaperDimension A4/A4: "595 842"
*PaperDimension B5/B5: "516 729"
*PaperDimension A5/A5: "420 595"
*PaperDimension Executive/Executive: "522 756"
 
*% PPD pages ends
 
 
*% Font Information =====================
*% DefaultFont: Courier
*%Font IDAutomationC128M: Standard "(00.1001)" Standard ROM
*%Font AdobeSansMM: Standard "(001.000)" Standard ROM
*%Font AdobeSerifMM: Standard "(001.001)" Standard ROM
*Font Arial-BoldItalicMT: Standard "(MS core font:v2.00)" Standard Disk
*Font Arial-BoldMT: Standard "(MS core font :V2.00)" Standard Disk
*Font Arial-ItalicMT: Standard "(MS core font:V2.00)" Standard Disk
*Font ArialMT: Standard "(MS core font:V2.00)" Standard Disk
*Font Courier: Standard "(003.000)" ExtendedRoman Disk
*Font Courier-Bold: Standard "(003.000)" ExtendedRoman Disk
*Font Courier-BoldOblique: Standard "(003.000)" ExtendedRoman Disk
*Font Courier-Oblique: Standard "(003.000)" ExtendedRoman Disk
*Font Helvetica: Standard "(002.000)" ExtendedRoman Disk
*Font Helvetica-Bold: Standard "(002.000)" ExtendedRoman Disk
*Font Helvetica-BoldOblique: Standard "(002.000)" ExtendedRoman Disk
*Font Helvetica-Condensed: Standard "(002.000)" ExtendedRoman Disk
*Font Helvetica-Condensed-Bold: Standard "(002.000)" ExtendedRoman Disk
*Font Helvetica-Condensed-BoldObl: Standard "(002.000)" ExtendedRoman Disk
*Font Helvetica-Condensed-Oblique: Standard "(002.000)" ExtendedRoman Disk
*Font Helvetica-Narrow: Standard "(002.000)" ExtendedRoman ROM
*Font Helvetica-Narrow-Bold: Standard "(002.000)" ExtendedRoman ROM
*Font Helvetica-Narrow-BoldOblique: Standard "(002.000)" ExtendedRoman ROM
*Font Helvetica-Narrow-Oblique: Standard "(002.000)" ExtendedRoman ROM
*Font Helvetica-Oblique: Standard "(002.000)" ExtendedRoman Disk
*Font Times-Bold: Standard "(002.000)" ExtendedRoman Disk
*Font Times-BoldItalic: Standard "(002.000)" ExtendedRoman Disk
*Font Times-Italic: Standard "(002.000)" ExtendedRoman Disk
*Font TimesNewRomanPS-BoldItalicMT: Standard "(MS core font:V2.00)" Standard Disk
*Font TimesNewRomanPS-BoldMT: Standard "(MS core font:V2.00)" Standard Disk
*Font TimesNewRomanPS-ItalicMT: Standard "(MS core font:V2.00)" Standard Disk
*Font TimesNewRomanPSMT: Standard "(MS core font:V2.00)" Standard Disk
*%Font Times-Roman: Standard "(002.000)" ExtendedRoman Disk
*Font Times-Roman: Standard "(001.007)" Standard ROM
*%Font Univers: Standard "(001.003)" Standard Disk
*%Font Univers-Bold: Standard "(001.003)" Standard Disk
*%Font Univers-BoldExt: Standard "(001.000)" Standard Disk
*%Font Univers-BoldExtObl: Standard "(001.000)" Standard Disk
*%Font Univers-BoldOblique: Standard "(001.003)" Standard Disk
*%Font Univers-Condensed: Standard "(001.002)" Standard Disk
*%Font Univers-CondensedBold: Standard "(001.001)" Standard Disk
*%Font Univers-CondensedBoldOblique: Standard "(001.001)" Standard Disk
*%Font Univers-CondensedOblique: Standard "(001.002)" Standard Disk
*%Font Univers-Extended: Standard "(001.000)" Standard Disk
*%Font Univers-ExtendedObl: Standard "(001.000)" Standard Disk
*%Font Univers-Light: Standard "(001.003)" Standard Disk
*%Font Univers-LightOblique: Standard "(001.003)" Standard Disk
*%Font Univers-Oblique: Standard "(001.003)" Standard Disk
*?FontQuery: "
  save
  { count 1 gt
   { exch dup 127 string cvs (/) print print (:) print
    /Font resourcestatus {pop pop (Yes)} {(No)} ifelse =
   } { exit } ifelse
  } bind loop
  (*) = flush
  restore"
*End
 
*?FontList: "
  save (*) {cvn ==} 128 string /Font resourceforall
  (*) = flush restore"
*End
 
*% Printer Messages (verbatim from printer):
*Message: "%%[ exitserver: permanent state may be changed ]%%"
*Message: "%%[ Flushing: rest of job (to end-of-file) will be ignored ]%%"
*Message: "\FontName\ not found, using Courier"
 
*% Status (format: %%[ status: <one of these> ]%% )
*Status: "idle"
*Status: "busy"
*Status: "waiting"
*Status: "printing"
*Status: "scanning"
*Status: "PrinterError: Copier is busy"
*Status: "PrinterError: Copier is in standby mode"
*Status: "PrinterError: Service cable is disconnected"
*Status: "PrinterError: Out of fuser oil"
*Status: "PrinterError: Copier door is open"
*Status: "PrinterError: Paper jam"
*Status: "PrinterError: Out of paper"
*Status: "PrinterError: Waste toner container is full"
*Status: "PrinterError: Out of toner"
*Status: "PrinterError: There is no key"
*Status: "PrinterError: There is no control card"
*Status: "PrinterError: ID mode"
*Status: "PrinterError: Copier needs attention; see copier control panel"
*Status: "PrinterError: Load A3 paper"
*Status: "PrinterError: Load A4 paper"
*Status: "PrinterError: Load 11x17 paper"
*Status: "PrinterError: Load Letter paper"
*Status: "PrinterError: Load Letter-R paper"
*Status: "PrinterError: Load A4-R paper"
*Status: "PrinterError: Load B4 paper"
*Status: "PrinterError: Load B5 paper"
*Status: "PrinterError: Load B5-R paper"
*Status: "PrinterError: Load Legal paper"
*Status: "PrinterError: Check copier power and cable connection"
*Status: "PrinterError: Check film scanner connection"
*Status: "PrinterError: Copier is warming up"
*Status: "PrinterError: Copier communication error; call: copier technician"
*Status: "PrinterError: Set paper size, then load manual feed paper"
*Status: "PrinterError: An unknown copier error occurred"
*Status: "PrinterError: Load manual feed paper"
*Status: "PrinterError: Remove manual feed paper, then set size"
*Status: "PrinterError: Copier is disconnected"
*Status: "PrinterError: Film Scanner has copy control"
*Status: "Copier communication error; call copier technician"
 
*% Input Sources (format: %%[ status: <stat>; source: <one of these> ]%% )
*Source: "EtherTalk"
*Source: "Novell IPX"
*Source: "TCP/IP"
*Source: "Parallel"
 
*% Printer Error (format: %%[ PrinterError: <one of these> ]%%)
*PrinterError: "Copier is busy"
*PrinterError: "Copier is in standby mode"
*PrinterError: "Service cable is disconnected"
*PrinterError: "Out of fuser oil"
*PrinterError: "Copier door is open"
*PrinterError: "Paper jam"
*PrinterError: "Out of paper"
*PrinterError: "Waste toner container is full"
*PrinterError: "Out of toner"
*PrinterError: "There is no key"
*PrinterError: "There is no control card"
*PrinterError: "ID mode"
*PrinterError: "Copier needs attention; see copier control panel"
*PrinterError: "Load A3 paper"
*PrinterError: "Load A4 paper"
*PrinterError: "Load 11x17 paper"
*PrinterError: "Load Letter paper"
*PrinterError: "Load Legal paper"
*PrinterError: "Load Letter-R paper"
*PrinterError: "Load A4-R paper"
*PrinterError: "Load B4 paper"
*PrinterError: "Load B5 paper"
*PrinterError: "Load B5-R paper"
*PrinterError: "Check copier power and cable connection"
*PrinterError: "Check film scanner connection"
*PrinterError: "Copier is warming up"
*PrinterError: "Copier communication error; call copier technician"
*PrinterError: "Set paper size, then load manual feed paper"
*PrinterError: "An unknown copier error occurred"
*PrinterError: "Load manual feed paper"
*PrinterError: "Remove manual feed paper, then set size"
*PrinterError: "Copier is disconnected"
*PrinterError: "Film Scanner has copy control"
 
 
 
*% Color Separation Information ====================
 
 
*% Custom Inks for Fiery Logo
*InkName: P300FieryBlue/Fiery Blue
*InkName: P199FieryRed/Fiery Red
*InkName: PblackFieryBlack/Fiery Black
*CustomCMYK P300FieryBlue: ".9 .9 .0 .0"
*CustomCMYK P199FieryRed: ".0 .9 .9 .0"
*CustomCMYK PblackFieryBlack: ".2 .1 .1 .9"
 
*DefaultColorSep: Black.100lpi.400dpi
 
*% ------Halftone Text Mode (Default)
*ColorSepScreenAngle Cyan.100lpi.400dpi: "0"
*ColorSepScreenAngle Magenta.100lpi.400dpi: "0"
*ColorSepScreenAngle Yellow.100lpi.400dpi: "0"
*ColorSepScreenAngle Black.100lpi.400dpi: "0"
*ColorSepScreenFreq Cyan.100lpi.400dpi: "50.0"
*ColorSepScreenFreq Magenta.100lpi.400dpi: "50.0"
*ColorSepScreenFreq Yellow.100lpi.400dpi: "50.0"
*ColorSepScreenFreq Black.100lpi.400dpi: "50.0"
*ColorSepScreenProc Cyan.100lpi.400dpi: "{6 5
{ 3 1 roll 4 -1 roll exch
{dup 8 ge { 8 sub} if exch
dup -1.0 le {pop -1.0} if dup 0.97 gt {pop 0.97} if  
1.0 add 8 2 div mul add dup 8 ge {8 sub} if
dup 0 lt {0 exch sub} if cvi
}
exec 8 mul 3 1 roll exch
{dup 8 ge { 8 sub} if exch
dup -1.0 le {pop -1.0} if dup 0.97 gt {pop 0.97} if  
1.0 add 8 2 div mul add dup 8 ge {8 sub} if
dup 0 lt {0 exch sub} if cvi
}           
exec add
[
48 18 8 16  46 16 6 14
56 60 32 24  54 58 30 22
 4 12 44 40  2 10 42 38
28 20 52 64  26 18 50 62
 
45 15 5 13  47 17 7 15
53 57 29 21  55 59 31 23
 1 9 41 37  3 11 43 39
25 17 49 61  27 19 51 63
]
exch get 8 dup mul div} exec}"
*End
 
*ColorSepScreenProc Magenta.100lpi.400dpi: "{4 7
{ 3 1 roll 4 -1 roll exch
{dup 8 ge { 8 sub} if exch
dup -1.0 le {pop -1.0} if dup 0.97 gt {pop 0.97} if  
1.0 add 8 2 div mul add dup 8 ge {8 sub} if
dup 0 lt {0 exch sub} if cvi
}
exec 8 mul 3 1 roll exch
{dup 8 ge { 8 sub} if exch
dup -1.0 le {pop -1.0} if dup 0.97 gt {pop 0.97} if  
1.0 add 8 2 div mul add dup 8 ge {8 sub} if
dup 0 lt {0 exch sub} if cvi
}           
exec add
[
48 18 8 16  46 16 6 14
56 60 32 24  54 58 30 22
 4 12 44 40  2 10 42 38
28 20 52 64  26 18 50 62
 
45 15 5 13  47 17 7 15 "
*End
 
*ColorSepScreenProc Yellow.100lpi.400dpi: "{5 2
{ 3 1 roll 4 -1 roll exch
{dup 8 ge { 8 sub} if exch
dup -1.0 le {pop -1.0} if dup 0.97 gt {pop 0.97} if  
1.0 add 8 2 div mul add dup 8 ge {8 sub} if
dup 0 lt {0 exch sub} if cvi
}
exec 8 mul 3 1 roll exch
{dup 8 ge { 8 sub} if exch
dup -1.0 le {pop -1.0} if dup 0.97 gt {pop 0.97} if  
1.0 add 8 2 div mul add dup 8 ge {8 sub} if
dup 0 lt {0 exch sub} if cvi
}           
exec add
[
48 18 8 16  46 16 6 14
56 60 32 24  54 58 30 22
 4 12 44 40  2 10 42 38
28 20 52 64  26 18 50 62
 
45 15 5 13  47 17 7 15
53 57 29 21  55 59 31 23
 1 9 41 37  3 11 43 39
25 17 49 61  27 19 51 63
]
exch get 8 dup mul div} exec}"
*End
 
*ColorSepScreenProc Black.100lpi.400dpi: "{2 4
{ 3 1 roll 4 -1 roll exch
{dup 8 ge { 8 sub} if exch
dup -1.0 le {pop -1.0} if dup 0.97 gt {pop 0.97} if  
1.0 add 8 2 div mul add dup 8 ge {8 sub} if
dup 0 lt {0 exch sub} if cvi
}
exec 8 mul 3 1 roll exch
{dup 8 ge { 8 sub} if exch
dup -1.0 le {pop -1.0} if dup 0.97 gt {pop 0.97} if  
1.0 add 8 2 div mul add dup 8 ge {8 sub} if
dup 0 lt {0 exch sub} if cvi
}           
exec add
[
48 18 8 16  46 16 6 14
56 60 32 24  54 58 30 22
 4 12 44 40  2 10 42 38
28 20 52 64  26 18 50 62
 
45 15 5 13  47 17 7 15
53 57 29 21  55 59 31 23
 1 9 41 37  3 11 43 39
25 17 49 61  27 19 51 63
]
exch get 8 dup mul div} exec}"
*End
 
*% PPD last modified 4.15.99
*% end of PPD file

IDAutomation fully supports IDAutomation's fonts, ensuring they are created according to the standards for the symbology and type of font. However, IDAutomation does not have experience with Oracle or UNIX. Because the installation of fonts is OS-specific, all procedures for installing fonts on the UNIX platform should be included in the documentation of the appropriate platform.

IDAutomation has 2 installation instruction documents to review that may help as a guide:

  1. Font Installation on UNIX and Other Systems
  2. Oracle Reports Barcode FAQ & Tutorial

The above installation examples were provided by Regimbal Solutions, a consulting company that also wrote the IDAutomation.pll file.