e0d56f37ed
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@1184 8092fc87-c524-0410-9efc-e669fe64eaf9
76 lines
3.5 KiB
Plaintext
76 lines
3.5 KiB
Plaintext
This is the format for resources of type GFXRES (font variantion -- these
|
|
have the extension .fon in the original source).
|
|
|
|
All fonts have exactly 96 character descriptors starting with ASCII
|
|
code 32 (space).
|
|
|
|
Everything is stored MSB first unless otherwise specified.
|
|
|
|
position length meaning
|
|
4 0xffffffff if the file is uncompressed.
|
|
Otherwise, the file is compressed. When uncompressed, the
|
|
file complies with the rest of the format as described
|
|
below.
|
|
4 Unused in file, always 0x00000000
|
|
1 Font leading: the vertical distance between lines of text
|
|
in pixels.
|
|
1 Max ascender: the maximum extent of the font upwards from
|
|
the baseline in pixels.
|
|
1 Max descender: the maximum extent of the font downwards
|
|
from the baseline in pixels.
|
|
1 Char spacing: the number of pixels in between the
|
|
successive characters.
|
|
1 Kern amount: the number of pixels (out of char spacing)
|
|
that are used for kerning (explained later). Cannot be
|
|
more than char spacing.
|
|
96 Kerning table: each byte corresponds to a character:
|
|
bits 0-1: right-hand side kerning mask
|
|
bits 2-3: left-hand side kerning mask
|
|
For each pair of chars printed the code figures out whether
|
|
the kerning should be used by taking the right mask of a
|
|
preceeding char and ANDing it with the left mask of a
|
|
succeeding char. If the result is 0, the Kern amount is
|
|
subtracted from Char spacing.
|
|
3 alignment padding: aligns the following char descriptors
|
|
on 8-byte boundary.
|
|
|
|
|
|
Then for all 96 chars:
|
|
Char descriptors (these are frame descriptors from .ani format and some
|
|
bits are most likely never used):
|
|
4 Type index and flags (TypeIndexAndFlags)
|
|
Low 2 bytes:
|
|
bits 0-11 is the index of this frame
|
|
bits 12-15 are the type flags:
|
|
- bit 12-13:
|
|
- 0: (ROM_DRAWABLE)
|
|
- 1: Direct drawable (RAM_DRAWABLE)
|
|
- 2: (SCREEN_DRAWABLE)
|
|
- 3: (OVERLAY_DRAWABLE)
|
|
High 2 bytes (frame flags):
|
|
- bits 0-7: global PLUT to use (probably unused)
|
|
- bit 12: Frame is in cel format (DATA_HARDWARE)
|
|
- bit 13: (DATA_COPY aka DATA_SCREEN)
|
|
- bit 14: (DATA_PACKED)
|
|
- bit 15: (X_FLIP)
|
|
4 Hot spot information (definition of (0, 0) in the image):
|
|
- low 2 bytes: x location of hot spot
|
|
(probably never used)
|
|
- high 2 bytes: y location of hot spot
|
|
This is the baseline of a character. The hotspot Y aligns
|
|
with the baseline of the text.
|
|
4 Image bounds:
|
|
- low 2 bytes: Image width
|
|
- low 2 bytes: Image height
|
|
4 Offset from beginning of the char descriptor for this
|
|
char to the beginning of the frame data.
|
|
|
|
Frames:
|
|
Then for all frames:
|
|
See "Frames" in gfxres.
|
|
|
|
|
|
Initial version 2003-09-02, by Alex Volkov
|
|
Frame descriptors and data from gfxres by Serge van den Boom
|
|
|