Build Windows portable / build (push) Canceled after 0s
Ba lỗi làm chữ trong ô sửa khác hẳn chữ gốc: - Hồi quy: line-height từng dòng tính bằng khoảng hở giữa 2 bbox (~0/âm, kẹp 8px) thay vì khoảng cách baseline → các dòng dồn cục lên đầu ô. Fix: advance = hiệu mép dưới 2 bbox liền kề. - Sai font: family PostScript CamelCase (TimesNewRoman, SegoeUI) không khớp tên font Windows → CSS rơi về serif/sans mặc định. Fix: cssFontStack tách CamelCase + bảng alias (Helvetica→Arial...). - Sai cỡ với file engine báo cỡ lệch: thêm fitEditLinesToPdf — vòng ĐO-HIỆU CHỈNH sau khi mount: đo chiều cao mực thật của đúng chuỗi đó (canvas actualBoundingBox ở cỡ tham chiếu 100px, né hinting) so với bbox dòng PDF rồi tự sửa cỡ (dead-band 12% giữ ổn định file chuẩn); đo vị trí render thật (Range + font/ink ascent) rồi bù margin/indent từng dòng cho trùng mép mực — khối căn giữa cũng bù ngang qua text-indent. Kèm: giữ thụt lề từng dòng; đúp từ viewer thường đặt con trỏ đúng điểm đúp (chờ img.decode trước khi đo). Kiểm chứng bằng harness canvas + Edge headless: 3 kịch bản (cỡ báo sai 1/2, cỡ đúng, căn giữa) đều trùng khít ≤1.3px. Chi tiết: docs/12-phase4-summary.md (Vá vòng 3). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>