Ultibo API
C/C++ API for Ultibo Core
Loading...
Searching...
No Matches
font.h
Go to the documentation of this file.
1/*
2 * This file is part of the Ultibo project, https://ultibo.org/
3 *
4 * The MIT License (MIT)
5 *
6 * Copyright (c) 2026 Garry Wood <garry@softoz.com.au>
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining a copy
9 * of this software and associated documentation files (the "Software"), to deal
10 * in the Software without restriction, including without limitation the rights
11 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 * copies of the Software, and to permit persons to whom the Software is
13 * furnished to do so, subject to the following conditions:
14 *
15 * The above copyright notice and this permission notice shall be included in
16 * all copies or substantial portions of the Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 * THE SOFTWARE.
25 */
26#ifndef _ULTIBO_FONT_H
27#define _ULTIBO_FONT_H
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
33#include "ultibo/globaltypes.h"
34#include "ultibo/globalconst.h"
35
37#define FONT_MIN_COUNT 256
38
39#define FONT_MIN_WIDTH 8
40#define FONT_MAX_WIDTH 32
41
42#define FONT_MIN_HEIGHT 6
43#define FONT_MAX_HEIGHT 64
44
46#define FONT_SIGNATURE 0x77DE1BBC
47
49#define FONT_NAME_LENGTH SIZE_64
50#define FONT_DESC_LENGTH SIZE_128
51
53#define FONT_MODE_NONE 0
54#define FONT_MODE_PIXEL 1
55#define FONT_MODE_ALPHA8 2
56#define FONT_MODE_RGBA32 3
57
59#define FONT_FLAG_NONE 0x00000000
60#define FONT_FLAG_UNICODE 0x00000001
61#define FONT_FLAG_CODEPAGE 0x00000002
62#define FONT_FLAG_BIGENDIAN 0x00000004
63#define FONT_FLAG_RIGHTALIGN 0x00000008
64#define FONT_FLAG_VARIABLE 0x00000010
65
67
71{
72 uint32_t width;
73 uint32_t height;
74 uint32_t count;
75 uint32_t mode;
76 uint32_t flags;
77 uint32_t mask;
78 uint32_t codepage;
79 char name[64];
80 char description[128];
81};
82
84typedef struct _FONT_DATA FONT_DATA;
86{
87 uint8_t data[0];
88};
89
93{
94 uint8_t data[256][6];
95};
96
99{
100 uint8_t data[256][7];
101};
102
105{
106 uint8_t data[256][8];
107};
108
111{
112 uint8_t data[256][9];
113};
114
117{
118 uint8_t data[256][10];
119};
120
123{
124 uint8_t data[256][11];
125};
126
129{
130 uint8_t data[256][12];
131};
132
135{
136 uint8_t data[256][13];
137};
138
141{
142 uint8_t data[256][14];
143};
144
147{
148 uint8_t data[256][15];
149};
150
153{
154 uint8_t data[256][16];
155};
156
160{
161 uint16_t data[256][12];
162};
163
166{
167 uint16_t data[256][14];
168};
169
172{
173 uint16_t data[256][16];
174};
175
178{
179 uint16_t data[256][18];
180};
181
184{
185 uint16_t data[256][20];
186};
187
190{
191 uint16_t data[256][22];
192};
193
197{
198 uint16_t data[256][16];
199};
200
203{
204 uint16_t data[256][24];
205};
206
209{
210 uint16_t data[256][32];
211};
212
216{
217 uint32_t data[256][32];
218};
219
222{
223 uint32_t data[256][48];
224};
225
228{
229 uint32_t data[256][64];
230};
231
233typedef uint8_t FONT_CHARS_8[];
234typedef uint16_t FONT_CHARS_16[];
235typedef uint32_t FONT_CHARS_32[];
236
240{
241 // To Do
242};
243
258
259typedef struct _FONT_ENTRY FONT_ENTRY;
260
262typedef uint32_t STDCALL (*font_enumerate_cb)(FONT_HANDLE handle, void *data);
263
266{
267 // Font Properties
268 uint32_t signature;
269 uint32_t fontmode;
270 uint32_t fontflags;
273 // Driver Properties
274 uint32_t charwidth;
275 uint32_t charheight;
276 uint32_t charcount;
277 uint32_t charmask;
278 uint32_t codepage;
279 void *chardata;
281 // Internal Properties
284};
285
287
294FONT_HANDLE STDCALL font_load(FONT_HEADER *header, FONT_DATA *data, uint32_t size);
295
304FONT_HANDLE STDCALL font_load_ex(FONT_HEADER *header, FONT_DATA *data, FONT_UNICODE *unicode, uint32_t size, FONT_PROPERTIES *properties);
306
307uint32_t STDCALL font_get_name(FONT_HANDLE handle, char *name, uint32_t len);
308uint32_t STDCALL font_get_description(FONT_HANDLE handle, char *description, uint32_t len);
309
312
314
315uint32_t STDCALL font_char_width(FONT_HANDLE handle, uint16_t character);
316uint32_t STDCALL font_char_height(FONT_HANDLE handle, uint16_t character);
317
318uint32_t STDCALL font_text_width(FONT_HANDLE handle, const char *text);
319uint32_t STDCALL font_text_height(FONT_HANDLE handle, const char *text);
320
323uint32_t STDCALL font_enumerate(font_enumerate_cb callback, void *data);
324
326FONT_HANDLE STDCALL psf_font_load(const char *filename);
327FONT_HANDLE STDCALL psf_font_load_ex(void *data, uint32_t size);
328
330
334uint32_t STDCALL font_get_count(void);
335
340
345
350
352
353#ifdef __cplusplus
354}
355#endif
356
357#endif // _ULTIBO_FONT_H
struct _FONT_DATA_8X16 FONT_DATA_8X16
Definition font.h:151
uint32_t STDCALL font_enumerate(font_enumerate_cb callback, void *data)
FONT_HANDLE STDCALL font_find_by_name(const char *name)
uint32_t STDCALL font_get_height(FONT_HANDLE handle)
uint16_t FONT_CHARS_16[]
Definition font.h:234
FONT_HANDLE STDCALL font_find_by_description(const char *description)
struct _FONT_DATA_32X64 FONT_DATA_32X64
Definition font.h:226
uint32_t STDCALL font_text_width(FONT_HANDLE handle, const char *text)
FONT_HANDLE STDCALL font_get_default(void)
Get the current default font.
struct _FONT_DATA_16X24 FONT_DATA_16X24
Definition font.h:201
struct _FONT_DATA_8X7 FONT_DATA_8X7
Definition font.h:97
struct _FONT_HEADER FONT_HEADER
Definition font.h:69
struct _FONT_DATA_16X16 FONT_DATA_16X16
Definition font.h:195
struct _FONT_DATA_16X32 FONT_DATA_16X32
Definition font.h:207
uint32_t FONT_CHARS_32[]
Definition font.h:235
struct _FONT_DATA FONT_DATA
Definition font.h:84
uint32_t STDCALL font_get_properties(FONT_HANDLE handle, FONT_PROPERTIES *properties)
struct _FONT_ENTRY FONT_ENTRY
Definition font.h:259
struct _FONT_DATA_8X6 FONT_DATA_8X6
Definition font.h:91
struct _FONT_DATA_12X22 FONT_DATA_12X22
Definition font.h:188
uint32_t STDCALL font_char_width(FONT_HANDLE handle, uint16_t character)
#define FONT_NAME_LENGTH
Length of font name.
Definition font.h:49
uint32_t STDCALL(* font_enumerate_cb)(FONT_HANDLE handle, void *data)
Definition font.h:262
struct _FONT_DATA_12X14 FONT_DATA_12X14
Definition font.h:164
uint32_t STDCALL font_char_height(FONT_HANDLE handle, uint16_t character)
uint32_t STDCALL font_get_count(void)
Get the current font count.
struct _FONT_DATA_8X11 FONT_DATA_8X11
Definition font.h:121
struct _FONT_DATA_12X20 FONT_DATA_12X20
Definition font.h:182
struct _FONT_DATA_8X13 FONT_DATA_8X13
Definition font.h:133
uint32_t STDCALL font_get_description(FONT_HANDLE handle, char *description, uint32_t len)
struct _FONT_DATA_8X10 FONT_DATA_8X10
Definition font.h:115
FONT_ENTRY *STDCALL font_check(FONT_ENTRY *font)
Check if the supplied Font is in the Font table.
uint32_t STDCALL font_set_default(FONT_HANDLE handle)
Set the current default font.
struct _FONT_DATA_12X12 FONT_DATA_12X12
Definition font.h:158
struct _FONT_DATA_12X16 FONT_DATA_12X16
Definition font.h:170
struct _FONT_DATA_8X14 FONT_DATA_8X14
Definition font.h:139
FONT_HANDLE STDCALL psf_font_load_ex(void *data, uint32_t size)
uint32_t STDCALL font_get_width(FONT_HANDLE handle)
FONT_HANDLE STDCALL psf_font_load(const char *filename)
FONT_HANDLE STDCALL font_load_ex(FONT_HEADER *header, FONT_DATA *data, FONT_UNICODE *unicode, uint32_t size, FONT_PROPERTIES *properties)
Load a Font from a font data block and add to the Font table.
struct _FONT_PROPERTIES FONT_PROPERTIES
Definition font.h:245
#define FONT_DESC_LENGTH
Length of font description.
Definition font.h:50
uint8_t FONT_CHARS_8[]
Definition font.h:233
struct _FONT_DATA_12X18 FONT_DATA_12X18
Definition font.h:176
struct _FONT_DATA_8X9 FONT_DATA_8X9
Definition font.h:109
struct _FONT_DATA_32X32 FONT_DATA_32X32
Definition font.h:214
struct _FONT_UNICODE FONT_UNICODE
Definition font.h:238
uint32_t STDCALL font_unload(FONT_HANDLE handle)
struct _FONT_DATA_8X8 FONT_DATA_8X8
Definition font.h:103
struct _FONT_DATA_8X12 FONT_DATA_8X12
Definition font.h:127
FONT_HANDLE STDCALL font_load(FONT_HEADER *header, FONT_DATA *data, uint32_t size)
Load a Font from a font data block and add to the Font table.
uint32_t STDCALL font_text_height(FONT_HANDLE handle, const char *text)
struct _FONT_DATA_8X15 FONT_DATA_8X15
Definition font.h:145
uint32_t STDCALL font_get_name(FONT_HANDLE handle, char *name, uint32_t len)
struct _FONT_DATA_32X48 FONT_DATA_32X48
Definition font.h:220
#define STDCALL
Definition globaltypes.h:45
HANDLE FONT_HANDLE
Definition globaltypes.h:122
Definition font.h:160
uint16_t data[256][12]
Definition font.h:161
Definition font.h:166
uint16_t data[256][14]
Definition font.h:167
Definition font.h:172
uint16_t data[256][16]
Definition font.h:173
Definition font.h:178
uint16_t data[256][18]
Definition font.h:179
Definition font.h:184
uint16_t data[256][20]
Definition font.h:185
Definition font.h:190
uint16_t data[256][22]
Definition font.h:191
Definition font.h:197
uint16_t data[256][16]
Definition font.h:198
Definition font.h:203
uint16_t data[256][24]
Definition font.h:204
Definition font.h:209
uint16_t data[256][32]
Definition font.h:210
Definition font.h:216
uint32_t data[256][32]
Definition font.h:217
Definition font.h:222
uint32_t data[256][48]
Definition font.h:223
Definition font.h:228
uint32_t data[256][64]
Definition font.h:229
Definition font.h:117
uint8_t data[256][10]
Definition font.h:118
Definition font.h:123
uint8_t data[256][11]
Definition font.h:124
Definition font.h:129
uint8_t data[256][12]
Definition font.h:130
Definition font.h:135
uint8_t data[256][13]
Definition font.h:136
Definition font.h:141
uint8_t data[256][14]
Definition font.h:142
Definition font.h:147
uint8_t data[256][15]
Definition font.h:148
Definition font.h:153
uint8_t data[256][16]
Definition font.h:154
Definition font.h:93
uint8_t data[256][6]
Definition font.h:94
Definition font.h:99
uint8_t data[256][7]
Definition font.h:100
Definition font.h:105
uint8_t data[256][8]
Definition font.h:106
Definition font.h:111
uint8_t data[256][9]
Definition font.h:112
Definition font.h:86
uint8_t data[0]
Definition font.h:87
Definition font.h:266
FONT_ENTRY * next
Next entry in Font table.
Definition font.h:283
FONT_ENTRY * prev
Previous entry in Font table.
Definition font.h:282
uint32_t fontflags
Font flags (eg FONT_FLAG_UNICODE).
Definition font.h:270
FONT_UNICODE * unicodedata
Font unicode translation data (Only if FONT_FLAG_UNICODE).
Definition font.h:280
uint32_t charheight
Font character height in pixels.
Definition font.h:275
char fontdescription[FONT_DESC_LENGTH]
Font description.
Definition font.h:272
char fontname[FONT_NAME_LENGTH]
Font name.
Definition font.h:271
uint32_t fontmode
Font mode (eg FONT_MODE_PIXEL).
Definition font.h:269
uint32_t signature
Signature for entry validation.
Definition font.h:268
void * chardata
Font character pixel or bitmap data.
Definition font.h:279
uint32_t charcount
Number of glyphs in font character table.
Definition font.h:276
uint32_t codepage
Font codepage (CP_ACP if not specified).
Definition font.h:278
uint32_t charmask
Transparency mask for a bitmap font (Not used for a pixel font).
Definition font.h:277
uint32_t charwidth
Font character width in pixels.
Definition font.h:274
Definition font.h:71
uint32_t width
Width of each character in pixels.
Definition font.h:72
uint32_t height
Height of each character in pixels.
Definition font.h:73
uint32_t mode
Font mode (eg FONT_MODE_PIXEL).
Definition font.h:75
uint32_t flags
Font flags (eg FONT_FLAG_UNICODE).
Definition font.h:76
uint32_t count
Number of character glyphs in data.
Definition font.h:74
char description[128]
Font description //NOT null terminated, index 0 is the length.
Definition font.h:80
uint32_t mask
Transparency mask for a bitmap font.
Definition font.h:77
char name[64]
Font name //NOT null terminated, index 0 is the length.
Definition font.h:79
uint32_t codepage
Font codepage (CP_ACP if not specified).
Definition font.h:78
Definition font.h:247
uint32_t fontflags
Font flags (eg FONT_FLAG_UNICODE).
Definition font.h:249
uint32_t charheight
Font character height in pixels.
Definition font.h:253
char fontdescription[FONT_DESC_LENGTH]
Font description.
Definition font.h:251
char fontname[FONT_NAME_LENGTH]
Font name.
Definition font.h:250
uint32_t fontmode
Font mode (eg FONT_MODE_PIXEL).
Definition font.h:248
uint32_t charcount
Number of glyphs in font character table.
Definition font.h:254
uint32_t codepage
Font codepage (CP_ACP if not specified).
Definition font.h:256
uint32_t charmask
Transparency mask for a bitmap font (Not used for a pixel font).
Definition font.h:255
uint32_t charwidth
Font character width in pixels.
Definition font.h:252
Definition font.h:240