the reson the original thing did not work, is because when you use a . (dot) it concats the strings that are returned by the functions. whoever printf does not return a string, it outputs it... thus before the starting string was output the second screen was allready pushed to the buffer... what you can do is
<font size="2" face="Verdana"><?PHP echo $row['name'] , printf("%d%%",$percent); ?></font>
noticed I used a comma instead of a dot
to put a space in there, you can :
<font size="2" face="Verdana"><?PHP echo $row['name'] , " " , printf("%d%%",$percent); ?></font>