fix stuff

This commit is contained in:
Nishi 2026-04-27 04:25:16 +09:00
commit 212d00ea13
Signed by: nishi
GPG key ID: 27EF69B208EB9343
3 changed files with 23 additions and 8 deletions

View file

@ -49,11 +49,10 @@ static int ft2_MwDrawText(MwWidget handle, MwFLFont ttf, MwPoint* point, const c
FT_Bitmap* bmp;
int cy, cx;
int c, c2;
int l = MwUTF8ToUTF32(text, &c);
FT_Vector vec;
const char* old_text;
if(l <= 0) break;
text += l;
text += MwUTF8ToUTF32(text, &c);
ft_table.FT_Load_Char(ttf->face, c, FT_LOAD_RENDER);
bmp = &ttf->face->glyph->bitmap;
@ -124,6 +123,7 @@ static int ft2_MwTextWidth(MwFLFont ttf, const char* text) {
text = old_text;
}
tw -= ttf->face->glyph->advance.x >> 6;
tw += ttf->face->glyph->bitmap_left + ttf->face->glyph->bitmap.width;
return tw + 1;

View file

@ -70,7 +70,6 @@ void MwDrawText(MwWidget handle, MwFLFont ttf, MwPoint* point, const char* text,
char* last = input;
int cp;
if(strlen(text) == 0) return;
#ifdef TTF
if(ttf <= MwFLBuildFont(0xff)) ttf = assume_ttf(handle, ttf);
#endif
@ -95,6 +94,14 @@ void MwDrawText(MwWidget handle, MwFLFont ttf, MwPoint* point, const char* text,
}
}
if(strlen(line) == 0) {
free(line);
last = input;
continue;
}
p.x = point->x;
if(align == MwALIGNMENT_CENTER) {
p.x -= MwTextWidth(handle, ttf, line) / 2;

View file

@ -199,16 +199,24 @@ static void frame_draw(MwWidget handle) {
str = MwStringDuplicate(t);
if(MwUTF8Length(str) > (get_col_width(lb, j) - l) / MwTextWidth(handle, Font, "M")) {
int ind = (get_col_width(lb, j) - l) / MwTextWidth(handle, Font, "M") - 3;
int seek = 0;
int l = 0;
int ind = (get_col_width(lb, j) - l) / MwTextWidth(handle, Font, "M") - 3;
int seek = 0;
int l = 0;
char* old = str;
if(ind < 0) ind = 0;
str = malloc(strlen(old) + 5);
strcpy(str, old);
free(old);
while(str[seek] != 0) {
int cp;
if(l == ind) break;
seek += MwUTF8ToUTF32(str + seek, &cp);
l++;
if(l == ind) break;
}
memset(str + seek, '.', 3);