高通字库
版本 V1.0 · 更新于 2026-05-23

6.7 获取宽度

完整的字符串宽度计算

获取宽度

GT_GetStringWidth 是完整的字符串宽度计算函数,通过查询每个字符的实际宽度来精确累加。与简易版本不同,该函数使用 GT_GetCharWidth 获取每个字符的真实像素宽度,适用于非等宽字体场景。

string_width.c
/**
 @p: 字符点阵数组
 @zfwidth: 	显示字符的宽度
 @zfhigh:	显示字符的高度
 @return:	字符的实际最大宽度
*/
unsigned int get_width(unsigned char *p,unsigned int zfwidth,unsigned int zfhigh )
{
  unsigned char *q;
  unsigned int i,j,tem,tem1,witdh1=0,witdh2=0;
    q=p;
  for (i=0;i<zfwidth/16;i++)

    witdh1=0;
    for (j=0;j<16;j++)

    }
    witdh2+=witdh1;
  }
  return witdh2;
}

//
/**
 @p: 字符点阵数组
 @zfwidth: 	显示字符的宽度
 @zfhigh:	显示字符的高度
 @return:	字符的实际最大宽度
*/
unsigned int get_width(unsigned char *p,unsigned int zfwidth,unsigned int zfhigh )
{
	int high_i = 0,width_i = 0;
	unsigned int record = 0;
	unsigned int max_width = 0;

	for(width_i = (zfwidth*2)-1; width_i >= 0; width_i--)

		}
		if(	record )

	}
	if(width_i>=0)
		return max_width/2+1;
	else
		return zfwidth/3;

}
/**************/

/**
 只适用横置横排
 @p: 字符点阵数组
 @zfwidth: 	显示字符的宽度
 @zfhigh:	显示字符的高度
 @return:	字符的实际最大宽度
*/
unsigned int get_width_1(unsigned char *p,unsigned int zfwidth,unsigned int zfhigh )
{
	unsigned char width_Byte = zfwidth/8;
	unsigned char record = 0;
	unsigned int max_width = 0, cnt=0;
	int i, j, m;

	for(i=width_Byte-1; i>=0; i--)

		if(record != 0)

	}
	for(m=0; m<8; m++)

	}
	return max_width;
}