Action12

From GRFSpecs
Revision as of 22:28, 11 February 2006 by Lakie (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Load font glyphs

Action 12

Load font glyphs

-=Description=-

This action allows defining glyphs for any [1] character in the BMP (Basic Multilingual Plane), i.e. up to U+FFFF.

Available since 2.0.1 alpha 73.

-=Format=-

The data looks as follows:

-+<sprite-number> * <length> 12 <num-def> <nowiki>(<font> <num-char> <base-char>){n}</nowiki>+-

||Element|Size|Description

<sprite-number>|dec|A sequential sprite number

<length>|dec|The total number of bytes in the action

12|B|Action 12

num-def|B|Number of definitions

font|B|Font for which to provide glyphs

num-char|B|Number of consecutive glyphs

base-char|W|First Unicode character for which to provide glyphs||

Following the action 12 must be the real sprites for all glyphs, as many sprites as all <num-char> added up.

-=Filling in the terms=-

sprite-number

The current sprite number.

length

The total number of bytes in this action 12.

num-def

This specifies how many definitions follow, each having <font>, <basechar> and <numchar>.

font

The font to define glyphs for. The value can be 0 for the normal size, 1 for the small size, or 2 for the large size font.

num-char

The number of characters in the range.

base-char

The first Unicode character in a range to provide glyphs for.  This can be any Unicode character in the BMP.

Note that all characters of a definition (i.e., <font> <basechar> <numchar> triplet) must fit within a "block" of 128 characters, i.e. you cannot define characters U+00E0..U+011F with one definition; instead you must split it into U+00E0..U+00FF and U+0100..U+011F because those are two different blocks.

-=Example=-

-+ 583 * 9 12 02 00 08 F8 00 0C 00 01+-

||Byte|Meaning

583|<sprite-number>

9|<length> of the action in bytes; start counting at 12 (<action>)

12|<action>: sets this pseudo-sprite to function as action 12

02|<num-def>: we're defining two ranges of characters

00|<font>: first range, defining font 0 (normal size)

08|<num-char>: defining 8 characters in a row

F8 00|<base-char>: character U+00F8 is the first character

00|<font>: second range, also defining font 0 (normal size)

0C|<num-char>: defining another 12 characters

00 01|<base-char>: character U+0100 is the first character||

Therefore, this action 12 defines glyphs for Unicode characters U+00F8..U+010B. They are split into two definitions because a definition cannot cross a block boundary.

After this action 12 follow 20 real sprites containing the glyphs for the above characters.