Yes, that would be faster. However you have to put everything in Parentheses:
#define str_height(str,fnt) (fnt->dy * (int)*str->pad)
Otherwise code like this would fail, because in this case / is evaluated before *:
printf("%i", 40/str_height(test, arial));
if str_height returns 40, your old macro would return 2 instead of 1.
Further more, you get strange compiler errors if something goes wrong in or near the macro and you can't get a function-pointer(but I don't think you will ever need to have to point to the str_height function

)
If you can live with that, I don't see why not to use your macro(with parentheses of course

) and it should be faster