forked from pyrite-dev/milsko
fix ft2 rendering
This commit is contained in:
parent
986ffdccc1
commit
190e4353e4
2 changed files with 10 additions and 24 deletions
|
|
@ -81,7 +81,7 @@ static int ft2_MwDrawText(MwWidget handle, MwFLFont ttf, MwPoint* point, const c
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
x += (ttf->face->glyph->advance.x >> 6) + (ttf->face->glyph->metrics.horiBearingX >> 6);
|
x += (ttf->face->glyph->advance.x >> 6);
|
||||||
|
|
||||||
old_text = text;
|
old_text = text;
|
||||||
text += MwUTF8ToUTF32(text, &c2);
|
text += MwUTF8ToUTF32(text, &c2);
|
||||||
|
|
@ -109,7 +109,7 @@ static int ft2_MwDrawText(MwWidget handle, MwFLFont ttf, MwPoint* point, const c
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ft2_MwTextWidth(MwFLFont ttf, const char* text) {
|
static int ft2_MwTextWidth(MwFLFont ttf, const char* text) {
|
||||||
int tw = 0, mtw = 0;
|
int tw = 0;
|
||||||
|
|
||||||
while(text[0] != 0) {
|
while(text[0] != 0) {
|
||||||
int c, c2;
|
int c, c2;
|
||||||
|
|
@ -117,29 +117,22 @@ static int ft2_MwTextWidth(MwFLFont ttf, const char* text) {
|
||||||
const char* old_text;
|
const char* old_text;
|
||||||
|
|
||||||
text += MwUTF8ToUTF32(text, &c);
|
text += MwUTF8ToUTF32(text, &c);
|
||||||
if(c == '\n') {
|
|
||||||
tw = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
ft_table.FT_Load_Char(ttf->face, c, FT_LOAD_DEFAULT);
|
ft_table.FT_Load_Char(ttf->face, c, FT_LOAD_DEFAULT);
|
||||||
|
|
||||||
tw += (ttf->face->glyph->advance.x >> 6) + (ttf->face->glyph->metrics.horiBearingX >> 6);
|
tw += (ttf->face->glyph->advance.x >> 6);
|
||||||
|
|
||||||
old_text = text;
|
old_text = text;
|
||||||
text += MwUTF8ToUTF32(text, &c2);
|
text += MwUTF8ToUTF32(text, &c2);
|
||||||
|
|
||||||
if(c2 != '\n') {
|
ft_table.FT_Get_Kerning(ttf->face, c, c2, FT_KERNING_DEFAULT, &vec);
|
||||||
ft_table.FT_Get_Kerning(ttf->face, c, c2, FT_KERNING_DEFAULT, &vec);
|
|
||||||
|
|
||||||
tw += vec.x >> 6;
|
tw += vec.x >> 6;
|
||||||
}
|
|
||||||
|
|
||||||
text = old_text;
|
text = old_text;
|
||||||
if(tw > mtw) mtw = tw;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return mtw + 1;
|
return tw + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ft2_MwTextHeight(MwFLFont ttf, int count) {
|
static int ft2_MwTextHeight(MwFLFont ttf, int count) {
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ static int stbtt_MwDrawText(MwWidget handle, MwFLFont ttf, MwPoint* point, const
|
||||||
|
|
||||||
static int stbtt_MwTextWidth(MwFLFont ttf, const char* text) {
|
static int stbtt_MwTextWidth(MwFLFont ttf, const char* text) {
|
||||||
int ax, lsb;
|
int ax, lsb;
|
||||||
int tw = 0, mtw = 0;
|
int tw = 0;
|
||||||
|
|
||||||
while(text[0] != 0) {
|
while(text[0] != 0) {
|
||||||
int kern;
|
int kern;
|
||||||
|
|
@ -103,10 +103,6 @@ static int stbtt_MwTextWidth(MwFLFont ttf, const char* text) {
|
||||||
const char* old_text;
|
const char* old_text;
|
||||||
|
|
||||||
text += MwUTF8ToUTF32(text, &c);
|
text += MwUTF8ToUTF32(text, &c);
|
||||||
if(c == '\n') {
|
|
||||||
tw = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
stbtt_GetCodepointHMetrics(&ttf->font, c, &ax, &lsb);
|
stbtt_GetCodepointHMetrics(&ttf->font, c, &ax, &lsb);
|
||||||
|
|
||||||
|
|
@ -115,17 +111,14 @@ static int stbtt_MwTextWidth(MwFLFont ttf, const char* text) {
|
||||||
old_text = text;
|
old_text = text;
|
||||||
text += MwUTF8ToUTF32(text, &c2);
|
text += MwUTF8ToUTF32(text, &c2);
|
||||||
|
|
||||||
if(c2 != '\n') {
|
kern = stbtt_GetCodepointKernAdvance(&ttf->font, c, c2);
|
||||||
kern = stbtt_GetCodepointKernAdvance(&ttf->font, c, c2);
|
|
||||||
|
|
||||||
tw += ceil(kern * ttf->scale);
|
tw += ceil(kern * ttf->scale);
|
||||||
}
|
|
||||||
|
|
||||||
text = old_text;
|
text = old_text;
|
||||||
if(tw > mtw) mtw = tw;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return mtw + 1;
|
return tw + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int stbtt_MwTextHeight(MwFLFont ttf, int count) {
|
static int stbtt_MwTextHeight(MwFLFont ttf, int count) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue