웹에서 점선이 보기 좋다고 출력한 종이에서도 같은 역할을 하는 것은 아니다. 실제 활동지 생성기의 점선과 프레임을 읽으며, 무엇을 자르는 선인지와 어느 공간을 침범하면 안 되는지를 좌표로 설명하고 싶었다.

페이지의 기준 단위부터 맞췄다

PDF의 좌표는 포인트이고 웹의 CSS 픽셀과 같은 수치라고 가정할 수 없다. 새 예제는 A4 페이지의 폭과 높이를 포인트로 선언한다. 본문 프레임과 글줄, 점선과 안내도 그 좌표에서 배치한다. 다른 단위에서 가져온 숫자를 이름 없이 섞으면 선이 맞아 보여도 실제 크기의 근거를 잃는다.

실제 프린터는 맞춤 인쇄와 여백 설정으로 배율을 바꿀 수 있다. 그래서 문서의 좌표를 계산했다는 사실과 종이 위 치수를 보장했다는 사실을 구별했다. 공유 PDF에도 실제 인쇄 설정을 따로 확인하라는 문장이 있다. 작은 안내지만 화면과 물리적 사용의 책임을 나누는 데 필요했다.

점선은 길이와 간격의 반복이다

dashes는 시작과 끝, 높이와 dash·gap을 받아 선분 목록을 만든다. 마지막 선분이 끝점을 넘으면 끝점에서 자른다. 길이와 간격은 양수여야 하고 페이지 밖의 범위는 거절한다. 0 길이로 무한 반복하거나 종이 바깥에 선을 그리는 결과를 막기 위한 계약이다.

예를 들어 10에서 22까지 길이 6과 간격 2를 반복하면 10~16, 18~22가 된다. 마지막 선은 원래 길이보다 짧다. 이 고정 반례를 테스트해 끝점을 넘지 않는지 확인했다. 선이 짧아지는 이유를 알고 선택한 것이며 모든 점선 길이를 같은 모양으로 보이게 만드는 디자인 규칙은 아니다.

글과 자르는 선이 경쟁하지 않게 했다

합성 PDF는 본문 프레임 아래에 절취선 설명과 점선을 두고 하단 안내는 더 아래에 둔다. 글줄의 하단 검사는 본문용 예약 공간을 지키며 점선은 별도의 높이에 놓인다. 좌표를 각각 검산한 뒤 전체 렌더링에서 서로 간섭하지 않는지 확인했다.

이 예제는 실제 가위 동선과 어린이의 조작을 평가하지 않는다. 자르기 난이도와 안전성은 별도 현장 검토가 필요하다. 나는 문서 제작자가 보장할 수 있는 기하와 실제 수업에서 확인할 사용성을 같은 완료로 보고하지 않았다. 여백을 크게 두었다는 사실만으로 활동의 적합성이 증명되는 것은 아니다.

실제 파일 안에서 문구와 배치를 확인했다

한 페이지를 실제 PDF로 생성하고 텍스트 추출과 이미지 렌더링을 수행했다. 본문 지시문과 사용 안내가 남았고 도형·선·페이지 번호가 분리되어 보였다. 원본 고객 활동지와 사진은 쓰지 않았다. 다운로드에는 새 합성 도형과 생성 코드, 테스트만 담았다.

코어 테스트 12개는 점선 끝점 외에도 긴 단어와 줄 수, 하단 기준선을 확인한다. 종이 출력과 태블릿 검수는 수행하지 않았다. 다른 자료에서 실제 인쇄 크기가 중요하면 프린터 설정과 측정 결과를 추가 근거로 남겨야 한다. 지금의 렌더링 기록을 그 결과처럼 재사용해서는 안 된다.

레이아웃을 설정으로 바꿀 때

범용화한다면 페이지 크기와 여백, 본문 프레임과 절취선 위치를 한 설정으로 묶을 수 있다. 다만 A4를 다른 종이로 바꾸기 전에 좌표 경계 검사도 그 크기를 받도록 바꿔야 한다. 현재 dashes의 페이지 경계는 A4 기준이며 이름만 바꿔 범용 종이 지원이라고 말하지 않았다.

사용 안내의 위치도 콘텐츠다. 아래에 작게 붙여 놓고 본문이 길어지면 겹치게 두어서는 안 된다. 본문·자르는 동작·파일 이용 조건이 서로 다른 역할을 갖고 같은 페이지에 공존하도록 예약 공간을 지키는 것이 이번 공유의 핵심이다. 웹 레이아웃과 인쇄 레이아웃의 차이를 이런 실제 경계로 남기고 싶었다.

프레임을 바꾸는 변경도 검수한다

본문 프레임을 아래로 늘리면 남은 빈 공간이 줄어든다. 그때 절취선과 안내 위치를 그대로 두면 독립적으로 유효한 숫자들이 서로 겹칠 수 있다. 현재 샘플은 선언한 고정 배치를 검토했으며 모든 사용자 설정의 충돌을 자동 검출하는 엔진은 아니다. 설정을 노출한다면 영역끼리의 교집합 검사도 추가하는 방향으로 확장해야 한다.