| | |
| | | * @return array [fontSizePt, left, top] |
| | | */ |
| | | private function SizeLeftTop($fontSize,$left,$top){ |
| | | // px到pt转换系数:1px ≈ 0.75pt (GD库使用磅pt作为字体单位) |
| | | // 使用更精确的转换系数 |
| | | $fontSizePt = $fontSize * 0.75; |
| | | // px到pt转换系数:GD库使用磅(pt)作为字体单位 |
| | | // 使用标准转换: 1pt = 4/3 px, 所以 1px = 3/4 pt = 0.75pt |
| | | // 但为了更清晰的文字,调整为 1px = 0.8pt |
| | | $fontSizePt = $fontSize * 0.8; |
| | | |
| | | // 调整top位置,使文字基线对齐 |
| | | // imagettftext的y坐标是文字基线位置,不是文字顶部 |
| | | // 需要加上字体大小来使文字显示在期望的位置 |
| | | // 微软雅黑字体的基线大约在字体高度的85%位置 |
| | | $data[0] = $fontSizePt; // 字体大小(pt) |
| | | $data[1] = (float)$left; // 左边距(px) |
| | | $data[2] = (float)$top + $fontSize; // 顶部位置(px),加字体大小以校正基线 |
| | | $data[2] = (float)$top + ($fontSize * 0.85); // 顶部位置(px),加字体大小的85%以校正基线 |
| | | return $data; |
| | | } |
| | | |