문제
HWP: 디버그 오버레이 보기 커맨드 실행 시 표 안의 글자 배치가 깨짐.
원인
현재 cmdDebugOverlay는 extension host(Node.js)에서 WASM을 직접 로드하여 렌더링함.
Node.js 환경에는 Canvas API가 없어 measureTextWidth를 text.length * 8 스텁으로 처리하므로,
한글 등 가변폭 글자의 폭 계산이 부정확하여 표 안 글자 배치가 틀어짐.
뷰어(webview)에서는 Canvas measureText()를 실제 호출하므로 정상 렌더링됨.
개선 방향
extension host에서 직접 렌더링하는 대신, 이미 열린 HWP 뷰어 webview에 메시지를 전송하여 webview에서 렌더링 후 결과 SVG를 반환받는 방식으로 전환.
- extension host → webview:
{ type: "exportDebugOverlay" } 메시지 전송
- webview:
set_debug_overlay(true) + renderPageSvg() × N 실행 후 SVG 배열 반환
- extension host: SVG 수신 → HTML 조합 →
/tmp 저장 → vscode.open
기대 효과
- 글자 배치 정확도: 뷰어와 동일
measureTextWidth 스텁 의존 제거
문제
HWP: 디버그 오버레이 보기커맨드 실행 시 표 안의 글자 배치가 깨짐.원인
현재
cmdDebugOverlay는 extension host(Node.js)에서 WASM을 직접 로드하여 렌더링함.Node.js 환경에는 Canvas API가 없어
measureTextWidth를text.length * 8스텁으로 처리하므로,한글 등 가변폭 글자의 폭 계산이 부정확하여 표 안 글자 배치가 틀어짐.
뷰어(webview)에서는 Canvas
measureText()를 실제 호출하므로 정상 렌더링됨.개선 방향
extension host에서 직접 렌더링하는 대신, 이미 열린 HWP 뷰어 webview에 메시지를 전송하여 webview에서 렌더링 후 결과 SVG를 반환받는 방식으로 전환.
{ type: "exportDebugOverlay" }메시지 전송set_debug_overlay(true)+renderPageSvg()× N 실행 후 SVG 배열 반환/tmp저장 →vscode.open기대 효과
measureTextWidth스텁 의존 제거