blob: 24f908ea95f449dc9c49757050d39b7a2098d823 [file] [log] [blame]
/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
* This describes the internal format used to pack a set of character glpyhs so
* we can render strings by drawing one character at a time.
*
* The format is this:
*
* +-------------------------+
* | FontArrayHeader |
* +-------------------------+
* | FontArrayEntryHeader[0] |
* +-------------------------+
* | raw image data[0] |
* +-------------------------+
* | FontArrayEntryHeader[1] |
* +-------------------------+
* | raw image data[1] |
* +-------------------------+
* | FontArrayEntryHeader[2] |
* +-------------------------+
* | raw image data[2] |
* +-------------------------+
* ...
* +-------------------------+
* | FontArrayEntryHeader[n] |
* +-------------------------+
* | raw image data[n] |
* +-------------------------+
*
* The FontArrayHeader describes how many characters will be encoded.
* Each character encoding consists of a FontArrayEntryHeader followed
* immediately by the raw image data for that character.
*/
#ifndef VBOOT_REFERENCE_BMPBLK_FONT_H_
#define VBOOT_REFERENCE_BMPBLK_FONT_H_
#include "bmpblk_header.h"
#define FONT_SIGNATURE "FONT"
#define FONT_SIGNATURE_SIZE 4
typedef struct FontArrayHeader {
uint8_t signature[FONT_SIGNATURE_SIZE];
uint32_t num_entries; /* Number of chars encoded here. */
} __attribute__((packed)) FontArrayHeader;
typedef struct FontArrayEntryHeader {
uint32_t ascii; /* What to show. Could even be UTF? */
ImageInfo info; /* Describes the bitmap. */
/*
* The image to use follows immediately, NOT compressed. It's
* uncompressed because each glyph is only a few hundred bytes, but
* they have much in common (colormaps, for example). When we add the
* whole font blob to the bmpblk, it will be compressed as a single
* item there.
*/
} __attribute__((packed)) FontArrayEntryHeader;
#endif /* VBOOT_REFERENCE_BMPBLK_FONT_H_ */