Skip to content

Windows UI: unify typography, help and title/menu frame (#117) - #135

Merged
chammoru merged 8 commits into
masterfrom
codex/issue-117-typography
Oct 4, 2026
Merged

chammoru merged 8 commits into
masterfrom
codex/issue-117-typography

Conversation

@chammoru

@chammoru chammoru commented Oct 4, 2026 •

Copy link
Copy Markdown
Owner

Snap 확인 및 검증 범위 확정 / Snap hover and revised acceptance — 2026-10-04

사용자가 “Snap 확인만 하고 나머지는 안해도 될듯”이라고 요청했습니다. 남은 실제 200%·다중 모니터·고대비·전체 글리프 검사는 통과가 아닌 사용자 요청으로 생략이며, 더 이상 해당 범위의 검증 보류 사유로 두지 않습니다.

Viewer와 Comparer의 최종 Release 빌드에서 최대화 버튼 위에 포인터를 놓으면 Windows 기본 Snap 레이아웃 팝업이 표시되는 것을 확인했습니다. Viewer의 샘플 이미지/제목은 유지됐고 복원 후 File 메뉴도 정상 동작했습니다. 이 확인을 위한 제품 코드나 OS 설정 변경은 없습니다. 원래 남아 있던 Snap hover 확인은 완료했습니다.

추가 시도한 가장자리 드래그에서는 절반 크기의 배치 화면이 보였지만, 자동 도구가 Explorer 소유 Snap 팝업의 칸 클릭을 차단하고 재활성화 시 원래 크기로 돌아갔으므로 확정된 칸 선택/전체 Snap 배치 통과로 주장하지 않습니다. 이 제한은 검증 기록에 명시했습니다. 기록 커밋: 23e27c4. 사용자 지정 검증 범위는 완료했으며, master 병합·릴리즈는 아직 수행하지 않았습니다. 아래 기록의 이전 보류 항목은 이 최신 범위 결정으로 대체됩니다.

Both final Windows Release builds show the native Snap layout flyout over the DWM maximize button. This completes the previously pending Snap hover check. The user explicitly waived the other remaining environment/glyph checks; record them as waived, not passed. Extra edge-drag views are not claimed as committed zone-selection passes because Explorer popup targeting is blocked and reactivation restores prior geometry. No product or OS-setting changes for this check. See the detailed record; no master merge/release.


추가 실제 검증 결과 / Live verification follow-up — 2026-10-04

커밋: ce27006, 검증 기록. 이 절은 아래 과거 기록의 Windows 텍스트 확대·Comparer 검사 및 드래그 캡처 보류 설명을 갱신합니다.

  • 실제 Windows 디스플레이 배율 125%·150%·175%에서 확인했고, Comparer가 읽은 실제 DPI 120·144·168의 회귀 검사가 통과했습니다. 이 화면의 기본 목록은 175%까지만 제공하므로 200% 사용자 지정 배율/로그아웃은 적용하지 않았습니다.
  • 실제 Windows 텍스트 크기 225%에서 Comparer의 ROI·확대·이동·이미지 데이터·PSNR/SSIM 유지 검사와 Viewer 전체 MFC 갤러리 검사(E 전환·선택·재생·GPU 재생성 포함)가 통과했습니다.
  • 텍스트 확대 시 Comparer 그래프가 이미지 영역을 과도하게 차지하지 않도록 콘텐츠 높이의 1/3로 제한했습니다. Viewer DPI 테스트의 100% 텍스트 가정도 실제 OS 텍스트 크기를 반영하도록 수정하고 재검증했습니다.
  • 실제 제목 표시줄 드래그 후, 추가 클릭이나 강제 재그리기 없이 앱 안에서 읽은 메뉴 및 이미지 픽셀이 이동 전과 일치했습니다. 앞선 전체 이미지 비교는 이미지 열기 자동 최대화 후 드래그 복원으로 크기가 달라져 유효하지 않았으며, 테스트 초기 상태를 고정해 다시 통과했습니다. 캡처만으로 앱 글리프 누락을 확정하지 않습니다.
  • 배율·텍스트 크기 모두 원래 100%로 원복했고, 최종 Comparer 검사도 DPI 96/텍스트 1.000으로 통과했습니다. Core/전용 typography 검사와 양쪽 Release x64 빌드도 통과했습니다.

아직 남은 수동 확인: 실제 200% 및 다중 모니터 이동, 고대비 전환, Windows Snap hover, 전체 누락 글리프/emoji 및 사용자의 최종 시각 확인. 이슈는 열어 두고 PR #135는 Draft 유지합니다. master 병합·버전 증가·릴리즈는 하지 않았습니다.

Actual Windows scales 125%, 150% and 175% passed real Comparer checks at DPI 120/144/168. Live text size 225% passed Comparer ROI/source/zoom/pan/PSNR/SSIM preservation and the full Viewer gallery/playback/GPU suite. Cap the Comparer graph at one third of content height; correct the gallery test's OS-text-size assumption. Settled native title dragging preserves menu and image pixels by direct in-app readback without corrective input; normalize the test after source auto-maximization instead of comparing different canvas sizes. Both OS settings were restored to their original 100%; final tests and both Release builds passed. Live 200%, mixed-monitor, high contrast, Snap hover and exhaustive glyph/final visual acceptance remain. Keep issue open/PR draft; no merge/release.


제목/메뉴 프레임 범위 추가 승인 — 2026-10-04

사용자가 기본 제목 표시줄과 14 DIP 메뉴의 불균형을 지적했고, 제목만 덧그리는 시제품의 부작용을 설명받은 뒤 커스텀 제목/메뉴 프레임 작업을 승인했습니다. 제목과 메뉴는 Pretendard 14 DIP 보통 굵기로 맞추고, 최소화·최대화/복원·닫기 버튼은 DWM 기본 렌더링을 유지합니다. 메뉴 줄은 접근성 이름을 가진 실제 Windows 버튼을 사용하며 기존 HMENU 펼침 메뉴·명령 ID·단축키·선택 상태를 재사용합니다. 좁은 창에서는 메뉴가 줄바꿈됩니다.

Viewer 전체화면을 종료할 때 같은 메뉴를 복원하므로 동적 항목이 중복되지 않습니다. MFC 레이아웃에 제목/메뉴 여백을 한 번만 반영했고, 도움말·탐색기 전환 오버레이는 창 버튼을 가리지 않습니다. 고대비 모드 또는 DWM 미지원에서는 기본 Windows 프레임으로 돌아갑니다. OS 전역 설정과 Qt 코드는 변경하지 않았습니다.

CoreRegressionTests, 전용 typography/frame tests 및 실제 MFC 갤러리 통합 검사(최대화/작업 영역, 원래 창 크기 복원, 전체화면 3회 왕복, 활성 파일 유지, 기존 E/재생/GPU 재생성 포함)가 통과했습니다. 실제 화면에서 제목/메뉴 균형, 기본 창 버튼, 메뉴 키보드 이동 및 제목 드래그를 확인했습니다. 상세 기록.

실제 모니터 전환·Windows 텍스트 확대·고대비 전환·Snap hover의 수동 완료 조건은 남아 있습니다. #117은 열어 두고 PR #135는 Draft를 유지하며 master 병합·릴리즈·버전 변경은 하지 않습니다. 아래의 “네이티브 메뉴바 높이를 OS에 맡긴다”는 설명은 이전 단계 기록이며, 현재 기본 모드에는 새 클라이언트 메뉴 줄이 적용됩니다.

Approved title/menu frame extension

The user explicitly approved a custom title/menu frame after native-title font-only prototypes proved unsuitable. Viewer and Comparator now use matching normal-weight 14 DIP Pretendard titles and menu text, retain native DWM window buttons, and host accessible Win32 menu buttons backed by the original HMENU popup trees and commands. Main-menu rows wrap in narrow windows. Viewer restores the same root menu across full-screen transitions; MFC reserves chrome once, and overlays cover content instead of caption controls. High contrast or unavailable DWM composition restores the native frame. No OS-wide settings or Qt changes.

Core, typography/frame, and real MFC gallery/GPU tests passed. Native visual checks cover caption/menu balance, native buttons, title dragging and keyboard menu access. See the verification record above. Live mixed-monitor/text-size/high-contrast, Snap hover and the full Comparator metrics matrix remain acceptance limits; keep the issue open and PR draft. No merge/release. Earlier native-bar-height notes below describe the superseded implementation stage.


메뉴 추가 승인 및 구현

사용자가 메뉴·본문 균형 검토 후 “코드도 변경해봐”라고 승인했습니다. 따라서 이전의 앱 주 메뉴 owner-draw 제외 범위는 이 추가 작업에 한해 대체합니다.

  • Viewer/Comparator 주 메뉴와 펼침 메뉴를 Pretendard 14 DIP 보통 굵기와 넓은 좌우 간격으로 맞췄습니다. 펼침 행은 최소 30 DIP; 상단 네이티브 메뉴바 높이는 Windows 관리 그대로이며 글자를 그 높이에 맞춥니다.
  • 실제 HMENU·명령 ID·단축키·라디오/체크·비활성 상태·서브메뉴 구조를 유지합니다. MSAA 메뉴 이름을 노출하고 Alt 접근키와 화살표 탐색을 검증했습니다.
  • 동적 메뉴 삽입 시 메타데이터 중복과 초기 그리기 중 위치 조회 문제를 방어했습니다. 선택 표시를 실제 DIB 픽셀로 검증했습니다.
  • 양쪽 Release 빌드, CoreRegressionTests, 전용 typography/menu tests와 실제 갤러리 통합 검사 통과. 비동기 폴더 이동 검사의 고정 50 ms 대기는 실제 완료를 기다리는 기존 Await로 교체했고 재검사를 통과했습니다. 제품 폴더 이동 코드는 변경하지 않았습니다.
  • 본문·테마·도구 모음·Qt·이미지/측정 알고리즘·OS 전역 설정은 변경하지 않습니다. live mixed-monitor/Windows text enlargement의 전체 수동 완료 조건은 계속 열어 둡니다.

Approved menu extension

The user explicitly approved menu code changes after reviewing the native typography balance. Style main application menus with normal-weight Pretendard 14 DIP, wider horizontal padding and at least 30 DIP dropdown rows. The native bar height remains OS-owned, and bar text fits inside it. Preserve real HMENUs, native tracking, IDs/states/shortcuts and accessible names. Retain the native submenu chevron; paint check/radio states explicitly. No master merge, release or next design job.


요약

#117의 합의 범위만 구현했습니다. 기존 Pretendard를 유지하고 Viewer/Comparator 도움말 설명문과 일반 UI 텍스트의 역할별 크기·굵기, DPI/Windows 텍스트 확대, 캐시와 영역 측정을 정리했습니다. 숫자 고정폭 글꼴, 시스템 메뉴·일반 우클릭 메뉴·Windows 대화상자는 의도적인 예외입니다. 사용자의 추가 승인에 따라 앱 주 메뉴는 Pretendard로 맞췄습니다.

도움말을 실제 측정한 두 열로 나누고 줄바꿈·스크롤·Esc 닫기를 지원합니다. 글꼴 교체 전 DC 선택 상태를 복구하고 영상 진행 표시줄과 Comparator 헤더·타임라인·그래프 영역을 텍스트 크기에 맞췄습니다. 작은 창에서도 splitter 크기가 음수가 되지 않도록 방어했습니다.

검증

  • CoreRegressionTests 통과; Viewer/Comparator Release x64 v143 빌드 성공.
  • 전용 GDI 글꼴·도움말 검사 통과: 4 DPI × 5 텍스트 크기 × 3 너비, 실제 Pretendard/한글·영문 글리프, 줄바꿈·스크롤·키 라우팅, 캐시·선택된 글꼴 수명. GDI 리소스 before/after = 3/3 (기존 본문 검사 2/2).
  • 기존 실제 MFC 갤러리 통합 검사 재실행: exit 0, ALL INTEGRATION CHECKS PASSED. E 전환·선택·확대/이동·재생·GPU 재생성 포함.
  • 실제 Viewer/Comparator 도움말의 정렬, 마지막 행 접근, Esc 닫기를 확인.

전체 수동 완료 조건을 대신 체크하지 않았습니다. 실제 Windows Settings 텍스트 확대 및 서로 다른 DPI 모니터 간 이동, 모든 누락 글리프/emoji, Comparator ROI/측정 조작의 전체 시각 검증은 남아 있습니다. 따라서 Draft 상태로 올리고 #117을 열어 둡니다.

상세 명령과 한계: verification record. 다음 디자인 작업, Qt, 렌더링·측정 알고리즘, 릴리즈·Store 게시·버전 증가·master 병합은 포함하지 않습니다.

English

Refs #117. Finish remaining app-drawn prose with the existing Pretendard family, shared role sizing and Windows text scaling. Preserve numeric monospace, native Windows fonts and existing commands. Measure/wrap/scroll help rather than space-aligning proportional text; reuse fonts and restore persistent DC state before replacement. Scale affected text bounds and prevent negative small-window splitter dimensions.

Local core/typography tests, both Release x64 builds and the native gallery integration suite passed. The explicit DPI/text-scale test matrix is not a live mixed-monitor or Windows Settings test. Keep this PR draft and the issue open for remaining native visual acceptance; no release or automatic next-job execution.

@chammoru chammoru changed the title Windows UI: finish shared typography and accessible help (#117) Windows UI: unify typography, help and title/menu frame (#117) Oct 4, 2026
@chammoru
chammoru marked this pull request as ready for review October 4, 2026 13:36
@chammoru
chammoru merged commit 996ac76 into master Oct 4, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant