5.4.2 PFM Data from Font Data

The installer's PFM generator derives the PFM file from the data in the downloadable font file. The following sections list where the data comes from for each member in the PFM file structures.

5.4.2.1 PFMHEADER Structure

The installer derives the PFM header from the downloaded file as follows.

Member Description

dfVersion 256.
dfSize Size of file.
dfType 128.
dfPoints Height of the font in points (height from header * 72/1200).
dfVertRes 300.
dfHorizRes 300.
dfAscent Baseline position from font header.
dfInternalLeading (Cell height – height + 2)/4 from font header.
dfExternalLeading (height/4) – baseline from font header.
dfItalic Set if the style byte in the header = 1.
dfUnderline 0.
dfStrikeOut 0.
dfWeight Derived from stroke weight.
dfCharSet Based upon HP symbol set.
dfPixWidth If variable width.
dfPixHeight Cell height from the font header.
dfPitchAndFamily Pitch bit is set if fixed pitch.
dfAvgWidth Average of all the character widths (cursor move).
dfMaxWidth Maximum of all the character widths (cursor move).
dfFirstChar First character in the font file.
dfLastChar Last character in the font file.
dfDefaultChar 127 – first character.
dfBreakChar 32 – first character.
dfWidthBytes 0.
dfDevice Offset from beginning of file to device string “PCL/HP LaserJet”.
dfFace Offset from beginning of file to font name.
dfBitsPointer 0.
dfBitsOffset 0.
dfCharOffset If variable pitch.
dfSizeFields Size of this part of the PFM structure.
dfExtMetricsOffset Offset from beginning of file to EXTTEXTMETRIC structure.
dfExtentTable 0.
dfOriginTable 0.
dfPairKernTable 0.
dfTrackKernTable 0.
dfDriverInfo Offset from beginning of file to DRIVERINFO (driver-specific) structure.
dfReserved 0.

The installer derives the Windows weight value from the weight value in the font file header as follows.

Hewlett-Packard weight Windows weight

-7 100 (Thin)
-6 100 (Thin)
-5 200 (Extra light)
-4 200 (Extra light)
-3 300 (Light)
-2 300 (Light)
-1 400 (Normal
0 400 (Normal)
1 500 (Medium)
2 600 (Semi-bold)
3 700 (Bold)
4 700 (Bold)
5 800 (Extra bold)
6 800 (Extra bold)
7 900 (Heavy)

The installer determines the Windows character set (dfCharSet) and the type of translation (in the driver-specific structure, the symbolSet member of the xtbl member) from the symbol set field in the font file.

Hewlett-Packard symbol set Windows character set Translation

8U (Roman-8) 0 (ANSI) Roman-8
0U (USASCII) 0 (ANSI) USASCII
11Q 0N (ECMA-94) 0 (ANSI)
8M (Math-8) 180 (Math-8) 8-bit pass through
15U (PI Font) 181 (PI Font) 8-bit pass through
0B (LineDraw) 182 (LineDraw) 7-bit pass through
4Q (PC Line) 183 (PC Line) 7-bit pass through
0B (TaxLnDrw) 184 (Tax Line) 7-bit pass through
1U (US Legal) 185 (US Legal) 7-bit pass through
All others 0 (ANSI) 7- or 8-bit pass through

For the generic case, the installer checks the font type byte in the font header. If
it is nonzero, the font uses an 8-bit pass through; if the type is zero, the font uses
a 7-bit pass through.

5.4.2.2 EXTTEXTMETRIC Structure

The installer derives extended text metrics from the download header file as follows.

Member Meaning

etmCapHeight Baseline from header – dfInternalLeading.
etmDoubleLowerUnderlineOffset The etmUnderlineOffset member.
etmDoubleLowerUnderlineWidth The etmDoubleUpperUnderlineWidth member.
etmDoubleUpperUnderlineOffset etmUnderlineOffset + etmUnderlineWidth * 2.
etmDoubleUpperUnderlineWidth The etmUnderlineWidth member.
etmKernPairs 0.
etmKernTracks 0.
etmLowerCaseAscent Top offset from character record for 'd'; left offset if landscape font.
etmLowerCaseDescent Character width – left offset from character record for 'p'; height – top if landscape font.
etmMasterHeight Cell height from font file header.
etmMasterUnits The etmMasterHeight member.
etmMaxScale The etmMasterHeight member.
etmMinScale The etmMasterHeight member.
etmOrientation 2 if orientation byte set in header; 1 if not.
etmPointSize Cell height *1440 / 300 from font file header.
etmSize Size of the EXTTEXTMETRIC structure.
etmSlant 0.
etmStrikeOutOffset Left offset – etmStrikeOutWidth from character record for '-'; top offset – etmStrikeOutWidth if landscape font.
etmStrikeOutWidth Character width from record for '-'; character height if landscape font.
etmSubScript Cell height from header.
etmSubScriptSize Cell height from header.
etmSuperScript etmCapHeight – etmXHeight.
etmSuperScriptSize Cell height from header.
etmUnderlineOffset Top offset from character record for '_'; left offset if landscape font.
etmUnderlineWidth Character width from character record for '_'; character height if landscape font.
etmXHeight Top offset from character record for 'x'; left offset if landscape font.

5.4.2.3 DRIVERINFO Structure

The generator derives driver-specific information from the download width tables and symbol set as follows.

Member Meaning

epEscape 0.
epMemUsage ((sum of all character widths + 7) >> 3) * height + 63.
epSize Size of the DRIVERINFO structure.
epVersion 1.
firstchar of xtbl 0.
lastchar of xtbl 0.
len of xtbl 0.
offset of xtbl 0.
symbolSet of xtbl Based upon font symbol set.