Я использую несколько модифицированную функцию string_width.
Код
//----------------------------------------------------------------------------------------------
// Описание: Расчет ширины строки
// Принимает: указатель на строку, интервал между символами
// Возвращает: ширина строки
//----------------------------------------------------------------------------------------------
uint16_t string_width(char *text, uint8_t ch_interval)
{
char c;
uint16_t i = 0;
while(c = *(text++)) //Выполнять для всей строки
{
i += char_width(c); //Расчет ширины символа
i += ch_interval; //Учет межсимвольного пространства
}
i -= ch_interval; //Устранение межсимвольного пространства после последнего символа
return(i); //Возврат ширины строки
}
//----------------------------------------------------------------------------------------------
Функция char_width зависит от типа используемого шрифта.