quanwei
2 days ago 04102f7237efefa744090ed7c25f7b5d0807b679
admin/app/common/service/business/Poster.php
@@ -626,16 +626,17 @@
     * @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;
    }