세 곳을 같은 값으로 통일하면 “보이는 값”과 “실제 캔버스”가 어긋나지 않습니다.
<!-- (A) 캔버스 태그 기본값 -->
<canvas id="cv" width="400" height="800"></canvas>
<!-- (C) 상단 입력 UI 기본값value="400" 중요 -->
<input id="cvW" type="number" value="400" />
<input id="cvH" type="number" value="800" />
<!-- (B) JS Init 기본값js 아래쪽 -->
setCanvasSize(400, 800);
<!-- (A) -->
<canvas id="cv" width="800" height="400"></canvas>
<!-- (C) -->
<input id="cvW" type="number" value="800" />
<input id="cvH" type="number" value="400" />
<!-- (B) -->
setCanvasSize(800, 400);
# (1) 고정 출력 해상도 (가장 흔한 형태)
$targetW = 1280
$targetH = 720
# 원하는 값으로 변경:
# 400×800
$targetW = 400
$targetH = 800
# 또는 800×400
$targetW = 800
$targetH = 400
결론: HTML=편집 좌표계 / PS1=최종 출력 입니다.