Files
Pier_v1/RAG/design system_v0.1.1/design.medium.presentation.md
T
ahnyongjooandClaude Sonnet 5.5 964a841de1 chore(rebar): Pier_T_rebar 작업 폴더 초기 구성 및 외부 의존 파일 통합
- Code\rebar_pipeline, review_pipeline, pier-program을 정션에서 실제 폴더로 전환
- Code\rhino_mcp 및 CLAUDE_rhino배경.md 추가, .mcp.json은 PYTHONPATH로 새 위치 사용
- pier-program 내부 .git 제거(이력은 backup\pier-program_20261028.bundle에 보관)
- worktree 가이드 반영(CLAUDE.local.md, HANDOFF.md)
- D:\Rhino-MCP 경로 참조를 새 위치로 치환

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 11:20:18 +09:00

548 lines
26 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Prism Design System — Medium Profile: Presentation (Layer 2b)
| 버전 | 수정일 | 수정자 | 주요 변경 내용 | 비고 |
| :--- | :--- | :--- | :--- | :--- |
| v0.1.0 | 2026-07-28 | 조선두 | 신규 작성 — 16:9 캔버스, 투사 열화 보정, 그리드·존, 타입 바인딩, 테마 변형, PPTX 구현, 검증 | 최초 버전 |
| v0.1.1 | 2026-07-29 | HMCM | 하위 실행 명세(M2 `ppt/module.ppt-deck.md`) 연결 | 진단 C1 후속 |
| 메타 | 값 |
| :--- | :--- |
| 파일 | `design.medium.presentation.md` |
| 계층 | **Layer 2b — Medium Profile: Presentation** |
| 역할 | Layer 1의 상대값을 **16:9 캔버스 px·EMU로 실체화** |
| 상위 | `design.foundations.md` (Layer 1) |
| 하위 | 프레젠테이션 계열 Layer 3 모듈 — 실행 명세: `ppt/module.ppt-deck.md` (M2) |
| 로드 정책 | **온디맨드** |
---
## 목차
- [1. 프로파일 개요](#1-프로파일-개요)
- [2. 캔버스](#2-캔버스)
- [3. 투사 열화 보정](#3-투사-열화-보정)
- [4. 그리드·존](#4-그리드존)
- [5. 타입 바인딩](#5-타입-바인딩)
- [6. 색상·테마](#6-색상테마)
- [7. 강조 슬라이드](#7-강조-슬라이드)
- [8. 표면·레이어링](#8-표면레이어링)
- [9. PPTX 구현](#9-pptx-구현)
- [10. 검증 체크리스트](#10-검증-체크리스트)
---
# 1. 프로파일 개요
## 1.1 적용 조건
| 적용 | 비적용 |
| :--- | :--- |
| 강연·세미나 슬라이드 | 인쇄 배포용 편람 → `print` |
| 보고·발표 덱 | 화면에서 스크롤하며 읽는 문서 → `screen` |
| 전시·사이니지 정지 화면 | 대화형 프로토타입 → `screen` |
| PPTX·Keynote·PDF 슬라이드 | |
## 1.2 이 프로파일의 지배 조건
프레젠테이션은 **관람 환경을 제작자가 통제할 수 없다**는 점이 지배적 제약이다.
| 통제 불가 변수 | 영향 | 대응 |
| :--- | :--- | :--- |
| 프로젝터 해상도 (XGA~4K) | 유효 배율 **53% ~ 200%** | §3 최소 크기 하한 |
| 앰비언트 조명 | 명암비 저하·washout | §6 대비 AAA 상향 |
| 램프 노후 | 색 왜곡·황변 | §6 색 단독 의존 금지 강화 |
| 관람 거리 | 각크기 변동 | §5 캔버스 높이 비율 기준 |
| 색역·감마 | 재현 불가 예측 불가 | Layer 1 CO-1~CO-5 |
> **인쇄와 정반대의 실패 모드**: 인쇄는 "너무 작아서 안 보임"이 주 위험이고, 투사는 **"대비가 씻겨서 안 보임"**이 주 위험이다.
## 1.3 매체 상수
```yaml
medium: presentation
unit_primary: px # 오써링 논리 픽셀
canvas: 1920 x 1080 # 16:9
px_to_emu: 6350 # 정수 — PowerPoint 정합
px_to_pt: 0.5
type_base: 24px
space_base_unit: 12px
baseline_grid: none # §5.4 참조
contrast_target: AAA # ΔG >= 70
elevation_mode: border # 그림자 산출 금지
alpha_allowed: false
```
---
# 2. 캔버스
## 2.1 규격
| 단위 | 폭 | 높이 | 비고 |
| :--- | ---: | ---: | :--- |
| **px (오써링)** | **1920** | **1080** | 논리 캔버스 |
| inch | 13.3333 | 7.5 | = px ÷ 144 |
| pt | 960 | 540 | = px ÷ 2 |
| **EMU** | **12,192,000** | **6,858,000** | = px × 6350 |
| 종횡비 | **1.7778 (16:9)** | | |
## 2.2 환산 상수
```
inch = px ÷ 144
pt = px ÷ 2
EMU = px × 6350 (정수 — 잔차 0)
```
> **핵심 정합**: `1920 × 6350 = 12,192,000` / `1080 × 6350 = 6,858,000` 은 **PowerPoint 기본 와이드스크린 슬라이드 크기와 정확히 일치**한다. 따라서 오써링 캔버스를 그대로 PPTX로 옮길 때 **반올림 오차가 발생하지 않는다.** 이 정합을 유지하기 위해 오써링 캔버스를 1920×1080에 고정한다.
## 2.3 캔버스 변경 금지
| ID | 규칙 |
| :--- | :--- |
| **CV-1** | 오써링 캔버스는 **1920×1080에 고정**한다. 동일 비율의 다른 픽셀쌍(예: 1280×720)을 쓰지 않는다 |
| **CV-2** | 그리드·타입·간격 수치는 **전부 1920×1080 기준**이다 |
| **CV-3** | 출력 시 뷰포트에 맞춰 **전체 스케일**한다. 요소별 개별 스케일을 금지한다 |
| **CV-4** | 16:10 · 4:3 슬라이드가 필요하면 **별도 모듈로 선언**한다. 본 프로파일을 늘려 쓰지 않는다 |
---
# 3. 투사 열화 보정
## 3.1 프로젝터별 유효 배율
16:9 캔버스는 대부분의 현대 프로젝터와 **화면비가 일치**하므로 레터박스 손실이 없다. (A3 1.414 캔버스를 투사할 때 발생하는 좌우 196px 손실이 여기서는 발생하지 않는다.)
| 기기 | 해상도 | 화면비 | 16:9 유효 영역 | **배율** | `body` 24px 실효 |
| :--- | ---: | :---: | ---: | ---: | ---: |
| XGA | 1024×768 | 1.333 | 1024×576 | **53.3%** | **12.8px** |
| WXGA | 1280×800 | 1.600 | 1280×720 | 66.7% | 16.0px |
| **FHD** | 1920×1080 | 1.778 | 1920×1080 | **100%** | 24.0px |
| WUXGA | 1920×1200 | 1.600 | 1920×1080 | 100% | 24.0px |
| 4K UHD | 3840×2160 | 1.778 | 3840×2160 | 200% | 48.0px |
**최악 조건은 XGA(53.3%)** 이다. 다만 XGA 프로젝터에서는 관람자가 화면에 상대적으로 가까이 있는 소규모 회의실인 경우가 많으므로, 픽셀 배율만으로 판정하지 않는다.
## 3.2 최소 크기 — 각크기 기준 `[자체 정의]`
픽셀 수가 아니라 **캔버스 높이 대비 비율**로 하한을 정한다. 이 값은 투사 크기·관람 거리와 무관하게 성립한다.
| 항목 | 하한 | 1080 기준 |
| :--- | :--- | ---: |
| **본문 하한** | **캔버스 높이 ÷ 45** | **24px** |
| **절대 하한** (캡션·출처) | **캔버스 높이 ÷ 57** | **19px** |
| **권장 본문** | 캔버스 높이 ÷ 45 ~ ÷ 40 | 24 ~ 27px |
> **[미검증]** 투사물의 최소 문자 크기에 대한 공개 1차 가이드라인은 조사에서 발견하지 못했다 [출처: design.benchmark, §18-40]. 위 값은 ① 강연장 표준 관람 거리(화면 높이의 4~8배), ② `body` 24px가 XGA에서 실효 12.8px로 판독 임계에 근접한다는 점, ③ 선행 SAMAN 시스템의 실운용 비율(본문/캔버스높이 = 32/1442 ≈ H/45)이 동일 값에 수렴한다는 점을 근거로 한 **자체 정의**다.
## 3.3 최소 선 굵기
| 항목 | 하한 | 근거 |
| :--- | ---: | :--- |
| **일반 선** | **2px** | XGA(53.3%)에서 실효 1.07px — 소실 직전 |
| **구조 강조선** | 3px 이상 | |
| **역상(밝은 배경 위 흰 선)** | **사용 금지** | 투사에서 소실 |
> **[미검증]** 투사 전용 최소 선 두께의 1차 출처 역시 미발견 [출처: §18-40]. 위는 XGA 배율 역산에 의한 `[자체 정의]`다.
## 3.4 대비 상향
| ID | 규칙 | 근거 |
| :--- | :--- | :--- |
| **PC-1** | 본문 대비 목표는 **ΔG ≥ 70 (AAA, 실측 ≥ 7:1)** | 앰비언트 조명 손실 보정. WCAG AA 4.5:1을 상향 [출처: §12.6] |
| **PC-2** | **다크 배경 슬라이드는 목표를 더 상향**한다 — 프로젝터는 흑색을 재현하지 못하고 회색으로 띄운다 | [출처: T7 (Spectrum "Dark themes target higher contrast ratios")] |
| **PC-3** | **적색-흑색 조합을 회피**한다 (protanopia 대응) | [출처: §12.6 — W3C가 명시적으로 advisory technique 제공] |
| **PC-4** | 순백/순검정 극단 대비보다 **중간톤 대비를 활용**한다. 순백 배경은 어두운 실내에서 눈부심을 유발한다 | [출처: §12.6] |
---
# 4. 그리드·존
## 4.1 수평 그리드
| 항목 | 값 |
| :--- | ---: |
| 좌우 마진 | **48px** (`space.400`) |
| 콘텐츠 폭 | **1824px** |
| 컬럼 수 | **12** |
| 거터 | **24px** (`space.200`) |
| **컬럼 폭** | **130px** |
| 정합 검증 | 12 × 130 + 11 × 24 = **1824** ✓ |
### 컬럼 X 좌표
```
X(i) = 48 + (i−1) × 154 컬럼 끝 = X(i) + 130
```
| Col | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| :--- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| X | 48 | 202 | 356 | 510 | 664 | 818 | 972 | 1126 | 1280 | 1434 | 1588 | 1742 |
Col 12 끝 = 1872 (우 마진 48) ✓
## 4.2 존 폭
| 컬럼 병합 | 폭 | **measure** (body 24px) | 판정 |
| :---: | ---: | ---: | :--- |
| 12 col | 1824px | 76.0 em | 전폭 요소 전용 (본문 부적합) |
| 8 col | 1208px | 50.3 em | 본문 부적합 — 도판·표 전용 |
| **6 col** | **900px** | **37.5 em** | **✓ 1단 본문 상한** |
| **4 col** | **592px** | **24.7 em** | **✓ 다단 본문 최적** |
| 3 col | 438px | 18.3 em | 짧은 텍스트·카드 (연속 본문 비권장) |
| ID | 규칙 |
| :--- | :--- |
| **ZN-1** | 연속 본문은 **6 col 이하** 존에만 배치한다 |
| **ZN-2** | 8·12 col 존은 **도판·표·단문(1~2행)** 전용이다 |
| **ZN-3** | 3 col 존의 텍스트는 **3행 이하**로 제한한다 |
## 4.3 수직 존
모든 좌표는 **12px 격자**의 정수배다.
```
0 ┌──────────────────────────────────────┐
│ 상단 마진 48px │
48 ├──────────────────────────────────────┤
│ 헤더 존 (아이브로 · 제목 · 메타) │ 144px
192 ├──────────────────────────────────────┤
│ ↕ 24px │
216 ├──────────────────────────────────────┤
│ │
│ 콘텐츠 밴드 │ 744px
│ (62 × 12px) │
│ │
960 ├──────────────────────────────────────┤
│ ↕ 24px │
984 ├──────────────────────────────────────┤
│ 푸터 존 (출처 · 페이지 · 브랜드) │ 48px
1032 ├──────────────────────────────────────┤
│ 하단 마진 48px │
1080 └──────────────────────────────────────┘
```
| ID | 규칙 |
| :--- | :--- |
| **VZ-1** | 콘텐츠 요소의 하단(`y + h`)은 **960px를 넘지 않는다** |
| **VZ-2** | 푸터 존(984~1032)은 **불가침**이다 |
| **VZ-3** | 전면 도판(full-bleed)은 헤더·푸터 존을 **가리지 않는다** |
| **VZ-4** | 콘텐츠는 밴드를 **위→아래로 채운다**. 상단 쏠림 후 하단 공백 25% 초과 금지 (Layer 1 WS-3) |
## 4.4 허용 분할
Layer 1 §5.3 기준. 존 폭은 §4.2 참조.
| 분할 | 존 구성 (px) | 용도 |
| :--- | :--- | :--- |
| `12` | 1824 | 표지·전폭 도판 |
| `6:6` | 900 / 900 | 대조·비교 |
| `8:4` / `4:8` | 1208 / 592 | 도판 + 해설 / 내비 + 본문 |
| `4:4:4` | 592 × 3 | 3요소 병렬 |
| `3:3:6` | 438 / 438 / 900 | 맥락 2 + 결론 1 |
| `3:3:3:3` | 438 × 4 | 4단계 프로세스 |
## 4.5 스페이싱 실체화
| 토큰 | 배수 | **px** | 별칭 |
| :--- | :---: | ---: | :--- |
| `space.025` | 0.25× | **3** | — |
| `space.050` | 0.5× | **6** | — |
| **`space.100`** | **1×** | **12** | `text-block` |
| `space.150` | 1.5× | **18** | `paragraph` |
| `space.200` | 2× | **24** | 거터, `zone-inner` |
| `space.300` | 3× | **36** | `block-gap` |
| `space.400` | 4× | **48** | 마진, `zone-gap` |
| `space.600` | 6× | **72** | `section-gap` |
| `space.800` | 8× | **96** | — |
**반경**: `radius.md`(1×) = **12px**. `sm` 6px / `lg` 18px / `none` 0.
**획**: `hairline` 2px / `regular` 3px / `bold` 4px / `icon` 5px / `connector` 7px — §3.3 하한(2px) 적용으로 인쇄 프로파일보다 상대적으로 굵다.
---
# 5. 타입 바인딩
## 5.1 스케일 실체화
`size(n) = 24px × 1.125ⁿ`. 반올림 단위 **1px**.
| 역할 | `n` | **px** | **PPTX pt** | 행간 | 행 높이 | 캔버스 H 비 | 웨이트 |
| :--- | :-: | ---: | ---: | :-: | ---: | :---: | :--- |
| `caption` | −2 | **19** | 9.5 | 1.55 | 29.4 | H/57 | Medium 500 |
| `body-sm` | −1 | **21** | 10.5 | 1.70 | 35.7 | H/51 | Regular 400 |
| **`body`** | **0** | **24** | **12.0** | **1.70** | **40.8** | **H/45** | Regular 400 |
| `body-lg` | +1 | **27** | 13.5 | 1.70 | 45.9 | H/40 | Regular 400 |
| `title-sm` | +2 | **30** | 15.0 | 1.50 | 45.0 | H/36 | Medium 500 |
| `title` | +4 | **38** | 19.0 | 1.50 | 57.0 | H/28 | Bold 700 |
| `title-lg` | +6 | **49** | 24.5 | 1.50 | 73.5 | H/22 | Bold 700 |
| `display` | +9 | **69** | 34.5 | 1.25 | 86.2 | H/16 | Regular 400 / Medium 500 |
| `display-lg` | +12 | **99** | 49.5 | 1.25 | 123.8 | H/11 | Regular 400 |
## 5.2 하한 준수
| 역할 | px | 하한 판정 |
| :--- | ---: | :--- |
| `caption` | 19 | **= 절대 하한 H/57** ✓ (더 내릴 수 없음) |
| `body-sm` | 21 | H/51 ✓ |
| `body` | 24 | **= 본문 하한 H/45** ✓ |
| ID | 규칙 |
| :--- | :--- |
| **TP-1** | `caption`(19px)이 **절대 하한**이다. 이보다 작은 텍스트를 슬라이드에 두지 않는다 |
| **TP-2** | 출처·각주도 `caption` 이상이다. "작으니까 안 읽어도 된다"는 요소를 두지 않는다 |
| **TP-3** | 본문 크기를 낮춰 정보를 더 넣지 않는다. **정보를 줄이거나 슬라이드를 나눈다** |
## 5.3 자간
| 역할 | 자간 | 근거 |
| :--- | :--- | :--- |
| `display-lg` (99px) | **−0.02em** | Layer 1 TR-1(60px 이상) 충족 ✓ |
| `display` (69px) | **−0.015em** | TR-1 충족 ✓ |
| `title-lg` (49px) 이하 | **0** | TR-1 미충족 — 음수 자간 금지 |
| `.label` 톤 | +0.12em | TR-4 |
| `.eyebrow` 톤 | +0.18em | TR-4 |
> 인쇄 프로파일에서는 음수 자간이 전혀 쓰이지 않았으나(최대 41pt ≈ 55px), 프레젠테이션에서는 `display` 이상에서 사용 가능하다. **같은 스케일, 다른 매체에서 다른 규칙이 자동 적용되는 사례**다.
## 5.4 베이스라인 그리드 미운용
| ID | 규칙 |
| :--- | :--- |
| **BL-P1** | 본 프로파일은 **베이스라인 그리드를 운용하지 않는다** |
| **BL-P2** | 수직 간격은 **`space.050`(6px)의 배수**로 스냅한다 |
| **BL-P3** | 텍스트 블록 간 정렬은 **블록 상단(top) 기준**으로 한다 |
> **[CONFLICT DETECTED] 해소 — Layer 1 BL-1 적용 범위**
> Layer 1 BL-1은 *"`body` 행간은 `space.100`과 정확히 일치해야 한다"* 를 규정한다. 본 프로파일에서 `body` 행 높이는 24 × 1.70 = **40.8px**이며 `space.100`(12px)의 정수배가 아니다.
> **해소**: 베이스라인 그리드의 목적은 **다단 연속 본문의 좌우 행 정렬**(Layer 1 BL-4)이다. 슬라이드는 연속 본문이 아니라 **이산 블록의 배치**이므로 이 목적이 성립하지 않는다. 따라서 **BL-1은 다단 연속 본문을 조판하는 매체(print)에 한정**되며, Layer 1 §4.3에 적용 범위 단서를 추가한다(`design.foundations.md` v0.1.1).
## 5.5 타입 세트
| 상황 | 세트 (Layer 1 §3.3) |
| :--- | :--- |
| 표지·장 구분·키노트 | **Expressive** — `display` · `display-lg` 사용 |
| 일반 콘텐츠 슬라이드 | **Expressive** — `title-lg` · `title` 중심 |
| 데이터·표 밀집 슬라이드 | **Compact** — `title` · `title-sm` 중심, `body-sm` 허용 |
---
# 6. 색상·테마
## 6.1 라이트 / 다크 변형
| 항목 | **Light** | **Dark** |
| :--- | :--- | :--- |
| 캔버스 | `bg_light` | `bg_dark` |
| 본문 | `ground` 계열 | `bg_light` 또는 `on_dark` |
| 제목 | `base` 계열 | `bg_light` 또는 `on_dark` |
| 악센트 | `accent` (대형 전용) | `accent` |
| 카드 면 | `on_dark`(흰 면) + 헤어라인 | 면 반전 또는 보더만 |
| ID | 규칙 |
| :--- | :--- |
| **TH-P1** | 다크 변형은 **표지·장 구분·키노트 순간**에 사용한다. 덱 전체를 다크로 채우지 않는다 |
| **TH-P2** | 다크 슬라이드에서 **`base` 색을 텍스트로 쓰지 않는다.** 브랜드 SAMAN 기준 `green`은 `obsidian` 위에서 실측 2.13:1로 판독 불가다 — **면·도형으로만** |
| **TH-P3** | 다크 변형의 대비 목표는 **라이트보다 높게** 잡는다 (PC-2) |
| **TH-P4** | 라이트↔다크 전환은 Layer 1 §6.3 대칭 미러링을 **출발점**으로 하되, 전 페어 대비를 재검증한다 (TM-1) |
## 6.2 순백 배경 금지
| ID | 규칙 |
| :--- | :--- |
| **BG-P1** | 라이트 캔버스는 **`bg_light`**(SAMAN 기준 `sand #F4F3F0`)를 쓴다. **순백 전면 배경을 금지**한다 |
| **BG-P2** | 근거는 두 가지다 — ① 어두운 강연장에서 순백 대면적은 **눈부심**을 유발한다 ② 프로젝터의 최대 휘도를 낭비한다 |
| **BG-P3** | 카드·표 등 **국소 면**에는 순백을 쓸 수 있다 |
## 6.3 색 단독 의존 금지 (강화)
투사 환경은 색 재현을 보장하지 않는다. Layer 1 CO-1~CO-5를 **강화 적용**한다.
| ID | 규칙 |
| :--- | :--- |
| **CD-P1** | 차트 계열은 **직접 라벨링**을 원칙으로 한다. 범례만으로 처리하지 않는다 |
| **CD-P2** | 3개 이상 계열에는 **패턴·해칭을 병기**한다 |
| **CD-P3** | 추세는 **기호(▲▼) + 라벨 + 색** 3중으로 표기한다 |
| **CD-P4** | **적색-흑색 조합을 사용하지 않는다** (PC-3) |
## 6.4 악센트 경제
| ID | 규칙 |
| :--- | :--- |
| **AE-P1** | "단위 화면" = **슬라이드 1장** |
| **AE-P2** | 브랜드 `axis.economy` 상한을 적용한다 (SAMAN 기준 **슬라이드당 최대 2개 국소 강조**) |
| **AE-P3** | 카운트 대상: 악센트 색 텍스트·면·마커·커넥터. 상태색·차트 색은 제외 (Layer 1 AE-3) |
---
# 7. 강조 슬라이드
Layer 1 §6.4의 인라인 테마를 슬라이드 단위로 적용한다. [출처: design.benchmark, T50]
| ID | 규칙 |
| :--- | :--- |
| **HL-1** | **덱 전체의 10% 이하** 슬라이드만 강조 테마(다크 반전)를 쓴다 |
| **HL-2** | 강조는 **구조적 전환점**(장 시작·핵심 결론·마무리)에 배치한다. 임의로 흩뿌리지 않는다 |
| **HL-3** | 강조 슬라이드 내부에서도 Layer 1 §2.3 페어링 규칙이 그대로 적용된다 |
| **HL-4** | 연속 2장 이상을 강조 테마로 두지 않는다 |
> **투사에서 강조 테마의 효과가 특히 크다.** 라이트 슬라이드가 이어지다 다크 슬라이드가 나오면 **실내 조도 자체가 달라지므로**, 관람자의 주의가 물리적으로 전환된다.
---
# 8. 표면·레이어링
## 8.1 레이어 축소
Carbon의 4단계 레이어링(base/L1/L2/L3)은 **투사에서 완전히 소실**된다. Layer 1 §6.1 SF-3에 따라 **최대 3단계**로 축소하고, 인접 명도차를 확대한다. [출처: design.benchmark, M4]
| 레벨 | 표현 | ΔG 요건 |
| :--- | :--- | :--- |
| `surface.base` | 캔버스 | — |
| `surface.raised` | **헤어라인 보더 + 흰 면** | 톤차 불충분 시 보더로 분리 |
| `surface.sunken` | 배경 톤 하향 | 인접 대비 **ΔG ≥ 9** |
## 8.2 그림자 금지
| ID | 규칙 | 근거 |
| :--- | :--- | :--- |
| **SH-P1** | **`box-shadow` 상당 산출을 금지**한다 | Layer 1 EL-2 — 투사에서 뭉개져 흐릿한 얼룩이 된다 |
| **SH-P2** | `raised`는 **보더**로, `overlay`는 **굵은 보더 + 여백 격리**로 표현한다 | [출처: M5 — ADS 자체 대안 "A border is the default approach"] |
| **SH-P3** | 깊이는 **대비·면·헤어라인**으로 만든다 |
## 8.3 그라디언트·투명도 금지
| ID | 규칙 |
| :--- | :--- |
| **GT-1** | **그라디언트 배경을 사용하지 않는다** (브랜드 `forbidden`) |
| **GT-2** | **알파 색을 사용하지 않는다.** 불투명 등가색으로 사전 평탄화한다 (Layer 1 CS-3) |
| **GT-3** | 예외: 워터마크·저투명 장식 라인 아이콘은 **불투명 등가색으로 변환하여** 사용한다 |
| **GT-4** | **backdrop blur·글래스모피즘을 사용하지 않는다** |
---
# 9. PPTX 구현
## 9.1 슬라이드 크기 설정
| 항목 | 값 |
| :--- | :--- |
| 슬라이드 크기 | **13.3333 × 7.5 inch** (PowerPoint 기본 와이드스크린) |
| EMU | **12,192,000 × 6,858,000** |
| 오써링 → PPTX | `EMU = px × 6350` (정수) |
| ID | 규칙 |
| :--- | :--- |
| **PX-1** | 슬라이드 크기를 **PowerPoint 기본 와이드스크린으로 설정**한다. 커스텀 크기를 쓰지 않는다 |
| **PX-2** | 모든 좌표·치수는 `px × 6350`으로 변환한다. **반올림이 발생하지 않는다** |
| **PX-3** | 폰트 크기는 `pt = px ÷ 2`로 변환한다 |
## 9.2 좌표 변환표 `[주요 값]`
| 항목 | px | EMU |
| :--- | ---: | ---: |
| 좌 마진 | 48 | 304,800 |
| 컬럼 폭 | 130 | 825,500 |
| 거터 | 24 | 152,400 |
| 콘텐츠 폭 | 1824 | 11,582,400 |
| 헤더 존 하단 | 192 | 1,219,200 |
| 콘텐츠 밴드 상단 | 216 | 1,371,600 |
| 콘텐츠 밴드 하단 | 960 | 6,096,000 |
| 푸터 존 상단 | 984 | 6,248,400 |
## 9.3 폰트
| ID | 규칙 |
| :--- | :--- |
| **FT-1** | **폰트를 임베드**한다 (브랜드 `type.family.embed`). 미임베드 시 대체 서체로 레이아웃이 붕괴한다 |
| **FT-2** | 임베드 불가 환경에서는 **텍스트를 아웃라인 처리**하거나 PDF로 배포한다 |
| **FT-3** | 폴백 서체 사용 시 Layer 1 §3.10 정규화 계수를 적용한다 |
| **FT-4** | **등폭 숫자(tabular figures)** 를 표·수치에 강제한다 (Layer 1 NM-1). PPTX에서는 `font-feature-settings`가 제한되므로, **등폭 숫자 전용 서체 변형**을 사용하거나 수동 정렬한다 |
## 9.4 이미지·도판
| ID | 규칙 |
| :--- | :--- |
| **IM-1** | 도판은 **벡터(EMF/SVG)** 우선. 불가 시 **배치 크기의 2배 해상도** 래스터 |
| **IM-2** | **텍스트·로고를 이미지에 굽지 않는다** (브랜드 LG-3) |
| **IM-3** | 도판 프레임은 Layer 1 §5.4의 6개 종횡비로 제한한다 |
| **IM-4** | 전면 도판은 헤더·푸터 존을 가리지 않는다 (VZ-3) |
## 9.5 모션
| ID | 규칙 |
| :--- | :--- |
| **MO-1** | 기본 전환은 **페이드**로 한다 |
| **MO-2** | 바운스·회전·무한 루프 장식 애니메이션을 사용하지 않는다 |
| **MO-3** | 애니메이션은 **최종 상태(end-state)만으로도 슬라이드가 성립**해야 한다 — PDF·인쇄 배포 대응 |
| **MO-4** | 점진 공개(progressive reveal)는 **논리 단계와 일치**할 때만 사용한다 |
## 9.6 대체 매체
| 매체 | 처리 |
| :--- | :--- |
| **PDF** | 폰트 임베드 + 애니메이션 최종 상태 |
| **HTML** | 1920×1080 논리 캔버스로 오써링 후 뷰포트 스케일 (CV-3) |
| **인쇄 배포** | `print` 프로파일로 **재조판**한다. 슬라이드를 그대로 축소 인쇄하지 않는다 |
> **MO-3·인쇄 배포 규칙의 취지**: 슬라이드는 배포 후 인쇄되거나 PDF로 읽히는 경우가 많다. 애니메이션·전환에 의존한 슬라이드는 그 순간 정보를 잃는다.
---
# 10. 검증 체크리스트
## 10.1 자동 검증
Layer 1 §8.1의 F1~F9에 더한 프로파일 전용 항목이다.
| # | 항목 | 판정 기준 | 실패 시 |
| :-: | :--- | :--- | :--- |
| **S1** | **캔버스 고정** | 1920×1080 | 중단 |
| **S2** | **컬럼 정합** | 12 × 130 + 11 × 24 = 1824 (잔차 0) | 중단 |
| **S3** | **EMU 정합** | 전 좌표가 px × 6350의 정수 결과 | 중단 |
| **S4** | **최소 크기** | 전 텍스트 ≥ 19px (H/57), 본문 ≥ 24px (H/45) | 중단 |
| **S5** | **최소 선 굵기** | 전 선 ≥ 2px | 중단 |
| **S6** | **푸터 존 불가침** | 콘텐츠 하단 ≤ 960px | 중단 |
| **S7** | **measure 범위** | 연속 본문 존 ≤ 6 col (37.5em) | 중단 |
| **S8** | **대비 목표** | 본문 ΔG ≥ 70 | 중단 |
| **S9** | **그림자 산출** | `box-shadow` 상당 0건 | 중단 |
| **S10** | **알파 잔존** | 투명도 객체 0건 (평탄화 완료) | 중단 |
| **S11** | **순백 전면 배경** | 0건 | 중단 |
| **S12** | **그라디언트** | 0건 | 중단 |
| **S13** | **악센트 경제** | 슬라이드당 ≤ 브랜드 상한 | 중단 |
| **S14** | **강조 슬라이드 비율** | 덱 전체의 ≤ 10% | 경고 |
| **S15** | **폰트 임베드** | 미임베드 0건 | 중단 |
| **S16** | **음수 자간 조건** | 60px 미만 요소에 음수 자간 0건 | 경고 |
| **S17** | **밴드 채움** | 하단 빈 면적 < 25% | 경고 |
| **S18** | **여백률** | 40~55% | 경고 |
## 10.2 육안 검수
| # | 항목 | 방법 |
| :-: | :--- | :--- |
| **R1** | **XGA 축소 판독 시험** | 캔버스를 53.3%(1024×576)로 축소 렌더 후 판독 확인 |
| **R2** | **그레이스케일 판독** | 흑백 변환 후 정보 손실 0 확인 |
| **R3** | **실투사 시험** | 실제 프로젝터 + 실내 조명 조건에서 확인 (자동 판정 불가) |
| **R4** | **원거리 판독** | 화면 높이의 8배 거리에서 1차 메시지 판독 확인 |
| **R5** | **레이어드 디테일** | 원거리 1차 메시지 + 근거리 2차 디테일 2층 성립 확인 (PD-3) |
| **R6** | **단일 결론 존** | 핵심 결론이 1개 존에 집약되었는지 (PD-1) |
| **R7** | **애니메이션 최종 상태** | 애니메이션 없이도 슬라이드가 성립하는지 (MO-3) |
| **R8** | **PPTX 왕복 검증** | PPTX 저장 → 재열기 후 좌표·폰트 유지 확인 |
---
## 근거 출처 요약
본 파일이 인용한 벤치마킹 항목: **T7 · T50 · M4 · M5 · §9.5 · §12.6 · §18-40**
전문: `RAG/design.benchmark_2026-07-28_v0.1.0.md`
**[CONFLICT DETECTED] 해소 이력**
- §5.4 Layer 1 BL-1(베이스라인 = `space.100`) 미충족 → **BL-1의 적용 범위를 "다단 연속 본문 매체"로 한정**. `design.foundations.md` §4.3 단서 추가 필요 (v0.1.1)
**[미검증] 항목**
- §3.2 투사물 최소 문자 크기 — 공개 1차 가이드라인 미발견 [§18-40]. 관람 거리·XGA 배율·선행 시스템 실운용값 3중 근거의 `[자체 정의]`
- §3.3 투사 최소 선 굵기 — 동일. XGA 배율 역산에 의한 `[자체 정의]`
**주요 정합 성과**: `1 px = 6350 EMU` 정수 환산으로 오써링 캔버스가 **PowerPoint 기본 와이드스크린과 반올림 오차 없이 일치**한다.