// Copyright status: this file is in the public domain. #include #include "lx.h" LX_CHARINFO lx_text_extents_8(const LX_FONTINFO *fi, const unsigned char *s, int sl) { LX_CHARINFO rci; int x; int first; const LX_CHARINFO *ci; int w; int l; int r; if (sl == -1) sl = strlen(s); if (sl == 0) return((LX_CHARINFO){.lbearing=0,.rbearing=0,.width=0,.ascent=0,.descent=0,.attr=0}); first = 1; w = 0; for (x=0;xlbearing || ci->rbearing || ci->width || ci->ascent || ci->descent) { l = w + ci->lbearing; r = w + ci->rbearing; if ((x == 0) || (ci->ascent > rci.ascent)) rci.ascent = ci->ascent; if ((x == 0) || (ci->descent > rci.descent)) rci.descent = ci->descent; if ((x == 0) || (l < rci.lbearing)) rci.lbearing = l; if ((x == 0) || (r > rci.rbearing)) rci.rbearing = r; w += ci->width; } } rci.width = w; rci.attr = 0; return(rci); }