PSPSDK 2026-09-28
Loading...
Searching...
No Matches
pspfont.h
Go to the documentation of this file.
1/*
2 * PSP Software Development Kit - https://github.com/pspdev
3 * -----------------------------------------------------------------------
4 * Licensed under the BSD license, see LICENSE in PSPSDK root for details.
5 *
6 * pspfont.h - Prototypes for the sceLibFont library.
7 *
8 * Copyright (c) 2026 Zuzanna Petryk <zzanp@disroot.org>
9 *
10 */
11#ifndef __FONT_H__
12#define __FONT_H__
13#include <malloc.h>
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
32
44
52
61
68
78typedef struct SceFontStyle {
80 float width;
82 float height;
87 float weight;
88 unsigned short family;
89 unsigned short style;
90 unsigned short subStyle;
92 unsigned short language;
94 unsigned short region;
96 unsigned short country;
97 unsigned char fontName[64];
98 unsigned char fileName[64];
99 unsigned int extra;
101 unsigned int expiration;
103
118
131
150
157typedef struct SceFontRect {
158 unsigned short width;
159 unsigned short height;
161
166typedef struct SceFontCache {
168 void** cache;
170 int (*lock)(void* cache);
172 int (*unlock)(void* cache);
183 void* (*find)(void* cache, unsigned int value, int key[4], unsigned int* result);
184 int (*writeKV)(void* cache, void* slot, int key[4]);
185 int (*write0)(void* cache, void* slot, void* data, int size);
186 int (*write1)(void* cache, void* slot, void* data, int size);
187 int (*write2)(void* cache, void* slot, void* data, int size);
188 int (*write3)(void* cache, void* slot, void* data, int size);
189 int (*read0)(void* cache, void* slot, void* dest);
190 int (*read1)(void* cache, void* slot, void* dest);
191 int (*read2)(void* cache, void* slot, void* dest);
192 int (*read3)(void* cache, void* slot, void* dest);
194
200typedef struct SceFontLibData {
202 void* unknown;
204 unsigned int maxFonts;
206 void* (*alloc)(void* data, unsigned int size);
207 void (*free)(void* data, void* pointer);
208 void* (*open)(void* data, char* path, int* error);
209 int (*close)(void* data, void* fileHandle);
210 unsigned int (*read)(void* data, void* fileHandle, void* out, unsigned int size, unsigned int num, int* error);
211 int (*seek)(void* data, void* fileHandle, unsigned int offset);
212 int (*onError)(void* data, int error);
213 int (*onReadComplete)(void* data, int status);
215
224typedef struct SceFontImageBuffer {
225 unsigned int pixelFormat;
226 int x, y;
228 unsigned short bytesPerLine;
229 short unknown;
230 unsigned char* data;
232
245
253int sceFontFlush(void* libraryId);
254
264int sceFontFindOptimumFont(void* libraryId, SceFontStyle* fontStyle, int* error);
265
274int sceFontGetFontInfo(void* fontHandle, SceFontInfo* fontInfo);
275
284int sceFontGetNumFontList(void* libraryHandle, int* error);
285
295int sceFontCalcMemorySize(void* libraryHandle, SceFontStyle* fontStyle, int* error);
296
297int sceFontIsElement(); // TODO: DOCUMENT THIS SHIT
298
306int sceFontClose(void* fontHandle);
307
317float sceFontPointToPixelV(void* libraryHandle, float points, int* error);
318
328float sceFontPointToPixelH(void* libraryHandle, float points, int* error);
329
339int sceFontSetResolution(void* libraryHandle, float hres, float vres);
340
341int sceFontGetShadowImageRect(void* fontHandle, unsigned short code, SceFontRect* output);
342
352int sceFontGetFontInfoByIndexNumber(void* libraryHandle, SceFontStyle* fontStyle, int index);
353
354int sceFontGetShadowGlyphImage(void* fontHandle, unsigned short code, SceFontImageBuffer* output);
355
363int sceFontDoneLib(void* libraryHandle);
364
375void* sceFontOpenUserFile(void* libraryHandle, char* path, unsigned int mode, int* error);
376
386int sceFontGetCharImageRect(void* fontHandle, unsigned short code, SceFontRect* output);
387
388int sceFontGetShadowGlyphImage_Clip(void* fontHandle, unsigned short code, SceFontImageBuffer* output, int x, int y, unsigned int width, unsigned int height);
389
398void* sceFontNewLib(SceFontLibData *data, int* error);
399
409int sceFontFindFont(void* libraryHandle, SceFontStyle* fontStyle, int* error);
410
420float sceFontPixelToPointH(void* libraryHandle, float pixels, int* error);
421
431int sceFontGetCharGlyphImage(void* fontHandle, unsigned short code, SceFontImageBuffer* output);
432
443void* sceFontOpen(void* libraryHandle, int index, unsigned int mode, int* error);
444
445int sceFontGetShadowInfo(void* fontHandle, unsigned short code, SceFontCharacterInfo* output);
446
457void* sceFontOpenUserMemory(void* libraryHandle, char* font, unsigned int size, int* error);
458
468int sceFontGetFontList(void* libraryHandle, SceFontStyle* output, int size);
469
483int sceFontGetCharGlyphImage_Clip(void* fontHandle, unsigned short code, SceFontImageBuffer* output, int x, int y, unsigned int width, unsigned int height);
484
494int sceFontGetCharInfo(void* fontHandle, unsigned short code, SceFontCharacterInfo* output);
495
504int sceFontSetAltCharacterCode(void* libraryHandle, unsigned short code);
505
515float sceFontPixelToPointV(void* libraryHandle, float pixels, int* error);
516
519#ifdef __cplusplus
520}
521#endif
522
523#endif
int sceFontGetCharGlyphImage_Clip(void *fontHandle, unsigned short code, SceFontImageBuffer *output, int x, int y, unsigned int width, unsigned int height)
Get clipped image of the character.
int sceFontGetShadowInfo(void *fontHandle, unsigned short code, SceFontCharacterInfo *output)
int sceFontGetCharImageRect(void *fontHandle, unsigned short code, SceFontRect *output)
Get size of the image of the character.
struct SceFontInfo SceFontInfo
General font info.
int sceFontIsElement()
int sceFontGetFontInfo(void *fontHandle, SceFontInfo *fontInfo)
Get font info.
SceFontFamily
Definition pspfont.h:26
float sceFontPixelToPointV(void *libraryHandle, float pixels, int *error)
Convert units from pixels to points in the vertical direction.
int sceFontSetAltCharacterCode(void *libraryHandle, unsigned short code)
Set a fallback character.
float sceFontPointToPixelH(void *libraryHandle, float points, int *error)
Convert units from points to pixels in the horizontal direction.
float sceFontPixelToPointH(void *libraryHandle, float pixels, int *error)
Convert units from pixels to points in the horizontal direction.
void * sceFontOpen(void *libraryHandle, int index, unsigned int mode, int *error)
Open a new font.
int sceFontSetResolution(void *libraryHandle, float hres, float vres)
Set font resolution.
int sceFontDoneLib(void *libraryHandle)
Terminate a font handle.
int sceFontGetCharGlyphImage(void *fontHandle, unsigned short code, SceFontImageBuffer *output)
Get image of a character.
float sceFontPointToPixelV(void *libraryHandle, float points, int *error)
Convert units from points to pixels in the vertical direction.
int sceFontCalcMemorySize(void *libraryHandle, SceFontStyle *fontStyle, int *error)
Calculate required memory size for a font.
SceFontStyles
Definition pspfont.h:33
int sceFontGetCharInfo(void *fontHandle, unsigned short code, SceFontCharacterInfo *output)
Get info about character.
SceFontVendorCountry
Definition pspfont.h:62
int sceFontGetFontList(void *libraryHandle, SceFontStyle *output, int size)
Get available fonts.
SceFontLanguage
Definition pspfont.h:53
int sceFontFlush(void *libraryId)
Flush local font cache.
int sceFontGetShadowImageRect(void *fontHandle, unsigned short code, SceFontRect *output)
struct SceFontCache SceFontCache
Font cache data.
void * sceFontOpenUserFile(void *libraryHandle, char *path, unsigned int mode, int *error)
Open local font file.
struct SceFontCharacterInfo SceFontCharacterInfo
All the information regarding a single character.
int sceFontGetNumFontList(void *libraryHandle, int *error)
Get number of all available font lists.
SceFontPixelFormat
Definition pspfont.h:45
struct SceFontCharacterData SceFontCharacterData
Fixed-point info about singular characters.
struct SceFontLibData SceFontLibData
Info about a specific font.
struct SceFontCharacterDataFloat SceFontCharacterDataFloat
Floating-point info about singular characters.
struct SceFontStyle SceFontStyle
Font style info.
struct SceFontImageBuffer SceFontImageBuffer
Buffer of the image containing a font.
void * sceFontNewLib(SceFontLibData *data, int *error)
Initialize a font library.
struct SceFontRect SceFontRect
Rectangular size of the font images.
int sceFontFindOptimumFont(void *libraryId, SceFontStyle *fontStyle, int *error)
Find an optimum font.
int sceFontClose(void *fontHandle)
Close the font handle.
void * sceFontOpenUserMemory(void *libraryHandle, char *font, unsigned int size, int *error)
Open font from memory.
int sceFontGetShadowGlyphImage_Clip(void *fontHandle, unsigned short code, SceFontImageBuffer *output, int x, int y, unsigned int width, unsigned int height)
int sceFontFindFont(void *libraryHandle, SceFontStyle *fontStyle, int *error)
Find the font that exactly matches the style.
int sceFontGetShadowGlyphImage(void *fontHandle, unsigned short code, SceFontImageBuffer *output)
int sceFontGetFontInfoByIndexNumber(void *libraryHandle, SceFontStyle *fontStyle, int index)
Get font style info by index number.
@ SCE_FONT_FAMILY_DEFAULT
Definition pspfont.h:27
@ SCE_FONT_FAMILY_ROUNDED
Definition pspfont.h:30
@ SCE_FONT_FAMILY_SERIF
Definition pspfont.h:29
@ SCE_FONT_FAMILY_SANS_SERIF
Definition pspfont.h:28
@ SCE_FONT_STYLE_ITALIC_THICK
Definition pspfont.h:42
@ SCE_FONT_STYLE_DEFAULT
Definition pspfont.h:34
@ SCE_FONT_STYLE_ITALIC_BOLD
Definition pspfont.h:40
@ SCE_FONT_STYLE_ITALIC_THIN
Definition pspfont.h:38
@ SCE_FONT_STYLE_THIN
Definition pspfont.h:37
@ SCE_FONT_STYLE_REGULAR
Definition pspfont.h:35
@ SCE_FONT_STYLE_BOLD
Definition pspfont.h:39
@ SCE_FONT_STYLE_THICK
Definition pspfont.h:41
@ SCE_FONT_STYLE_ITALIC
Definition pspfont.h:36
@ SCE_FONT_VENDOR_COUNTRY_DEFAULT
Definition pspfont.h:63
@ SCE_FONT_VENDOR_COUNTRY_USA
Definition pspfont.h:65
@ SCE_FONT_VENDOR_COUNTRY_KOREA
Definition pspfont.h:66
@ SCE_FONT_VENDOR_COUNTRY_JAPAN
Definition pspfont.h:64
@ SCE_FONT_LANGUAGE_JKC
Definition pspfont.h:59
@ SCE_FONT_LANGUAGE_JAPANESE
Definition pspfont.h:55
@ SCE_FONT_LANGUAGE_DEFAULT
Definition pspfont.h:54
@ SCE_FONT_LANGUAGE_ENGLISH
Definition pspfont.h:56
@ SCE_FONT_LANGUAGE_KOREAN
Definition pspfont.h:57
@ SCE_FONT_LANGUAGE_CHINESE
Definition pspfont.h:58
@ SCE_FONT_PIXEL_FORMAT_32
Definition pspfont.h:50
@ SCE_FONT_PIXEL_FORMAT_24
Definition pspfont.h:49
@ SCE_FONT_PIXEL_FORMAT_L4
Definition pspfont.h:46
@ SCE_FONT_PIXEL_FORMAT_8
Definition pspfont.h:48
@ SCE_FONT_PIXEL_FORMAT_R4
Definition pspfont.h:47
Font cache data.
Definition pspfont.h:166
void ** cache
Another cache instance, or just null.
Definition pspfont.h:168
int(* read3)(void *cache, void *slot, void *dest)
Definition pspfont.h:192
int(* write1)(void *cache, void *slot, void *data, int size)
Definition pspfont.h:186
int(* write3)(void *cache, void *slot, void *data, int size)
Definition pspfont.h:188
int(* write0)(void *cache, void *slot, void *data, int size)
Definition pspfont.h:185
int(* unlock)(void *cache)
Unlock the cache.
Definition pspfont.h:172
int(* write2)(void *cache, void *slot, void *data, int size)
Definition pspfont.h:187
int(* read2)(void *cache, void *slot, void *dest)
Definition pspfont.h:191
int(* lock)(void *cache)
Lock the cache.
Definition pspfont.h:170
int(* writeKV)(void *cache, void *slot, int key[4])
Definition pspfont.h:184
int(* read0)(void *cache, void *slot, void *dest)
Definition pspfont.h:189
int(* read1)(void *cache, void *slot, void *dest)
Definition pspfont.h:190
Floating-point info about singular characters.
Definition pspfont.h:124
float vShift
Definition pspfont.h:129
float bottom
Definition pspfont.h:126
float height
Definition pspfont.h:125
float shiftY
Definition pspfont.h:127
float shiftVertY
Definition pspfont.h:128
float width
Definition pspfont.h:125
float top
Definition pspfont.h:126
float shiftX
Definition pspfont.h:127
float hShift
Definition pspfont.h:129
float shiftVertX
Definition pspfont.h:128
Fixed-point info about singular characters.
Definition pspfont.h:111
int shiftVertY
Definition pspfont.h:115
int vShift
Definition pspfont.h:116
unsigned int width
Definition pspfont.h:112
int shiftVertX
Definition pspfont.h:115
unsigned int height
Definition pspfont.h:112
int shiftX
Definition pspfont.h:114
int hShift
Definition pspfont.h:116
int bottom
Definition pspfont.h:113
int top
Definition pspfont.h:113
int shiftY
Definition pspfont.h:114
All the information regarding a single character.
Definition pspfont.h:239
int x
Definition pspfont.h:241
SceFontCharacterData data
Definition pspfont.h:242
unsigned int height
Definition pspfont.h:240
unsigned int width
Definition pspfont.h:240
char unknown[4]
Definition pspfont.h:243
int y
Definition pspfont.h:241
Buffer of the image containing a font.
Definition pspfont.h:224
unsigned int pixelFormat
Definition pspfont.h:225
SceFontRect size
Definition pspfont.h:227
int y
Definition pspfont.h:226
int x
Definition pspfont.h:226
unsigned char * data
Definition pspfont.h:230
short unknown
Definition pspfont.h:229
unsigned short bytesPerLine
Definition pspfont.h:228
General font info.
Definition pspfont.h:139
unsigned int subCharacters
Definition pspfont.h:145
SceFontStyle fontStyle
Definition pspfont.h:146
unsigned char depth
Definition pspfont.h:147
unsigned short maxWidth
Definition pspfont.h:142
unsigned short maxHeight
Definition pspfont.h:143
SceFontCharacterDataFloat maxFloat
Definition pspfont.h:141
char unknown[3]
Definition pspfont.h:148
SceFontCharacterData maxFixed
Definition pspfont.h:140
unsigned int characters
Definition pspfont.h:144
Info about a specific font.
Definition pspfont.h:200
unsigned int maxFonts
Max number of fonts open at the same time.
Definition pspfont.h:204
void * unknown
Leave null when initializing.
Definition pspfont.h:202
SceFontCache * cache
Definition pspfont.h:205
int(* seek)(void *data, void *fileHandle, unsigned int offset)
Definition pspfont.h:211
void(* free)(void *data, void *pointer)
Definition pspfont.h:207
int(* close)(void *data, void *fileHandle)
Definition pspfont.h:209
int(* onReadComplete)(void *data, int status)
Definition pspfont.h:213
int(* onError)(void *data, int error)
Definition pspfont.h:212
unsigned int(* read)(void *data, void *fileHandle, void *out, unsigned int size, unsigned int num, int *error)
Definition pspfont.h:210
Rectangular size of the font images.
Definition pspfont.h:157
unsigned short height
Definition pspfont.h:159
unsigned short width
Definition pspfont.h:158
Font style info.
Definition pspfont.h:78
unsigned int expiration
Expiration (leave 0 if not specified)
Definition pspfont.h:101
unsigned short style
Definition pspfont.h:89
float weight
Definition pspfont.h:87
unsigned short subStyle
Definition pspfont.h:90
unsigned int extra
Definition pspfont.h:99
unsigned short language
Language code (leave 0 if not specified)
Definition pspfont.h:92
float width
Width in points (1/72 inch), where 0 is system standard.
Definition pspfont.h:80
unsigned char fontName[64]
Definition pspfont.h:97
unsigned char fileName[64]
Definition pspfont.h:98
float yResolution
Resolution, where 0 is system standard.
Definition pspfont.h:86
float xResolution
Resolution, where 0 is system standard.
Definition pspfont.h:84
unsigned short region
Region code (leave 0 if not specified)
Definition pspfont.h:94
unsigned short country
Country code (leave 0 if not specified)
Definition pspfont.h:96
float height
Height in points (1/72 inch), where 0 is system standard.
Definition pspfont.h:82
unsigned short family
Definition pspfont.h:88