You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[layout] 한/글 2014 저장 줄 나눔과 한/글 2020 출력이 갈리는 칸 — 공백 폭·줄 끝 넘침 허용 차로 행이 한 줄 높아진다 (1342000 +700px) #7702
한/글 2014(9.1.1.3933)로 저장된 samples/task2287/1342000_edu_curriculum_map.hwp 의 표 칸 문단에서, 저장 LINE_SEG 의 줄 나눔과 한/글 2020 정본(pdf/task2287/1342000_edu_curriculum_map-hwp-2020.pdf)의 줄 나눔이 다르다. rhwp 는 저장 줄 나눔을 그대로 써서 행이 한 줄씩 높아진다.
쪽
칸
저장 LINE_SEG
한/글 2020 정본
rhwp
124
구역 5 표 r=42 c=8
3줄(…게임하 / 기)
2줄 — …안전하게 게임하기 가 둘째 줄에 들어감(줄 끝 x 974.0, 칸 안 오른쪽 967.2 를 6.8px 넘김)
3줄, 행 +17.3px
154
구역 7 표 r=97 c=8
2줄(…찬반 토 / 론)
1줄 — - 청소년기에 … 찬반 토론 (폭 333.9 / 칸 안 333.7)
2줄, 행 +17.3px
정본 글자 진행폭(쪽 척도 보정): 한글 12.00px · 공백 5.605.77px · 쉼표 3.52px. rhwp 메트릭(휴먼명조 9pt): 한글 12.00 · 공백 6.00 · 쉼표 3.19. 한 줄에 공백이 67개라 공백 폭 차이만으로 1.5~2.6px 가 갈린다.
측정
1342000 가로 쪽 표의 연속 성취기준 코드 쌍 1,749개의 행 피치를 정본과 대조하면 1,352쌍은 일치하고 rhwp 가 합계 +700px 높다. 두드러진 군집이 +9px(35쌍)·+17px 이며, 위 두 사례가 그 대표다.
시도와 결과 (프로토타입, 미커밋)
칸 문단의 저장 줄을 전부 stale 로 표시해 rhwp 가 다시 줄을 나누게 하면(invalidate_layout_inputs):
위 두 칸은 정본과 같은 줄 수가 된다(rhwp 측정상 154쪽 줄 321.2px ≤ 가용 321.4px).
정본 PDF 가 있는 샘플 784문서(정본 줄 300,076개)에서 rhwp export-text 줄과 한/글 PDF 줄을 공백 제거 문자열로 맞춰 봤습니다. 각 줄의 출처는 진단 스위치로 붙였습니다(로컬, 미커밋) — 줄 끝이 원본 저장 LINE_SEG 경계면 S, 저장 줄이 없는 문단을 rhwp 가 나눈 줄이면 N, 문단 끝이면 E.
줄 출처
줄 수
정본 일치
rhwp 가 1~3자 더 담음
rhwp 가 1~3자 덜 담음
S 저장 줄 경계 그대로
75,412
91.0%
203
393
N 저장 줄 없음 → rhwp 줄 나눔
17,243
68.8%
287
81
E 문단 끝 줄
166,992
82.8%
368
89
(목차 리더·탭 뒤 쪽번호처럼 한/글 PDF 가 별도 글줄로 뽑는 차이는 제외했습니다.)
읽은 것
rhwp 가 직접 나눈 줄은 «더 담는» 쪽으로 기운다(N·E 합 655 대 170, 약 3.5:1). 좁은 표 칸이 대부분 — 21761835·78494·80168 hwpx·76076·issue2063.
예: 76076 비교표 칸 — 한/글 1. ∼9. (생 / 략), rhwp 1. ∼9. (생략) 한 줄.
S 의 어긋남은 이 이슈 본문의 사례처럼 이전 한/글 버전(2010·2014·2018) 저장 줄 ≠ 한/글 2020 출력이다.
칸 문단을 전부 rhwp 로 다시 나누면 1~3자 어긋남이 1,484 → 3,329 로 두 배가 된다 — 지금은 «저장 줄 폐기» 가 답이 아니다.
다음
N·E 의 «더 담음» 중 가장 흔한 형상(좁은 칸 닫는 괄호/기호 줄 끝)에서 글자 폭인지 줄 끝 규칙인지 가리고, 같은 측정으로 전후를 대조하겠습니다.
처음 측정에 세 가지 허수가 섞여 있었습니다 — ① 목차 리더·탭 뒤 텍스트를 한/글 PDF 가 별도 글줄로 뽑음, ② 양쪽 정렬로 넓어진 공백을 사이에 둔 한 줄이 두 글줄로 쪼개져 뽑힘(76076 (생 략)), ③ 같은 문장이 문서의 다른 쪽에 다시 나올 때 서로 다른 쪽의 줄과 짝지어짐. 같은 기준선·괘선 없는 간격의 조각을 한 줄로 합치고, 쪽 ±1 안에서만 짝을 짓도록 고쳐 다시 쟀습니다.
줄 출처
줄 수
정본 일치
rhwp 1~3자 더
rhwp 1~3자 덜
S 저장 줄 경계
75,013
90.8%
82
364
N rhwp 줄 나눔(저장 줄 없음)
17,078
69.7%
283
76
E 문단 끝 줄
165,585
84.2%
320
107
rhwp 가 직접 나눈 줄의 «더 담음» 쏠림(약 3.7:1)은 남았습니다.
글자 폭은 원인이 아니다
양쪽 정렬로 늘어나지 않은 문단 끝 줄 중 텍스트가 정본과 정확히 같은 90,883줄에서 «한/글 폭 ÷ rhwp 폭» 중앙값은 0.9992 입니다.
76076(맑은 고딕 13pt, 자간 −13%): 한글 15.08px·공백 0.5em×(1+자간) 모두 정본과 같음. 문제 줄은 rhwp 자연 폭이 가용 578.45px 에 1.3px 차로 들어가고 한/글은 0.3% 넓게 재어 넘긴 경계 사례.
글꼴별로 갈리는 것 중 가장 큰 Haansoft Batang 1.117 은 거의 전부 편람 한 문서이며, 이는 정본 PDF 를 만든 기계에 KoPub 글꼴이 없어 한컴바탕으로 대체된 것입니다(rhwp 는 문서가 지정한 KoPub 메트릭을 씀). 편람은 kopub 판 정본으로 봐야 합니다.
«더 담음» 이 몰린 다섯 문서(21761835·78494·80168·issue2063·76076)도 폭 비는 1.0 ± 0.5% 안 — 넓이 편향이 아니라 경계선 근처 판정과 줄 나눔 규칙 차이입니다.
판단
이 축은 한 규칙으로 닫히지 않습니다. 남은 «더 담음» 은 (a) 0.3% 안팎의 경계 판정, (b) 글자 단위 나눔에서 한/글이 단어를 통째 넘기는 사례, (c) 문단 오른쪽 여백 적용 차이(76076 정본 줄 끝이 문단 오른쪽 여백 9.33px 를 무시한 본문 끝 718.7 에 정렬) 같은 개별 사례로 갈립니다. 측정 도구(줄 출처 진단 + 코퍼스 대조)는 로컬에 보존해 두고, 사례별 규칙을 하나씩 확인하겠습니다.
76076 본문 문단(구역 0 문단 184 — 맑은 고딕 13pt, 양쪽 정렬, 한글 글자 단위 나눔) 안에 시험 글자를 넣어 같은 글꼴·크기·자간·문단 속성으로 rhwp 와 한/글(MCP engine 2024) 줄당 글자 수를 비교했습니다.
넣은 글자
한/글 줄당
rhwp 줄당
가 반복, 자간 −13%
30 / 38 / 38 / 38
30 / 38 / 38 / 38
가 반복, 자간 0%
35 / 33 / 33 / 33
35 / 33 / 33 / 33
가나다 반복(공백 낀 어절), 자간 −13%
8 / 10 / 10 / 10
8 / 10 / 10 / 10
가, 반복(쉼표+공백), 자간 −13%
17 / 22 / 21
17 / 22 / 21
음절·공백·쉼표·자간에서 rhwp 측정과 줄 나눔은 한/글과 완전히 같습니다. 앞 코멘트의 «rhwp 가 1~3자 더 담음» 은 공통 규칙 하나의 편차가 아니라, 섞인 글자모양(76076 해당 줄은 밑줄 속성 글자모양이 섞임)·0.3% 경계선 판정·문단 오른쪽 여백 적용 같은 사례별 조건의 합입니다.
이 축은 사례마다 같은 방식(시험 문서 → 한/글 변환 → 줄당 글자 수 대조)으로 하나씩 확인해야 하며, 1342000 의 «한/글 2014 저장 줄 ≠ 한/글 2020 출력» 사례도 같은 방식으로 원인 조건을 좁힐 수 있습니다. 측정 도구와 시험 문서는 로컬에 보존해 두었습니다.
문서는 #7445 이관으로 mydocs/pr/assets/issue7445/education-curriculum-map/ 에 있습니다(같은 바이트). 기준은 같은 폴더의 current-source-hancom2020-print.pdf(415쪽)입니다.
쪽
칸
한/글 2020 Print
devel 6ed1682c3
154
구역 7 표 r=97 c=8
1줄 …이성 친구 문제에 관한 찬반 토론
1줄 — 같음
124
구역 5 표 r=42 c=8
2줄 …안전하게 게임하기
3줄 …안전하게 게임하 / 기 (저장 줄 그대로)
154쪽은 이 이슈 뒤에 들어간 줄 나눔·글자 폭 수정(#7805·#7815·#7836·#7878 계열)으로 정본과 같아졌습니다. 124쪽은 남았습니다 — rhwp 가 한/글 2014(9.1.1.3933) 저장 줄 나눔을 그대로 쓰고, 한/글 2020 은 같은 칸을 다시 나눕니다.
남은 사례는 rhwp 측정 결함이 아니라 저장 버전(2014)과 기준 버전(2020)의 차이입니다. 고치려면 «2014 저장 줄을 2020 기준으로 다시 나눌지» 를 정해야 하고, 이 문서에서 칸 전면 재분할은 앞서 순손실로 확인됐습니다(본문 표). 문서 전체의 쪽 소속은 #7743 에서 추적 중입니다.
Activity
planet6897 commentedon Oct 10, 2026
코퍼스 측정: 줄 출처별 정본 일치율
정본 PDF 가 있는 샘플 784문서(정본 줄 300,076개)에서 rhwp
export-text줄과 한/글 PDF 줄을 공백 제거 문자열로 맞춰 봤습니다. 각 줄의 출처는 진단 스위치로 붙였습니다(로컬, 미커밋) — 줄 끝이 원본 저장 LINE_SEG 경계면S, 저장 줄이 없는 문단을 rhwp 가 나눈 줄이면N, 문단 끝이면E.S저장 줄 경계 그대로N저장 줄 없음 → rhwp 줄 나눔E문단 끝 줄(목차 리더·탭 뒤 쪽번호처럼 한/글 PDF 가 별도 글줄로 뽑는 차이는 제외했습니다.)
읽은 것
1. ∼9. (생/략), rhwp1. ∼9. (생략)한 줄.S의 어긋남은 이 이슈 본문의 사례처럼 이전 한/글 버전(2010·2014·2018) 저장 줄 ≠ 한/글 2020 출력이다.다음
N·E 의 «더 담음» 중 가장 흔한 형상(좁은 칸 닫는 괄호/기호 줄 끝)에서 글자 폭인지 줄 끝 규칙인지 가리고, 같은 측정으로 전후를 대조하겠습니다.
planet6897 commentedon Oct 10, 2026
측정 보정 + 폭 비교 결과
앞 코멘트 수치 보정
처음 측정에 세 가지 허수가 섞여 있었습니다 — ① 목차 리더·탭 뒤 텍스트를 한/글 PDF 가 별도 글줄로 뽑음, ② 양쪽 정렬로 넓어진 공백을 사이에 둔 한 줄이 두 글줄로 쪼개져 뽑힘(76076
(생 략)), ③ 같은 문장이 문서의 다른 쪽에 다시 나올 때 서로 다른 쪽의 줄과 짝지어짐. 같은 기준선·괘선 없는 간격의 조각을 한 줄로 합치고, 쪽 ±1 안에서만 짝을 짓도록 고쳐 다시 쟀습니다.S저장 줄 경계Nrhwp 줄 나눔(저장 줄 없음)E문단 끝 줄rhwp 가 직접 나눈 줄의 «더 담음» 쏠림(약 3.7:1)은 남았습니다.
글자 폭은 원인이 아니다
양쪽 정렬로 늘어나지 않은 문단 끝 줄 중 텍스트가 정본과 정확히 같은 90,883줄에서 «한/글 폭 ÷ rhwp 폭» 중앙값은 0.9992 입니다.
Haansoft Batang1.117 은 거의 전부 편람 한 문서이며, 이는 정본 PDF 를 만든 기계에 KoPub 글꼴이 없어 한컴바탕으로 대체된 것입니다(rhwp 는 문서가 지정한 KoPub 메트릭을 씀). 편람은 kopub 판 정본으로 봐야 합니다.판단
이 축은 한 규칙으로 닫히지 않습니다. 남은 «더 담음» 은 (a) 0.3% 안팎의 경계 판정, (b) 글자 단위 나눔에서 한/글이 단어를 통째 넘기는 사례, (c) 문단 오른쪽 여백 적용 차이(76076 정본 줄 끝이 문단 오른쪽 여백 9.33px 를 무시한 본문 끝 718.7 에 정렬) 같은 개별 사례로 갈립니다. 측정 도구(줄 출처 진단 + 코퍼스 대조)는 로컬에 보존해 두고, 사례별 규칙을 하나씩 확인하겠습니다.
planet6897 commentedon Oct 10, 2026
한/글 대조 실험 — 기본 줄 나눔 규칙은 일치
76076 본문 문단(구역 0 문단 184 — 맑은 고딕 13pt, 양쪽 정렬, 한글 글자 단위 나눔) 안에 시험 글자를 넣어 같은 글꼴·크기·자간·문단 속성으로 rhwp 와 한/글(MCP engine 2024) 줄당 글자 수를 비교했습니다.
가반복, 자간 −13%가반복, 자간 0%가나다반복(공백 낀 어절), 자간 −13%가,반복(쉼표+공백), 자간 −13%음절·공백·쉼표·자간에서 rhwp 측정과 줄 나눔은 한/글과 완전히 같습니다. 앞 코멘트의 «rhwp 가 1~3자 더 담음» 은 공통 규칙 하나의 편차가 아니라, 섞인 글자모양(76076 해당 줄은 밑줄 속성 글자모양이 섞임)·0.3% 경계선 판정·문단 오른쪽 여백 적용 같은 사례별 조건의 합입니다.
이 축은 사례마다 같은 방식(시험 문서 → 한/글 변환 → 줄당 글자 수 대조)으로 하나씩 확인해야 하며, 1342000 의 «한/글 2014 저장 줄 ≠ 한/글 2020 출력» 사례도 같은 방식으로 원인 조건을 좁힐 수 있습니다. 측정 도구와 시험 문서는 로컬에 보존해 두었습니다.
수정(layout): 장평 있는 공백 전진을 내린 반각 단위 × 장평의 반올림으로 잰다 (edwardkim#7702)
수정(composer): devel 의 find_next_tab_stop 새 인자(text_start_offset)를 줄 나…
문서(edwardkim#7702): 현재 head Visual Sweep review·overlay PNG (Native·f…
문서(edwardkim#7702): 현재 head Visual Sweep review·overlay PNG (Native·f…
문서(edwardkim#7702): 현재 head Visual Sweep review·overlay PNG (Native·f…
문서(edwardkim#7702): 현재 head Visual Sweep review·overlay PNG (Native·f…
문서(edwardkim#7702): 현재 head Visual Sweep review·overlay PNG (Native·f…
수정(renderer): 양쪽 정렬 줄 끝에 걸린 공백을 배분에서 뺀다 — 저장 줄 없는 줄도 (edwardkim#7702)
문서(edwardkim#7824): f126f3b head Visual Sweep review·overlay PNG 갱신 (…
시험(edwardkim#7702): 양쪽 정렬 줄 끝 공백은 배분 밖 — odd_indent_ladder 1쪽 한/글 정본 대조
수정(renderer): 양쪽 정렬 줄 끝에 걸린 공백을 배분에서 뺀다 — 저장 줄 없는 줄도 (edwardkim#7702)
문서(edwardkim#7702): edwardkim#7869 적층 후 합성 fixture p1 Visual Sweep re…
2 remaining items
문서(edwardkim#7702): 코드 head a7b3e15 로 대표 쪽 Visual Sweep review·overla…
수정(renderer): 글자 전진폭을 한/글 장치 격자(4 HWPUNIT)에 놓는다 (edwardkim#7702)
수정(renderer): · ° ‘’“” 를 영문 슬롯 글꼴 폭으로 잰다 (edwardkim#7702)
증적: edwardkim#7702 문장부호 영문 슬롯 Visual Sweep 전후 overlay
수정(composer): 줄 나눔이 탭 정지와 옛한글 자모 묶음을 그리기와 같이 잰다 (edwardkim#7702)
수정(layout): 장평 있는 공백 전진을 내린 반각 단위 × 장평의 반올림으로 잰다 (edwardkim#7702)
수정(composer): devel 의 find_next_tab_stop 새 인자(text_start_offset)를 줄 나…
수정(typeset): 합성 줄과 저장 줄이 섞인 쪽의 흐름·그리기 기준·쪽 끝 첫 줄 (edwardkim#7702)
수정(renderer): 합성 줄 사다리의 문단 간격·쪽 맨 위 앞 간격·기준 역산 (edwardkim#7702)
planet6897 commentedon Oct 18, 2026
현행 devel(
6ed1682c3) 재측정문서는 #7445 이관으로
mydocs/pr/assets/issue7445/education-curriculum-map/에 있습니다(같은 바이트). 기준은 같은 폴더의current-source-hancom2020-print.pdf(415쪽)입니다.6ed1682c3…이성 친구 문제에 관한 찬반 토론…안전하게 게임하기…안전하게 게임하/기(저장 줄 그대로)154쪽은 이 이슈 뒤에 들어간 줄 나눔·글자 폭 수정(#7805·#7815·#7836·#7878 계열)으로 정본과 같아졌습니다. 124쪽은 남았습니다 — rhwp 가 한/글 2014(9.1.1.3933) 저장 줄 나눔을 그대로 쓰고, 한/글 2020 은 같은 칸을 다시 나눕니다.
남은 사례는 rhwp 측정 결함이 아니라 저장 버전(2014)과 기준 버전(2020)의 차이입니다. 고치려면 «2014 저장 줄을 2020 기준으로 다시 나눌지» 를 정해야 하고, 이 문서에서 칸 전면 재분할은 앞서 순손실로 확인됐습니다(본문 표). 문서 전체의 쪽 소속은 #7743 에서 추적 중입니다.
planet6897 commentedon Oct 19, 2026
1342000 남은 «저장 줄 낱말 꼬리» — 원인과 수정 (로컬)
원인
한/글 2014(9.1.1.3933) 저장 줄이 공백 최소값(condense) 흡수 없이 낱말 끝 글자만 다음 줄로 보낸 칸 문단이 있다. 한/글 2020 Print 는 그 꼬리를 앞 줄에 붙인다.
…순서에 맞게 시연하/기…관한 찬반 토/론rhwp 는 저장 줄을 따라 행이 한 줄씩 높았고(151쪽 r=56 57.1px, 정본 44px) 문서가 416쪽(정본 415쪽)이 됐다.
규칙
version.xml),측정기
#6135저장 extent 증인이 재조판된 문단에도 원래 사다리를 써 행이 옛 줄 수 높이로 남던 결함도 함께 고친다.반례(저장 줄 유지 — 한/글도 유지)
…포함 논의 필/요…정보/가21_언어_기출_편집가능본.hwp(11.0.0.2129) 1쪽…확인하/십시오.,36388711…청년오피스.hwpx(요약 8.0 / version.xml 11.0) 1쪽…과학/기술(150)결과 (로컬 head, #7965 리베이스 위)
samples/1,252건 SVG 변화 0남은 것
…생활 습관을 실천한/다.는 rhwp 가 붙이고 한/글은 두 줄 — 꽉 찬 줄 경계에서 rhwp condense 판정이 ~2px 너그럽다.planet6897 commentedon Oct 19, 2026
수정은 #7965 에 합쳤다(head
8e1811336, code065125a94). 별도로 냈던 #8092 는 닫았다.fix(조판): 휴먼명조 ASCII 전진폭을 글꼴 hmtx 로, 공백 줄여 들어가는 문단 끝 줄은 끝 글자 자간 없이 (ed…
fix(edwardkim#8105): 번호 문단의 저장 줄 낱말 꼬리 — 한/글이 다시 나누는 문단