PCL Font Download

This describes the simplest type of font download: Raster image fonts. When saved to a file, these are usually saved as .SFP fles. These files can be downloaded to the printer to make the font available for selection and printing. There are other types of fonts including the scaleable .SFS format and the .TFM formated which is based on TrueType fonts.

To create a soft font:

  1. Send assigned font ID number. Ec*c#D
  2. Send font descriptor. Ec)s#Wdata where # is the length of the data and data is the Font Descriptor as defined below
  3. Send character code. Ec*c#E
  4. Send character descriptor. Ec(s#Wdata where # is the length of the data and data is the Character descriptor as defined below.

Font descriptor

Offset Len Name Notes LJ DJ
0 2 Font descriptor size 40h
64
44h
68
48*
2 1 Format

  • 0 300 dpi bitmap font
  • 10 Intellefont bound scalable
  • 11 Intellefont unbound scalable
  • 15 TrueType scalable
  • 20 bitmap font with specific resolution
00 14h
20
00
3 1 Font Type
  • 0 7-bit (32-127 printable)
  • 1 8-bit (32 to 127 and 160-255 printable)
  • 2 PC-8 (all printable except 0,7,15,27)

To access unprintable characters, use Print Data Transparent.

00 05
4 1 Style MSB (always 0 for Format 0 fonts) 00 00
5 1 Reserved 00 00
6 2 Baseline Distance (unsigned integer) Distance from top of cell to baseline (from 0 to cell height in dots minus 1). 2600 2600
8 2 Cell Width (unsigned word) Width of cell in dots. 1900 3200*
10 2 Cell Height (unsigned word) Height of cell in dots. 3200 3200
12 1 Orientation (unsigned byte) Orientation of font (0=portrait, 1=landscape) 00 00
13 1 Spacing (byte) Spacing of font
  • 0=fixed
  • 1=proportional
00 00
14 2 Symbol Set (unsigned word) Symbol set for this font (value field times 32 + ASCII decimal value of termination character - 64); range 0 to 2047. HP uses 0 to 1023. Termination characters can be "A" to 'V". 1500 1500
16 2 Pitch (default HMI) (unsigned word) Pitch of font in quarter-dots. Defines default HMI for font. Range: 0 to 16800. 6400 6400
18 2 Height (unsigned word) Heigth of font in quarter-dots. Value is converted to points (1/720"=1 pt). Range: 0-10922. C700 C700
20 2 xHeight (unsigned word) Height of lower case "x" in quarter-dots. (Ignored by HP LJ Series II, ...) 6400 6400
22 1 Width Type (signed byte) Proportionate width of characters in font. (Ignored by HP LJ Series II, ...)
  • -2=condensed
  • -1=semi-condensed
  • 0=normal
  • 1=semi-expanded
  • 2=expanded
00 00
23 1 Style (unsigned byte) Style of font; 0=upright, 1=italics 00 00
24 1 Stroke Weight (signed byte): Thickness of strokes; (-7 to 7; standard is 0, bold is 3, light is -3). 06 06
25 1 Typeface

  • 0 LinePrinter
  • 3 Courier
  • 4 Helv
  • 5 TmsRmn
  • 6 LetterGothic
  • 8 Prestige
  • 11 Presentations
  • 17 Optima
  • 18 Garamond
  • 19 CooperBlack
  • 20 CoronetBold
  • 21 Broadway
  • 22 BauerBodoniBlackCondensed
  • 23 CenturySchollbook
  • 24 UniversityRoman
03 03
26 1 Typeface-x MSB of typeface value. Always 0 for format 0 fonts. Top four bits used as a mfgr code and the lower four are combined with the Typeface to form an extended, 12 bit Typeface field.
Mfgrs:
  • 1 Agfa
  • 2 Bitstream
  • 3 Linotype
  • 4 Monotype
  • 5 Adobe
00 00
27 1 Serif Style (unsigned byte): (Ignored by LJ II,...)
  • 0 Sans Serif Square
  • 1 Sans Serif Round
  • 2 Serif Line
  • 3 Serif Triangle
  • 4 Serif Swath
  • 5 Serif Block
  • 6 Serif Bracket
  • 7 Rounded Bracket
  • 8 Flair Stroke
00 00
28 1 Quality Always 0 in format 0 fonts 00 00
29 1 Placement Always 0 in format 0 fonts 00 02
30 1 Underline Distance (signed byte) Distance from baseline to top dot row of underline in dots. 0=at baseline, positive=above baseline. 02 02
31 1 Underline Height (unsigned byte) Thickness of underline in dots. (LJ II is always set to 3 dots.) F6h F6h
32 2 Text Height (unsigned word) Font's optimum inter-line spacing, in quarter-dots. (Ignored by LJ II) EF00h EF00h
34 2 Text Width (unsigned word) Font's optimum character spacing in quarter-dots. (Ignored by LJ II) 6400h 6400h
36 2 First Code 2000h 2100h
38 2 Last Code 7F00h 7F00h
40 1 Pitch Extended (unsigned byte) Extends pitch an extra eight bits. Value is in 1024ths of one dot. E.g. 17 pitch: Pitch=70 (17.5 dots) and Pitch Extended=150 (0.1465 dots additional). 41 41
41 1 Height Extended (unsigned byte) Extends height an extra eight bits. Value is 1024th of one dot. 00 00
42 2 Cap Height 0000 0000
44 4 Font Number 0 0
48-63 16 Font Name (ASCII) String for font name.
64-65 2 X Resoluton
/Scale Factor
Omitted or used for copyright on format 0 fonts. X Resolution on format 20 fonts. Scale Factor on format 10, 11 and 15 fonts
66-67 2 Y Resolution
/Master Underline Position
Omitted or used for copyright on format 0 fonts. Y Resolution on format 20 fonts. Master Underline Position on type 15 fonts.
68 2 Master Underline Thickness Omitted for format 0 fonts.

Character Descriptor

Offset Len Name Notes LJ DJ
0 1 Format (unsigned byte): Format of the character descriptor byte. 04 05
1 1 Continuation (Boolean): 0=data is character descriptor block, or 1=continuation of data associated with previous character descriptor (for large descriptors exceeding 32,767 bytes (max of value field). If so, bytes from 2 are character data. 00 00
2 1 Descriptor Size (unsigned byte): Size of character descriptor, in bytes. 14 06
3 1 Class (Char.Type) (unsigned byte): Format of character data. 01 00
4 1 Orientation (unsigned byte): 0=portrait, 1=landscape; must match font.
5 1 Reserved
6 2 Left Offset (unsigned word): Distance from left of physical page, in dots. (range: -4200 to 4200)
8 2 Top Offset (unsigned word): Distance from top of physical page, in dots. (range: -4200 to 4200)
10 2 Character Width (unsigned word): Width of character in dots. (Range: 1 to 4200). Cannot extend beyond cell boundary, as specified in font descriptor.
12 2 Character Height (unsigned word): Height of character in dots. (Range: 1 to 4200). Cannot extend beyond cell boundary.
14 2 Delta X (signed word): Number of quarter-dots by which horizontal position will be incremented after printing character. Used for proportional spaced characters. (Range: 0 to 16800)
16 Character Data Dot-per-bit image; in rows; left-to-right, parallel to raster scan; zero-bit filled to make an integral number of bytes.

Questions:

Comments: