System/Utilities/TrueType: Update stbtt_RenderText() API to include advance
This commit is contained in:
parent
33b795fa93
commit
78ba717732
2 changed files with 8 additions and 3 deletions
|
@ -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 RDI rdi = info;
|
||||||
U64 reg RSI rsi = b_w;
|
U64 reg RSI rsi = b_w;
|
||||||
U64 reg RDX rdx = b_h;
|
U64 reg RDX rdx = b_h;
|
||||||
U64 reg RCX rcx = l_h;
|
U64 reg RCX rcx = l_h;
|
||||||
U64 reg R8 r8 = word;
|
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 {
|
asm {
|
||||||
MOV RAX, STBTT_RENDERTEXT
|
MOV RAX, STBTT_RENDERTEXT
|
||||||
CALL RAX
|
CALL RAX
|
||||||
|
|
6
src/truetype/truetype.c
vendored
6
src/truetype/truetype.c
vendored
|
@ -1,7 +1,7 @@
|
||||||
#define STB_TRUETYPE_IMPLEMENTATION
|
#define STB_TRUETYPE_IMPLEMENTATION
|
||||||
#include "stb_truetype.h"
|
#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
|
// https://github.com/justinmeiners/stb-truetype-example
|
||||||
/* create a bitmap for the phrase */
|
/* 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]);
|
kern = stbtt_GetCodepointKernAdvance(info, word[i], word[i + 1]);
|
||||||
x += roundf(kern * scale);
|
x += roundf(kern * scale);
|
||||||
|
|
||||||
|
if (advance) {
|
||||||
|
advance[i] = x;
|
||||||
|
}
|
||||||
|
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue