System/Utilities/TrueType: Update stbtt_RenderText() API to include advance

This commit is contained in:
Alec Murphy 2025-04-19 10:41:55 -04:00
parent 33b795fa93
commit 78ba717732
2 changed files with 8 additions and 3 deletions

View file

@ -35,14 +35,15 @@ I32 @stbtt_InitFont(stbtt_fontinfo* info, U8* data, I32 offset)
}
}
U8* @stbtt_RenderText(stbtt_fontinfo* info, I32 b_w, I32 b_h, I32 l_h, I32* word)
U8* @stbtt_RenderText(stbtt_fontinfo* info, I32 b_w, I32 b_h, I32 l_h, I32* word, I32* advance = NULL)
{
U64 reg RDI rdi = info;
U64 reg RSI rsi = b_w;
U64 reg RDX rdx = b_h;
U64 reg RCX rcx = l_h;
U64 reg R8 r8 = word;
no_warn rdi, rsi, rdx, rcx, r8;
U64 reg R9 r9 = advance;
no_warn rdi, rsi, rdx, rcx, r8, r9;
asm {
MOV RAX, STBTT_RENDERTEXT
CALL RAX

View file

@ -1,7 +1,7 @@
#define STB_TRUETYPE_IMPLEMENTATION
#include "stb_truetype.h"
unsigned char* stbtt_RenderText(stbtt_fontinfo* info, int b_w, int b_h, int l_h, int* word)
unsigned char* stbtt_RenderText(stbtt_fontinfo* info, int b_w, int b_h, int l_h, int* word, int* advance)
{
// https://github.com/justinmeiners/stb-truetype-example
/* create a bitmap for the phrase */
@ -45,6 +45,10 @@ unsigned char* stbtt_RenderText(stbtt_fontinfo* info, int b_w, int b_h, int l_h,
kern = stbtt_GetCodepointKernAdvance(info, word[i], word[i + 1]);
x += roundf(kern * scale);
if (advance) {
advance[i] = x;
}
++i;
}