The problem might lie in your $black variable.
For hard black text:
$black = ImageColorAllocate ($im,-255,-255,-255);
For antialiased black text:
$black = ImageColorAllocate($im,0,0,0);
It may also be that certain fonts cannot be antialiased, though I am unsure of this.
Max