【PHP】ImageMagickでテキストにボーダーをつける

ImagickDrawオブジェクトでsetStrokeColorとsetStrokeWidthを指定すればテキストに境界線をつけることが出来る。 のですが・・・ どうやらPhotoShopでいう境界線中央(内側?)に近い状態になるようで・・・ そのサンプル

  #文字
  $str = "Hello World !";
  #フォントサイズ
  $font_size = 30;
  #境界線の太さ
  $border_w = 5;
  #境界線の色
  $border_c = "#000000";
  #フォント指定
  $font_family = "Arial";
  #テキストの縦表示位置
  $text_x = 30;
  #テキストの横表示位置
  $text_y = 55;
  #テキストの色
  $text_c = "#ffffff";
  #
  #背景画像作成
  #
  $im = new Imagick();
  $im->newImage(728,90,new ImagickPixel('#550000'));
  $im->spliceImage(0,0,0,0);
  #
  #境界線となるテキストを作成
  #
  $im2 = new Imagick();
  $im2->newImage($im->getImageWidth(), $im->getImageHeight(), 'none');
  #
  #境界線の設定
  #
  $idraw = new ImagickDraw();
  $idraw->setFont($font_family);
  $idraw->setFontSize($font_size);
  $idraw->setFillColor($text_c);
  $idraw->setStrokeColor($border_c);
  $idraw->setStrokeWidth($border_w);
  #境界線の位置の誤差を補正
  $idraw->annotation($text_x-0.5,$text_y-0.5,$str);
  #境界線を画像化する
  $im2->drawImage($idraw);
  $im2->trimImage(0);
  #重ねる
  $im->addImage($im2);
  #合成
  $im4=$im->mosaicImages();
  $im4->setImageFormat("jpg");
  #吐き出す
  header('Content-Type: image/jpg');
  echo $im4;
結果が以下 noborder ボーダーでつぶれとるがな・・・ということで さらにこの上に境界線がついてないテキストを重ねてみる。
  #文字
  $str = "Hello World !";
  #フォントサイズ
  $font_size = 30;
  #境界線の太さ
  $border_w = 5;
  #境界線の色
  $border_c = "#000000";
  #フォント指定
  $font_family = "Arial";
  #テキストの縦表示位置
  $text_x = 30;
  #テキストの横表示位置
  $text_y = 55;
  #テキストの色
  $text_c = "#ffffff";
  #
  #背景画像作成
  #
  $im = new Imagick();
  $im->newImage(728,90,new ImagickPixel('#550000'));
  $im->spliceImage(0,0,0,0);
  #
  #境界線となるテキストを作成
  #
  $im2 = new Imagick();
  $im2->newImage($im->getImageWidth(), $im->getImageHeight(), 'none');
  #
  #境界線の上にかぶせるテキストを作成
  #
  $im3 = new Imagick();
  $im3->newImage($im->getImageWidth(), $im->getImageHeight(), 'none');
  #
  #境界線の設定
  #
  $idraw = new ImagickDraw();
  $idraw->setFont($font_family);
  $idraw->setFontSize($font_size);
  $idraw->setFillColor($text_c);
  $idraw->setStrokeColor($border_c);
  $idraw->setStrokeWidth($border_w);
  #境界線の位置の誤差を補正
  $idraw->annotation($text_x-0.5,$text_y-0.5,$str);
  #
  #テキストの設定
  #
  $idraw2 = new ImagickDraw();
  $idraw2->setFont($font_family);
  $idraw2->setFontSize($font_size);
  $idraw2->setFillColor($text_c);
  $idraw2->annotation($text_x,$text_y,$str);
  #境界線を画像化する
  $im2->drawImage($idraw);
  $im2->trimImage(0);
  #テキストを画像化する
  $im3->drawImage($idraw2);
  $im3->trimImage(0);
  #重ねる
  $im->addImage($im2);
  $im->addImage($im3);
  #合成
  $im4=$im->mosaicImages();
  $im4->setImageFormat("jpg");
  #吐き出す
  header('Content-Type: image/jpg');
  echo $im4;
結果が以下 border 境界線の太さは若干誤差がありそうですが・・・ でも境界線外側として画像ができました。