Skip to content

Windows UI redesign: Unify Korean/English UI typography #117

Closed

Description

@chammoru

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.


메뉴 범위 추가 승인 — 2026-10-04

사용자가 메뉴·본문 균형 검토 후 “코드도 변경해봐”라고 승인했습니다. 이전 본문의 앱 주 메뉴 owner-draw 제외 조건은 이 추가 승인 범위에서 대체합니다. 시스템 메뉴·일반 우클릭 메뉴·Windows 대화상자는 유지합니다.

PR #135에 메뉴 변경을 추가했습니다(3d03e8a, 9bb63fe). Viewer/Comparator의 주 메뉴와 펼침 메뉴는 Pretendard 14 DIP 보통 굵기 및 넓은 좌우 간격을 사용합니다. 펼침 행은 최소 30 DIP이고, 상단 네이티브 메뉴바 높이는 OS 관리 그대로입니다. 글자는 해당 높이 안에 맞춥니다. HMENU/명령 ID, 상태·단축키·Alt 접근키·화살표 탐색·접근성 이름을 유지했습니다.

양쪽 Release 빌드, 핵심/전용 메뉴 검사 및 실제 갤러리 통합 검사가 통과했습니다. 메뉴 삽입 메타데이터, 초기 화면 그리기, 라디오 표시를 실제 화면/DIB 검사로 보완했습니다. 고정 50 ms를 사용하던 비동기 이동 검사는 제한 시간 안에 실제 완료를 기다리는 방식으로 수정 후 통과했으며 제품 폴더 이동 코드는 변경하지 않았습니다. 실제 OS 확대/모니터 전환의 전체 수동 완료 조건은 여전히 남아 있습니다. 이슈는 열어 두고 master 병합·릴리즈는 하지 않았습니다.

Approved menu extension

The user approved menu code changes after native typography review. Main application menus now use normal-weight Pretendard 14 DIP, wider horizontal spacing and minimum 30 DIP dropdown rows. Native menu-bar height remains OS-owned; text fits inside it. Retain real menu tracking, IDs/states/shortcuts/mnemonics and accessible names. Both builds and local tests passed; see PR #135 and its verification record. This approval supersedes the earlier main-menu owner-draw exclusion only. Live mixed-monitor/text-enlargement acceptance is still open; no merge/release.


구현·검증 결과 — 2026-10-04

Draft PR: #135, 커밋: 63dd1b1. 상세 검증 기록.

  • 기존 Pretendard를 유지하고 도움말을 실제 측정한 두 열·줄바꿈·스크롤로 변경했습니다. 숫자 고정폭과 OS 기본 글꼴은 유지합니다.
  • 공유 역할별 GDI 글꼴 캐시, Windows 텍스트 크기 변경 알림, DirectWrite 재생성 및 관련 텍스트/클릭 영역 재측정을 적용했습니다. 선택된 GDI 글꼴의 수명과 진행 표시줄 잘림, 작은 창의 음수 splitter 크기도 보완했습니다.
  • CoreRegressionTests 통과, Viewer/Comparator Release x64 v143 빌드 성공, 전용 글꼴 검사 통과(4 DPI × 5 텍스트 크기 × 3 너비, GDI 리소스 2→2).
  • 실제 MFC 갤러리 통합 검사 재실행: exit 0 / ALL INTEGRATION CHECKS PASSED. E 서랍 전환, 선택·확대·이동 유지, 재생 및 GPU 리소스 재생성 포함.
  • 실제 Viewer/Comparator 도움말 정렬, 끝까지 스크롤 및 Esc 닫기를 확인했습니다.

남은 항목: 실제 Windows Settings 텍스트 확대와 서로 다른 DPI 모니터 간 이동, 모든 누락 글리프/emoji, Comparator ROI/측정 조작의 전체 시각 검증. 자동 검사에 명시적으로 넣은 DPI/텍스트 배율을 이 실제 OS 검사와 동일하게 주장하지 않습니다. 따라서 Draft 상태와 열린 이슈를 유지합니다. master 병합·릴리즈·다음 디자인 작업은 진행하지 않았습니다.

Implementation / verification

Draft PR #135, commit 63dd1b1. Both native Release builds, core tests, the explicit typography matrix and the native gallery integration suite passed. See the linked verification record for commands and evidence. Live Windows Settings/mixed-monitor checks, exhaustive glyph fallback and the full Comparator ROI/metric visual matrix remain; keep full acceptance boxes open. No master merge, release or next-job execution.


합의된 구현 범위 — 2026-10-04

사용자가 기존 Pretendard 적용 현황을 확인한 후 “#117을 진행해줘”라고 지시했습니다. 글꼴을 새로 교체하지 않습니다. 이미 적용된 UI는 유지하고, Viewer/Comparator 도움말의 설명문 등 남은 일반 텍스트를 Pretendard로 정리합니다. 숫자·좌표의 고정폭 글꼴과 Windows 기본 메뉴·대화상자 글꼴은 의도적인 예외입니다. 역할별 크기·굵기와 DPI/Windows 텍스트 확대 처리, 글꼴 재사용 및 텍스트 영역 측정을 정리합니다. 테마·주 도구 모음 재배치·이미지/비교 알고리즘·Qt viewer는 제외합니다. 릴리즈는 별도 지시 없이는 진행하지 않습니다.

구현 브랜치: codex/issue-117-typography, 시작점: 최신 origin/master의 7b8d50f. 현재 상태: 구현 및 로컬 검증 완료, 실제 OS 확대/모니터 전환 등 수동 시각 검증은 남아 있습니다. Draft PR #135를 검토하며 전체 완료 조건은 아직 체크하지 않습니다.

Agreed scope

The user authorized #117 on 2026-10-04 after reviewing the existing implementation. Keep Pretendard already used by both apps; finish remaining prose (notably help), standardize font roles and DPI/system text scaling, reuse fonts and measure text bounds. Numeric monospace and OS-owned fonts are intentional exceptions. No themes, main-toolbar redesign, image/metric algorithm changes, Qt changes or release execution. Branch: codex/issue-117-typography from origin/master 7b8d50f. Implementation and local verification passed; live OS text enlargement/mixed-monitor visual acceptance remains. Review draft PR #135; full acceptance checks are not passed by assumption.


한국어 — 한글·영문 UI 글꼴 통일

화면 시안

한글·영문 UI 글꼴 통일 — Windows UI 제안

이미지를 클릭하면 크게 볼 수 있습니다. 순서도나 구현된 Windows 앱 스크린샷이 아닌 UI 화면 제안입니다. 이미지는 합성이고 수치는 설명용 예시입니다. 주변 조작 요소는 전체 계획의 맥락이며 이번 작업에서는 아래 범위만 구현합니다. 현재 빌드의 실제 변경 전·후 화면이라는 뜻이 아닙니다.

이번 작업의 목표

Viewer와 Comparator에 같은 읽기 쉬운 UI 글꼴을 적용하되 명령 위치와 이미지 데이터는 바꾸지 않습니다.

작업 묶음: #111. 전체 설계와 반드시 유지할 기존 동작: #110.

선행 작업: 없음. 여기서 화면 논의를 시작합니다.

이번에 변경할 것

  • 앱이 직접 그리는 한글·영문 레이블, 명령, 상태 문구, 파일명에 역할별 Pretendard 글꼴을 적용합니다.

  • 좌표·프레임 수·측정값처럼 자리 정렬이 필요한 숫자에만 Cascadia Mono 또는 Consolas를 사용합니다.

  • DPI·텍스트 크기 변경에 맞춰 GDI 글꼴과 DirectWrite 텍스트 형식을 캐시하고 재생성합니다. 누락 글리프 대체와 Windows 기본 글꼴 동작은 유지합니다.

이번 작업에서 하지 않을 것

테마 설정, 도구 모음 재배치, Windows 기본 메뉴를 앱에서 직접 그리는 작업.

완료 조건

  • 한글·영문 혼합, 누락 글리프 대체, 긴 이름을 읽을 수 있습니다.

  • 100/125/150/200% DPI와 Windows 텍스트 확대에서 글자와 클릭 영역이 어긋나지 않습니다.

  • 현재 이미지, 선택, 확대·이동 상태, ROI와 비교 측정 입력이 바뀌지 않습니다.

먼저 함께 결정할 질문

이 시안의 한글·영문 레이블과 숫자 사이의 크기·굵기 균형이 적절한가요?

검토 상태: 위 범위로 구현 승인. 구현 전에 사용자가 합의한 선택과 수정된 시안을 이 이슈에 기록합니다. 다른 작업 검토, 목업 조작, 이슈 등록은 이 작업의 승인이 아닙니다. 다음 작업으로 자동 진행하지 않습니다.

구현·검증 규칙

Windows MFC Viewer/Comparator만 대상입니다. #110과 AGENTS.md를 따르고 최신 origin/master에서 해당 작업용 브랜치를 시작합니다. 관계없는 변경은 보존하고 기존 명령·렌더링 경로를 재사용합니다. 영향을 받는 실제 앱 작업 흐름을 검증하고 공통 코드 또는 릴리즈에 민감한 변경에는 관련 로컬 핵심 테스트·빌드를 실행합니다. 실패는 수정하고 해당 검사를 반복한 뒤 PR/커밋, 실제 증거와 한계를 기록합니다. 목업 검사는 실제 Windows 앱 검증이 아닙니다. 이 작업은 릴리즈 태그·Store 게시·버전 증가를 승인하지 않습니다.


English original — 영어 원문 펼치기

Proposed UI screen

Typography — proposed Windows UI

Click the image for full-size details. This is a UI screen proposal, not a flowchart or a screenshot of an implemented native build. Images are synthetic and values are illustrative. Surrounding controls are roadmap context; implement only this job's changes below. This is not a literal before/after claim about the current build.

One job, one outcome

Use the same readable UI font in Viewer and Comparator without moving commands or changing image data.

Coordination epic: #111. Overall design and unchanged behavior contracts: #110.

Prerequisites: none. Start the visual discussion here.

Changes in this job

  • Apply Pretendard roles to app-drawn Korean/English labels, commands, status, and filenames.

  • Use Cascadia Mono/Consolas only for aligned coordinates, frame counts, and metric values.

  • Cache/recreate GDI and DirectWrite role fonts for DPI/text-scale changes; keep glyph fallback and native OS typography.

Explicitly outside this job

Theme settings, toolbar re-layout, and owner-drawing native Windows menus.

Done when

  • Mixed Korean/English, missing glyph fallback, and long names remain readable.

  • Text and hit areas align at 100/125/150/200% DPI and Windows text enlargement.

  • The current image, selection, transforms, ROI and metric inputs do not change.

Discuss this screen first

Do the Korean/English labels and numeric values in this specimen feel balanced?

Review status: implementation approved within the agreed scope above. Record the user's agreed choices and any revised picture before implementing this job. Reviewing another job, interacting with the mockup, or registering this issue does not approve this one. Do not automatically proceed to the next job.

Implementation and verification rules

Windows MFC Viewer/Comparator only. Follow #110 and AGENTS.md, start a focused branch from the current origin/master, preserve unrelated changes, and reuse existing command/rendering paths. Verify the affected native workflows and run the relevant local core tests/builds for shared or release-sensitive changes. Fix failures and repeat the affected checks; record PR/commit, actual evidence and limitations. Mockup checks are not native-app verification. This job does not authorize a release tag, Store publication or a version bump.

Activity

  1. added a commit that references this issue on Oct 4, 2026
  2. chammoru commented on Oct 4, 2026

    @chammoru
    OwnerAuthor

    Implemented and reviewed in PR #135, merged into master at 996ac76. Native Snap hover/flyout checked in Viewer and Comparator; other outstanding environment checks were waived by the user, not reported as passed. Release tag v2.7.27 pushed to start the standard release workflow. Release publishing and Store submission are asynchronous; their completion has not been claimed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions