PCC uses bitmapped fonts. Those come in the resource file (PCC 1.x: CC.RES), or in separate files (PCC2).
+0 2 BYTEs Signature, 'FN'
+2 WORD Number of fonts (styles) in this file
+4 8n BYTEs Font index. For each font, one record of
+0 DWORD Font Address
+4 BYTE Font Flags
Bit 0 Bold
Bit 1 Italic
+5 BYTE Font Encoding
0 System encoding
1 Codepage 866 (Cyrillic)
2 Unicode
+6 2 BYTEs Unused, 0
+? n BYTEs Font name, Pascal string (leading length byte)The "Font Address" fields point to the individual fonts, which have this format:
+0 WORD Font type
1 Bitmap font
2 Reserved
3 Bitmap font with pseudo anti-aliasing
+2 WORD Font height
+4 WORD Number of characters
+6 8n BYTEs Character headers
+0 DWORD Character Data Address
+4 WORD Character Id
+6 WORD Character WidthThe "Character Data Address" field points to the font data. For bitmap fonts, this is "Font height" lines of "(Character width + 7) / 8" bytes in big-endian order: the left-most pixel is the MSB of the first byte.
For bitmap fonts with pseudo anti-aliasing, the anti-aliasing information follow as
+0 WORD Number of entries
+2 2n WORDs Pairs of (x,y). These pixels receive only half
intensity. These pixels' values in the main bitmap
are ignored. c2reshack saves them as zero, but this
is not guaranteed.The "Character Id" field contains the character code. Characters should be stored in order of ascending Character Id.
- The system encoding is codepage 437 for PCC 1.x, Latin-1 for PCC2. The Character Id is the character number; fonts must have 256 characters, where each character's index equals its Id. Codes 256*b+a are reserved for ligatures of the form "ab", but this was never implemented.
- Likewise, codepage 866 must have 256 characters in the correct order. This is supported by PCC 1.x only.
- For Unicode fonts, the character code is the character number. There is no way to represent characters outside the BMP. The character sequence can contain gaps.
Font Use in PCC
All PCCs support only one font per file. The font flags or name are not evaluated.
PCC 1.x uses additional nonstandard glyphs; not all fonts have all glyphs.
Code Glyph Note
---- ------------------------------ ----------------------------
7 bullet regular symbol in VGA font
16 right-pointing triangle "play" or "FF" symbol
17 left-pointing triangle "REW" symbol
18 tiny vertical bar with 16 and 17 for "begin"/"end"
26 right-pointing arrow regular symbol in VGA font
27 left-pointing arrow regular symbol in VGA font
29 bent arrow ("tab")
30 up-arrow regular symbol in VGA font
31 down-arrow regular symbol in VGA font
124 small slash normally a "|"
156 ornament left used in VCR
157 ornament right used in VCR
159 "times" symbol ("x") normally a currency symbol
221 left-pointing triangle used in help
222 right-pointing triangle used in helpPCC2 originally re-used PCC 1.x fonts, but with Latin-1 encoding instead of codepage 437. Since 1.99.12, it uses Unicode fonts that support a superset of the WGL4 repertoire. In addition, the following characters are used with private encodings:
Unicode Glyph
--------- -----------------------------------------
E100-E10F Replacement characters 0..F upper-left
E110-E11F Replacement characters 0..F upper-right
E120-E12F Replacement characters 0..F bottom-left
E130-E13F Replacement characters 0..F bottom-right
These are used to render unsupported characters.
E140 bent arrow (PCC 1.x #29)
E142 ornament left (PCC 1.x #156)
E143 ornament right (PCC 1.x #157)
E144 tiny vertical bar (PCC 1.x #18)


