1 /* Copyright (c) 2013 The Chromium OS Authors. All rights reserved. 2 * Use of this source code is governed by a BSD-style license that can be 3 * found in the LICENSE file. 4 * 5 * This describes the internal format used to pack a set of character glpyhs so 6 * we can render strings by drawing one character at a time. 7 * 8 * The format is this: 9 * 10 * +-------------------------+ 11 * | FontArrayHeader | 12 * +-------------------------+ 13 * | FontArrayEntryHeader[0] | 14 * +-------------------------+ 15 * | raw image data[0] | 16 * +-------------------------+ 17 * | FontArrayEntryHeader[1] | 18 * +-------------------------+ 19 * | raw image data[1] | 20 * +-------------------------+ 21 * | FontArrayEntryHeader[2] | 22 * +-------------------------+ 23 * | raw image data[2] | 24 * +-------------------------+ 25 * ... 26 * +-------------------------+ 27 * | FontArrayEntryHeader[n] | 28 * +-------------------------+ 29 * | raw image data[n] | 30 * +-------------------------+ 31 * 32 * The FontArrayHeader describes how many characters will be encoded. 33 * Each character encoding consists of a FontArrayEntryHeader followed 34 * immediately by the raw image data for that character. 35 */ 36 37 #ifndef VBOOT_REFERENCE_BMPBLK_FONT_H_ 38 #define VBOOT_REFERENCE_BMPBLK_FONT_H_ 39 40 #include "bmpblk_header.h" 41 42 #define FONT_SIGNATURE "FONT" 43 #define FONT_SIGNATURE_SIZE 4 44 45 typedef struct FontArrayHeader { 46 uint8_t signature[FONT_SIGNATURE_SIZE]; 47 uint32_t num_entries; /* Number of chars encoded here. */ 48 } __attribute__((packed)) FontArrayHeader; 49 50 typedef struct FontArrayEntryHeader { 51 uint32_t ascii; /* What to show. Could even be UTF? */ 52 ImageInfo info; /* Describes the bitmap. */ 53 54 /* 55 * The image to use follows immediately, NOT compressed. It's 56 * uncompressed because each glyph is only a few hundred bytes, but 57 * they have much in common (colormaps, for example). When we add the 58 * whole font blob to the bmpblk, it will be compressed as a single 59 * item there. 60 */ 61 } __attribute__((packed)) FontArrayEntryHeader; 62 63 #endif /* VBOOT_REFERENCE_BMPBLK_FONT_H_ */ 64