EPUB 읽기 시스템 3.3

W3C 권고안

이 문서에 대한 자세한 정보
이 버전:
https://www.w3.org/TR/2024/REC-epub-rs-33-20241017/
최신 공개 버전:
https://www.w3.org/TR/epub-rs-33/
최신 편집자 초안:
https://w3c.github.io/epub-specs/epub33/rs/
이력:
https://www.w3.org/standards/history/epub-rs-33/
커밋 이력
테스트 스위트:
https://w3c.github.io/epub-tests/index.html
구현 보고서:
https://w3c.github.io/epub-specs/epub33/reports/
편집자:
Matt Garrish (DAISY 컨소시엄)
Ivan Herman (W3C)
Dave Cramer (초청 전문가)
피드백:
GitHub w3c/epub-specs (풀 리퀘스트, 새 이슈, 열린 이슈)
public-pm-wg@w3.org 제목 줄은 [epub-rs-33] … 메시지 주제 …로 지정합니다(아카이브)
정오표:
https://w3c.github.io/epub-specs/epub33/errata.html
이 문서는 다음 비규범 형식으로도 제공됩니다:
EPUB 3

다음도 참조하십시오 번역본.


초록

EPUB® 3은 디지털 출판물과 문서를 위한 배포 및 교환 형식을 정의합니다. EPUB 형식은 단일 파일 컨테이너로 배포하기 위해 HTML, CSS, SVG 및 기타 리소스를 포함하여 구조화되고 의미론적으로 강화된 웹 콘텐츠를 표현하고, 패키징하고, 인코딩하는 수단을 제공합니다.

이 명세는 EPUB 3 읽기 시스템, 즉 EPUB 출판물을 렌더링하는 사용자 에이전트에 대한 적합성 요구사항을 정의합니다.

이 문서의 상태

이 섹션은 이 문서가 발행된 시점의 상태를 설명합니다. 현재 W3C 출판물 목록과 이 기술 보고서의 최신 개정판은 https://www.w3.org/TR/의 W3C 기술 보고서 색인에서 확인할 수 있습니다.

이 문서는 Publishing Maintenance Working Group권고안 트랙을 사용하여 권고안으로 발행했습니다.

W3C는 이 명세를 웹의 표준으로 널리 배포할 것을 권고합니다.

W3C 권고안은 광범위한 합의 형성 후 W3C와 그 회원이 승인하고, 작업 그룹 구성원이 구현에 대해 로열티 없는 라이선스 약속을 제공한 명세입니다. 이 권고안의 향후 업데이트에는 새 기능이 포함될 수 있습니다.

이 문서는 W3C 특허 정책에 따라 운영되는 그룹에서 작성했습니다. W3C는 이 그룹의 산출물과 관련하여 이루어진 모든 특허 공개의 공개 목록을 유지 관리합니다. 해당 페이지에는 특허를 공개하기 위한 지침도 포함되어 있습니다. 개인이 필수 청구항을 포함한다고 믿는 특허에 대해 실제로 알고 있는 경우, W3C 특허 정책 제6절에 따라 해당 정보를 공개해야 합니다.

이 문서는 2023년 11월 03일 W3C 프로세스 문서의 적용을 받습니다.

1. 소개

1.1 개요

이 섹션은 비규범입니다.

EPUB 3 표준은 두 가지 별개의 관심사로 나뉩니다. EPUB 출판물의 저작은 핵심 명세 [epub-33]에서 정의하며, 이 명세는 EPUB 읽기 시스템에서 이들을 렌더링하기 위한 요구사항을 자세히 설명합니다.

EPUB 읽기 시스템은 다양한 형태를 취할 수 있습니다. 예를 들어, 사용자에게 콘텐츠를 렌더링하기 위한 시각적 표시 영역이 있을 수도 있고, 콘텐츠의 오디오 재생만 제공할 수도 있습니다. 따라서 모든 읽기 시스템에 적용되는 단일 규칙 집합은 없습니다. 대신 이 명세는 읽기 시스템의 기능과 지원하는 기능을 기준으로 렌더링 요구사항을 세분화합니다.

또한 이 명세는 개발자가 고유한 사용자 인터페이스를 만들 수 있도록 매우 큰 유연성을 허용하며, 메타데이터 처리와 같은 사항에 대한 요구사항은 이러한 유연성을 허용하기 위해 의도적으로 최소화되어 있습니다.

따라서 이 명세가 읽기 시스템에 대한 공식 요구사항을 식별하더라도, 이 문서를 독립적으로 이해하는 것은 불가능합니다. 개발자는 사용 가능한 전체 정보 범위를 이해하기 위해 EPUB 출판물의 전체 콘텐츠 구조에도 익숙해져야 합니다.

참고

적합한 읽기 시스템은 반드시 하나의 전용 프로그램이나 장치일 필요는 없으며, 분산 시스템으로 존재할 수도 있습니다.

1.2 용어

이 명세는 EPUB 3.3에서 정의한 용어 [epub-33]를 사용합니다.

또한 다음 용어를 정의합니다:

콘텐츠 표시 영역

뷰포트 내에서 EPUB 콘텐츠 문서의 표시에 할당된 영역. 콘텐츠 표시 영역은 EPUB 읽기 시스템이 뷰포트에 삽입할 수 있는 모든 테두리, 여백, 머리글, 바닥글 또는 기타 장식을 제외합니다.

합성 스프레드의 경우, 뷰포트는 두 개의 콘텐츠 표시 영역을 포함합니다.

참고

한 섹션에서 용어의 첫 번째 인스턴스만 해당 정의로 연결됩니다.

1.3 적합성

비규범으로 표시된 섹션뿐만 아니라 이 명세의 모든 저작 지침, 다이어그램, 예제 및 참고는 비규범입니다. 이 명세의 그 밖의 모든 것은 규범입니다.

이 문서의 핵심 단어 MAY, MUST, MUST NOT, OPTIONAL, RECOMMENDED, SHOULDSHOULD NOT은 여기에 표시된 것처럼 모두 대문자로 나타나는 경우에만 BCP 14 [RFC2119] [RFC8174]에 설명된 대로 해석해야 합니다.

모든 알고리즘 설명은 비규범입니다.

1.4 다른 명세와의 관계

이 섹션은 비규범입니다.

1.4.1 HTML과의 관계

[html] 표준은 지속적으로 진화하고 있습니다. 더 이상 버전이 있는 릴리스는 없습니다. 이 표준은 다시 MathML, SVG, CSS 및 JavaScript와 같이 계속 진화하는 다양한 기술을 참조합니다.

읽기 시스템 개발자는 자신의 시스템을 최신 상태로 유지하기 위해 HTML과 그 HTML이 참조하는 기술의 변경 사항을 추적해야 합니다.

이 명세는 EPUB 읽기 시스템이 스크립팅, 폼 제출 또는 HTML DOM [dom]을 지원하도록 요구하지 않습니다. 이 명세에 적합한 읽기 시스템은 적합한 EPUB 콘텐츠 문서를 처리할 수 있을 것으로만 기대됩니다. 스크립팅과 폼 제출 지원은 의무가 아니므로, 적합한 읽기 시스템이 완전히 적합한 HTML 사용자 에이전트가 아닐 수도 있습니다.

1.4.2 SVG와의 관계

이 명세는 [svg]의 특정 버전을 참조하지 않고, 대신 날짜 없는 참조를 사용합니다. 이 참조에 모호성이 있는 경우, 최신 권고 명세가 권위 있는 참조입니다.

이 접근 방식은 EPUB이 SVG 표준의 변경 사항에 항상 보조를 맞추도록 보장합니다. 읽기 시스템 개발자는 자신의 시스템을 최신 상태로 유지하기 위해 SVG 표준의 변경 사항을 추적해야 합니다.

2. 읽기 시스템 적합성

2.1 요구사항

어떤 읽기 시스템이 특정 기능을 지원해야 하는지는 해당 섹션의 시작 부분에 언급됩니다. 이 명세에 적합하려면, 읽기 시스템은 각 섹션에서 정의한 대로 모든 필수 기능과 적용 가능한 모든 조건부 필수 기능(예: 읽기 시스템에 뷰포트가 있는 경우 이미지 렌더링을 지원하는 것)을 MUST 지원해야 합니다.

참고

읽기 시스템은 반드시 단일 애플리케이션일 필요는 없고 분산 시스템으로 존재할 수 있으므로, 읽기 시스템 요구사항이 사용자를 위해 EPUB 출판물을 렌더링하는 애플리케이션에서 항상 충족되어야 하는 것은 아닙니다. 한 예는 제어된 콘텐츠 저장소(예: 서점 또는 도서관 시스템)와만 상호작용하는 읽기 시스템입니다. 이 경우 읽기 시스템 개발자가 요구사항이 해당 애플리케이션에 적용되지 않음을 입증할 수 있다면 (예: 중복 itemref 항목 [epub-33]이 포함된 EPUB 출판물이 시스템에 들어올 수 없는 경우), 읽기 시스템 전체는 여전히 적합한 것으로 간주됩니다.

권장 기능과 선택 기능을 지원할 때, 읽기 시스템은 각 섹션에서 정의한 모든 규범 요구사항을 MUST 충족해야 합니다.

읽기 시스템 개발자가 권장 기능 또는 선택 기능을 지원하지 않기로 선택하더라도, 그것이 항상 해당 섹션의 규범 요구사항이 전혀 적용되지 않는다는 의미는 아닙니다. 어떤 경우에는 기능을 구현하지 않을 때의 대체 요구사항이 있을 수 있습니다(예: 스크립팅이 지원되지 않을 때 폴백을 처리하는 것). 읽기 시스템은 기능을 지원하지 않을 때 이러한 대체 요구사항을 MUST 충족해야 합니다.

참고

EPUB 출판물에는 이 명세에서 요구하지 않는 정보가 자주 포함됩니다(예: 패키지 문서 메타데이터). 읽기 시스템은 이 추가 정보를 어떤 목적(예: 사용자 인터페이스 개선)으로든 사용할 수 있습니다.

2.2 오류 처리

읽기 시스템은 EPUB 출판물이나 그 안의 리소스가 콘텐츠 저작 또는 처리 요구사항을 위반하는 경우 이를 로드할 필요가 없습니다.

2.3 오류 보고

이 섹션은 비규범입니다.

읽기 시스템은 EPUB 출판물을 처리하고 렌더링하는 동안 발생한 오류를 보고할 필요는 없지만(예: 고정 레이아웃 문서의 치수가 추론된 경우), 이 정보에 접근하는 수단을 제공하는 것이 강력히 권장됩니다. 이에 비견할 만한 예는 웹 브라우저가 HTML 페이지와 애플리케이션을 디버깅하기 위해 제공하는 개발자 도구입니다.

예를 들어, EPUB 작성자는 이러한 처리 정보에 접근할 수 있으면 큰 이점을 얻을 수 있습니다 (예: EPUB 출판물을 효율적으로 디버깅하기 위해). 디버깅에 최대한 유용하게 하려면, 읽기 시스템이 직접 만난 문제뿐만 아니라 사용하는 애플리케이션이 보고한 문제도 함께 보고하는 것이 권장됩니다(예: 콘텐츠를 렌더링하는 데 사용되는 브라우저 코어에서 보고된 HTML, CSS 및 JavaScript 오류나 EPUBCheck가 보고한 검증 문제).

오류 보고가 일반적인 사용자 읽기 경험에 영향을 주는 침해적인 경험이 될 것으로 예상되지는 않습니다. 대신 보고 정보는 예를 들어 사용자를 불필요하게 방해하지 않도록 설정 메뉴에서 선택적으로 활성화될 수 있습니다.

3. 출판물 리소스 처리

읽기 시스템출판물 리소스 [epub-33]를 MUST 처리해야 합니다.

3.1 핵심 미디어 유형

읽기 시스템에 뷰포트가 있는 경우, 그 시스템은 이미지 핵심 미디어 유형 리소스 [epub-33]를 MUST 지원해야 합니다.

사전 녹음된 오디오를 렌더링할 수 있는 기능이 있는 경우, 그 시스템은 오디오 핵심 미디어 유형 리소스 [epub-33]를 MUST 지원해야 합니다.

참고

읽기 시스템은 H.264 [h264]와 VP8 [rfc6386] 비디오 코덱 중 하나 이상을 지원하는 것이 권장되지만, 이는 적합성 요구사항은 아닙니다 — 읽기 시스템은 어떤 비디오 코덱도 지원할 수 있고, 전혀 지원하지 않을 수도 있습니다. 읽기 시스템 개발자는 지원할 비디오 형식을 결정할 때 채택 범위, 재생 품질, 기술 로열티와 같은 요소를 고려해야 합니다.

3.2 외부 리소스

읽기 시스템은 임의의 외부 리소스 유형 집합을 MAY 지원할 수 있으며, 외부 리소스가 지원되지 않는 경우 외부 리소스 [epub-33]에서 정의한 대로 폴백을 MUST 처리해야 합니다.

3.3 리소스 위치

읽기 시스템은 원격 리소스SHOULD 지원해야 합니다. 이는 리소스 위치 [epub-33]에서 정의된 바와 같습니다.

네트워크 공격의 위험을 제한하기 위해, 읽기 시스템은 https URI 스킴 [rfc9110]을 통해 참조된 원격 리소스만 로드하는 것이 SHOULD 권장됩니다.

3.4 Data URL

읽기 시스템은 컨텍스트 메뉴와 같은 읽기 시스템 어포던스를 통해 시작되는 경우를 제외하고, data URL [rfc2397]이 최상위 브라우징 컨텍스트 [html]에서 열리지 않도록 MUST 방지해야 합니다. 읽기 시스템이 최상위 콘텐츠 문서에 최상위 브라우징 컨텍스트를 사용하지 않는 경우, 예를 들어 최상위 콘텐츠 문서가 SVG인 경우에도, data URL이 최상위 콘텐츠 문서인 것처럼 열리지 않도록 MUST 방지해야 합니다.

3.5 File URL

읽기 시스템은 file URL [rfc8089]을 통해 참조된 리소스에 대한 접근을 MUST 방지해야 합니다.

3.6 XML 처리

읽기 시스템은 다음 조건을 충족하는 비검증 XML 처리기 [xml]를 MUST 사용해야 합니다:

3.7 국제화

출판물 리소스 처리의 일부로, 읽기 시스템은 XHTML 콘텐츠 문서 또는 SVG 콘텐츠 문서에서 언어와 기본 방향을 설정하는 속성뿐만 아니라 모든 XML 문서(예: 패키지 문서미디어 오버레이 문서)에 대한 xml:lang 속성을 처리해야 합니다.

또한 읽기 시스템은 dir 속성 [epub-33]도 패키지 문서에 대해 MUST 처리해야 합니다. 이때 dir로 지정된 기본 방향은 해당 속성이 지정된 요소와, 다른 dir 인스턴스로 재정의되지 않는 한 그 콘텐츠 안의 모든 요소에 적용됩니다. (자세한 내용은 5.1 기본 방향도 참조하십시오.)

이 정보가 출판물 리소스에 없을 경우, 읽기 시스템은 패키지 문서에 표현된 정보(즉, xml:langdir 속성, link 요소의 hreflang 속성, 또는 dc:language 요소 [epub-33]에서 가져온 정보)로부터 해당 리소스의 언어나 기본 방향을 MUST NOT 가정해서는 안 됩니다. 명시적 언어 또는 방향 정보가 없을 때 처리하는 방법에 대한 자세한 내용은 리소스의 공식 명세를 참조하십시오.

3.8 네트워크 접근

읽기 시스템은 원격 리소스를 검색하고 스크립트 콘텐츠 문서웹 호스팅 API와 통신하고 리소스를 검색할 수 있도록 네트워크 접근을 MAY 지원할 수 있습니다.

그러나 네트워크 접근을 제공하면 읽기 시스템에 대한 보안 위험과 사용자에 대한 보안 및 개인정보 보호 위험이 모두 증가합니다. 이러한 위험은 대개 읽기 시스템과 그것이 실행되는 플랫폼에 고유합니다. 대부분의 읽기 시스템이 기반으로 하는 브라우저 코어는 웹 브라우저 자체와 같은 보안 및 개인정보 보호 제어 기능을 제공하지 않습니다. 따라서 개발자는 네트워크 접근을 허용할 때 각별히 주의해야 하며, 읽기 시스템이 공격에 취약하지 않은지 더 철저히 테스트해야 합니다. 이러한 위험에 대한 자세한 정보는 15. 보안 및 개인정보 보호에 제공됩니다.

읽기 시스템 개발자가 네트워크 접근을 허용하는 경우, 다음 두 가지를 모두 수행하는 것이 RECOMMENDED됩니다:

4. Open Container Format (OCF) 처리

읽기 시스템MUST EPUB 컨테이너 [epub-33]를 처리해야 합니다.

참고

EPUB 컨테이너를 처리하는 애플리케이션이 반드시 완전한 읽기 시스템일 필요는 없습니다 (예: 애플리케이션이 컨테이너의 콘텐츠만 추출하거나 패키지된 콘텐츠의 유효성만 검사할 수 있습니다). 이러한 경우, 해당 애플리케이션 개발자는 이 섹션에서 정의한 읽기 시스템의 렌더링 요구사항을 무시할 수 있습니다.

4.1 OCF 추상 컨테이너

4.1.1 루트 디렉터리의 URL

읽기 시스템은 OCF 추상 컨테이너루트 디렉터리에 URL [url]을 MUST 할당해야 합니다. 이 URL을 컨테이너 루트 URL이라고 합니다. 이는 구현 별로 다르지만, 구현은 다음 속성을 MUST 가져야 합니다:

참고

읽기 시스템 안의 EPUB 출판물의 각 사용자별 인스턴스마다 출처 [html]가 고유하다는 것은, 서로 다른 두 사용자가 같은 EPUB 출판물의 사본을 획득하더라도, 같은 읽기 시스템을 사용하더라도 그 두 사용자의 사본에서 출처가 서로 다르다는 것을 의미합니다.

참고

컨테이너 루트 URL의 속성은 적합한 읽기 시스템이 모든 상대 URL 문자열을 콘텐츠 URL로 구문 분석하도록 합니다. 다시 말해, 상대 링크는 컨테이너 콘텐츠 밖으로 "누출"되지 않으며, 이는 보안에 중요한 기능입니다.

실제로 컨테이너 루트 URL은 다음과 같이 정의된 URL과 유사하게 동작합니다:

URL 구성 요소
스킴 http 또는 https
호스트 localhost
포트 EPUB 인스턴스에 고유하게 할당된 동적 포트

예:

컨테이너 파일 파일 경로 URL
루트 디렉터리 빈 문자열 http://localhost:49152/
패키지 문서 EPUB/package.opf http://localhost:49152/EPUB/package.opf
EPUB 콘텐츠 문서 HTML/file name.xhtml http://localhost:49152/HTML/file%20name.xhtml
URL 문자열
(예를 들어 패키지 문서에서 발견됨)
콘텐츠 URL
../HTML/file%20name.xhtml http://localhost:49152/HTML/file%20name.xhtml
/Media/img.png http://localhost:49152/Media/img.png
../../../Media/img.png http://localhost:49152/Media/img.png

마지막 두 링크는 비적합 또는 레거시 읽기 시스템 및 도구 체인과의 더 나은 상호 운용성을 보장하기 위해 EPUB 출판물에서 허용되지 않음에 유의하십시오.

참고

일부 언어 명세는 [url]보다 앞선 Requests For Comments를 참조하며, 이 경우 그 특정 언어의 콘텐츠에는 이전 RFC가 적용됩니다.

참고

대부분의 언어 명세와 달리, 읽기 시스템은 META-INF 디렉터리 안의 모든 파일에 대해 컨테이너 루트 URL기본 URL [url]로 사용해야 합니다. [epub-33]의 META-INF 디렉터리의 URL 구문 분석 섹션도 참조하십시오.

4.1.2 파일 이름

EPUB 작성자는 최대한의 상호 운용성을 위해 다양한 파일 이름 및 파일 경로 제한 [epub-33]을 따라야 하지만, 읽기 시스템은 이러한 요구사항을 따르지 않는 파일 이름과 경로도 처리하려고 시도하는 것이 SHOULD 권장됩니다. 유효하지 않은 파일 이름과 경로는 일부 운영 체제에서만 문제가 될 수 있습니다.

이 명세는 OCF 파일 이름과 경로를 표현할 수 없는 읽기 시스템이 이러한 비호환성을 어떻게 처리해야 하는지 지정하지 않습니다.

4.1.3 META-INF 디렉터리

컨테이너 파일(container.xml)

읽기 시스템은 기본적으로 첫 번째 rootfile 요소 [epub-33]에서 참조된 패키지 문서를 사용하여 EPUB 출판물을 렌더링해야 MUST 합니다. 읽기 시스템이 사용 가능한 다른 옵션 중에서 선택하는 수단을 인식하는 경우, 더 적절한 패키지 문서를 MAY 선택할 수 있습니다.

메타데이터 파일(metadata.xml)

읽기 시스템은 인식할 수 없는 루트 요소가 있는 metadata.xml 파일 [epub-33]을 무시하는 것이 SHOULD 권장됩니다.

매니페스트 파일 (manifest.xml)

읽기 시스템은 EPUB 출판물을 처리하기 위해 ZIP 아카이브에 포함된 보조 매니페스트 정보나 manifest.xml 파일 [epub-33] 안의 정보를 MUST NOT 사용해서는 안 됩니다.

서명 파일(signatures.xml)

signatures.xml 파일 [epub-33]의 서명을 검증하는 데 사용되는 다이제스트를 계산하기 전에, 읽기 시스템은 서명 후 암호화된 모든 데이터를 MUST 복호화해야 합니다 — 서명 전에 암호화된 데이터는 MUST NOT 복호화해서는 안 됩니다.

서명 후 암호화된 데이터를 식별하는 방법에 대한 자세한 정보는 XML Signature용 Decryption Transform [xmlenc-decrypt]을 참조하십시오.

기타 파일

읽기 시스템은 예약된 파일 [epub-33]에 나열되지 않은 META-INF 디렉터리의 구성 파일을 만나도 MUST NOT 실패해서는 안 됩니다.

4.2 OCF ZIP 컨테이너

읽기 시스템은:

OCF ZIP 컨테이너 아카이브의 특정 필드와 관련하여, 읽기 시스템은:

4.3 글꼴 난독화

읽기 시스템은 글꼴 난독화 [epub-33]에서 정의한 대로 글꼴의 난독화 해제를 SHOULD 지원해야 합니다.

원래 데이터를 복원하려면, 읽기 시스템은 단순히 과정을 반대로 수행하면 됩니다. 즉 소스 파일은 난독화된 데이터가 되고, 대상 파일에는 원시 데이터가 포함됩니다.

참고

EPUB 3은 EPUB 3.0.1 이전부터 글꼴 난독화를 허용했지만, 난독화와 압축의 순서를 지정하지 않았습니다. 그 결과, 읽기 시스템은 압축 해제와 난독화 해제 후 유효하지 않은 글꼴을 만날 수 있습니다. 이러한 경우, 데이터를 팽창하기 전에 난독화 해제하면 유효한 글꼴이 반환될 수 있습니다. 읽기 시스템은 이 검색 방법을 지원할 필요는 없지만, 개발자는 EPUB 3 콘텐츠를 일반적으로 지원할 때 이를 고려해야 합니다.

5. 패키지 문서 처리

읽기 시스템MUST 패키지 문서 [epub-33]를 처리해야 합니다.

5.1 기본 방향

dir 속성 [epub-33]이 설정되어 있고 ltr 또는 rtl의 기본 방향을 나타내는 경우, 읽기 시스템은 [bidi]에 정의된 상위 수준 프로토콜에 따라 bidi 알고리즘을 MUST 재정의해야 하며, 기본 방향이 ltr이면 단락 임베딩 수준을 0으로, 기본 방향이 rtl이면 1로 설정해야 합니다.

그렇지 않으면 기본 방향은 auto이며, 이 경우 읽기 시스템은 [bidi]의 규칙 P2부터 시작하여 Unicode Bidi Algorithm을 적용함으로써 텍스트의 방향을 MUST 결정해야 합니다.

참고

[epub-33]에서 패키지 문서 메타데이터의 방향성 설정구현 부족으로 표시되어 있지만, 국제 독자를 대상으로 하는 읽기 시스템이나 국제 콘텐츠 지원을 주장하는 읽기 시스템은 해당 메타데이터를 사용자에게 노출할 때 이 기능을 구현할 것을 강력히 권장합니다. 텍스트 방향성을 무시하면 가독성 문제가 발생할 수 있습니다.

읽기 시스템에서 필요한 기준 수준의 지원이 달성되면 [epub-33]에서 구현 부족 레이블이 제거됩니다.

5.2 고유 식별자

읽기 시스템은 고유 식별자가 오직 하나의 EPUB 출판물에만 고유하다는 데 의존해서는 SHOULD NOT 됩니다. 동일한 고유 식별자를 가진 두 EPUB 출판물이 같은 출판물의 다른 버전을 나타내는지, 아니면 다른 출판물을 나타내는지 확인하려면 마지막 수정 날짜, 제목, 저자와 같은 다른 메타데이터를 검사해야 할 수 있습니다.

5.3 메타데이터

공백

읽기 시스템은 처리 전에 Dublin Core [dcterms] 및 meta 요소 [epub-33]에서 ASCII 공백을 제거하고 접기 [infra]를 MUST 수행해야 합니다.

dc:identifier 요소

dc:identifier 요소 [epub-33]의 값이 확립된 체계를 따르는지 또는 발급 기관에 의해 부여되었는지 판단하기 위해, 읽기 시스템은 identifier-type 속성 [epub-33]을 확인하는 것이 SHOULD 권장됩니다.

dc:title 요소

읽기 시스템은 문서 순서에서 첫 번째 dc:title 요소 [epub-33]를 EPUB 출판물의 주 제목으로 MUST 인식하고, 다른 제목 요소보다 먼저 사용자에게 제시해야 합니다.

이 명세는 추가 dc:title 요소를 처리하는 방법을 정의하지 않습니다.

dc:language 요소

dc:language 요소에 지정된 EPUB 출판물의 언어는 정보 제공용입니다. 이 정보의 사용 예는 다음과 같습니다:

  • 읽기 시스템 사용자 인터페이스를 통해 사용자에게 노출
  • 책장에서 기능을 향상하는 데 사용(예: 언어별 정렬)
  • 읽기 인터페이스를 최적화하는 데 사용(예: 텍스트 음성 변환 언어를 미리 로드)

출판물 리소스의 언어를 확인하는 방법에 대한 자세한 내용은 3.7 국제화를 참조하십시오.

dc:creator 요소

표시 우선순위를 결정할 때, 읽기 시스템은 metadata 섹션의 dc:creator 요소 [epub-33]의 문서 순서를 MUST 사용해야 하며, 처음 만나는 creator 요소가 주 작성자입니다. 읽기 시스템이 작성자 메타데이터를 사용자에게 노출하는 경우, 가능한 경우 언제나(예: 표시상의 제약이 없을 때) metadata 섹션에 나열된 모든 작성자를 포함하는 것이 SHOULD 권장됩니다.

meta 요소

읽기 시스템은 인식하지 못하는 표현식을 정의하는 property 속성 [epub-33]을 가진 모든 meta 요소를 무시하는 것이 SHOULD 권장됩니다. 읽기 시스템은 알 수 없는 표현식을 만나도 MUST NOT 실패해서는 안 됩니다.

읽기 시스템이 scheme 속성 [epub-33] 값을 인식하지 못하는 경우, 해당 요소의 값을 문자열로 취급하는 것이 SHOULD 권장됩니다.

연결된 리소스의 가져오기 및 지원은 OPTIONAL입니다.

hreflang [EPUB-33] 속성에서 식별된 언어는 순전히 참고용입니다. 리소스에 표현된 언어 정보는 국제화 요구사항에 정의된 것처럼 처리 및 렌더링 목적상 해당 리소스의 언어를 결정합니다.

5.4 매니페스트

읽기 시스템은 인식하지 못하는 properties 속성 [epub-33]의 값을 MUST 무시해야 합니다.

읽기 시스템은 내재적인 제한과 관련 위험(예: 리소스와 처리 방법에 대한 정보 부족, 원격 호스팅 소스에서 오는 보안 위험, 폴백 부족 등)으로 인해 EPUB 출판물을 렌더링할 때 연결된 리소스를 사용해서는 SHOULD NOT 됩니다.

주어진 출판물 리소스의 MIME 미디어 유형 [rfc2046]을 지원하지 않는 읽기 시스템은 지원되지 않는 리소스 대신 사용할 지원되는 출판물 리소스를 식별할 때까지 매니페스트 폴백 체인 [epub-33]을 MUST 순회해야 합니다. 읽기 시스템이 폴백 체인의 여러 출판물 리소스를 지원하는 경우, 리소스의 properties 속성 [epub-33] 값을 기준으로 사용할 리소스를 MAY 선택할 수 있으며, 그렇지 않은 경우 EPUB 작성자가 선호하는 폴백 순서를 따르는 것이 SHOULD 권장됩니다. 읽기 시스템이 폴백 체인의 어떤 리소스도 지원하지 않는 경우, 콘텐츠를 표시할 수 없음을 사용자에게 MUST 알려야 합니다.

매니페스트 폴백 [epub-33]이 최상위 콘텐츠 문서에 제공되는 경우, 읽기 시스템은 주어진 맥락에서 렌더링할 최적의 버전을 찾기 위해 사용 가능한 옵션 중에서 MAY 선택할 수 있습니다(예: 각 항목의 properties 속성 검사).

읽기 시스템은 이미 만난 매니페스트 항목에 대한 첫 번째 참조에서 폴백 체인을 MUST 종료해야 합니다.

5.5 스파인

읽기 시스템은 spine 요소 [epub-33]에 정의된 순서로 EPUB 출판물을 렌더링하는 수단을 MUST 제공해야 하며, 여기에는 다음이 포함됩니다:

사용자가 spine 요소에 정의된 기본 읽기 순서를 따라 이동할 때, 읽기 시스템은 비선형 itemref 요소 [epub-33]를 자동으로 건너뛸 수 MAY 있습니다. 그러나 사용자가 비선형 리소스로 연결되는 하이퍼링크를 활성화하면, 읽기 시스템은 참조된 리소스나 지정된 폴백을 MUST 렌더링해야 합니다. 또한 읽기 시스템은 사용자가 기본적으로 비선형 콘텐츠를 건너뛸지 여부를 선택할 수 있는 옵션을 MAY 제공할 수 있습니다.

EPUB 작성자page-progression-direction 속성 [epub-33]을 지정하지 않은 경우, 읽기 시스템은 default 값을 MUST 가정해야 합니다. page-progression-direction 값이 default인 경우, 읽기 시스템은 렌더링 방향을 선택할 수 있습니다.

page-progression-direction 속성의 값이 default가 아닌 경우, 읽기 시스템은 pre-paginated XHTML 콘텐츠 문서에서 계산된 모든 방향성을 MUST 무시해야 합니다.

읽기 시스템은 인식하지 못하는 spine itemref properties 속성 [EPUB-33]에 표현된 모든 값을 MUST 무시해야 합니다.

읽기 시스템은 선형 읽기 순서를 렌더링할 때 중복된 매니페스트 항목 [EPUB-33]에 대한 spine 참조를 MUST NOT 건너뛰어서는 안 됩니다. 읽기 시스템은 사용자 인터페이스(UI) 목적상 이를 별개의 항목으로 MUST 취급해야 합니다 (예를 들어, 각 발생 항목은 독립적으로 북마크되거나 주석 처리될 수 있습니다). 읽기 시스템이 spine에서 여러 번 참조된 리소스로 연결되는 하이퍼링크를 따라갈 때, 읽기 시스템은 선형 읽기 순서에서 해당 문서의 첫 번째 발생 위치로 MUST 이동해야 합니다.

5.5.1 스파인 재정의

spine itemref 요소의 properties 속성전역 렌더링 속성 [epub-33]을 재정의하는 경우, 읽기 시스템은 해당 spine 항목을 표시하기 위해 재정의의 전역 값에 대한 요구사항을 MUST 따라야 합니다.

예를 들어, layout-pre-paginated 재정의 [epub-33]를 포함하는 spine 항목은 전역 pre-paginated의 요구사항을 따라 렌더링됩니다.

동일한 속성에 대해 하나 이상의 재정의가 properties 속성에 지정된 경우, 읽기 시스템은 첫 번째 값만 MUST 사용해야 합니다.

5.6 컬렉션

이 명세의 맥락에서, 읽기 시스템의 컬렉션 [epub-33] 지원은 OPTIONAL입니다. 읽기 시스템은 인식하지 못하는 역할을 정의하는 collection 요소를 MUST 무시해야 합니다.

5.7 레거시 기능

읽기 시스템은 이 버전의 EPUB [epub-33]에 적합한 콘텐츠에서 레거시 기능MUST NOT 지원해서는 안 됩니다.

6. EPUB 콘텐츠 문서 처리

EPUB 콘텐츠 문서 [epub-33]의 정의에는 콘텐츠의 교차 호환성을 최적화하기 위한 다양한 저작 제한이 포함됩니다(예: 언어와 방향 설정을 위한 CSS 금지 [epub-33]). 이 명세에서 달리 명시하지 않는 한, 읽기 시스템은 이러한 제한된 기능을 MAY 지원할 수 있습니다.

6.1 XHTML 콘텐츠 문서

읽기 시스템MUST XHTML 콘텐츠 문서 [epub-33]를 처리해야 합니다.

이 섹션에서 재정의된 것으로 명시적으로 정의하지 않는 한, 읽기 시스템은 [html] 명세가 정의한 시맨틱을 사용하여 XHTML 콘텐츠 문서를 MUST 처리하고, 그 안에 표현된 모든 적용 가능한 사용자 에이전트 적합성 제약을 준수해야 합니다.

6.1.1 HTML 확장

6.1.1.1 RDFa

속성 처리 모델 [rdfa-core]에 대한 읽기 시스템 지원은 OPTIONAL입니다.

6.1.1.2 콘텐츠 전환(폐기 예정)

switch 요소의 사용은 폐기 예정입니다 [epub-33]. 구현 정보는 [epubcontentdocs-301]의 해당 정의를 참조하십시오.

6.1.1.3 epub:trigger 요소(폐기 예정)

trigger 요소의 사용은 폐기 예정입니다 [epub-33]. 구현 정보는 [epubcontentdocs-301]의 해당 정의를 참조하십시오.

6.1.1.4 사용자 정의 속성

읽기 시스템은 해당 속성이 이 명세의 요구사항을 수정하지 않는 한 사용자 정의 속성을 MAY 지원할 수 있습니다.

6.1.2 HTML 차이점 및 제약

6.1.2.1 Microdata

속성 처리 모델에 대한 읽기 시스템 지원은 OPTIONAL이며, JSON으로의 변환 [html]도 마찬가지입니다.

6.1.2.2 MathML

XHTML 콘텐츠 문서에 포함된 MathML [mathml3]을 지원하기 위해, 읽기 시스템은:

참고

읽기 시스템은 MathML 렌더링을 제공하기 위해 MathJax와 같은 서드파티 라이브러리를 사용할 수 있습니다.

6.1.2.3 내장 SVG

읽기 시스템은 XHTML 콘텐츠 문서에 내장된 SVG를 6.2 SVG 콘텐츠 문서에서 정의한 대로 MUST 처리해야 합니다.

6.1.2.3.1 내장 SVG와 CSS

참조로 XHTML 콘텐츠 문서에 내장된 SVG의 스타일 지정 목적상, 읽기 시스템은 포함하는 문서의 CSS 스타일 규칙을 참조된 SVG 문서에 MUST NOT 적용해서는 안 됩니다.

포함으로 XHTML 콘텐츠 문서에 내장된 SVG의 스타일 지정 목적상, 읽기 시스템은 포함하는 문서의 적용 가능한 CSS 규칙을 포함된 SVG 요소에 MUST 적용해야 합니다.

참고

참조로 포함된 SVG는 별도의 문서로 처리되며, SVG 콘텐츠 문서처럼 자체 CSS 스타일 규칙을 포함할 수 있습니다. 이는 [html] object 요소가 외부 [html] 요소를 참조하는 상황과 일관됨에 유의하십시오.

6.1.2.4 폼 제출

[html] form 요소 제출에 대한 읽기 시스템 지원은 OPTIONAL입니다. 예를 들어 읽기 시스템은 네트워킹 접근을 제한하여 폼 제출을 방지할 수 있습니다.

6.2 SVG 콘텐츠 문서

읽기 시스템MUST SVG 콘텐츠 문서 [epub-33]를 처리해야 합니다.

SVG 콘텐츠 문서와 XHTML 콘텐츠 문서에 내장된 SVG를 처리하기 위해, 읽기 시스템은:

6.3 Cascading Style Sheets (CSS)

읽기 시스템에 뷰포트가 있는 경우, 그 시스템은 CSS를 통한 XHTML 콘텐츠 문서의 시각적 렌더링 [epub-33]을 MUST 지원해야 합니다.

CSS를 지원하기 위해, 읽기 시스템은:

위에서 정의한 CSS 속성 지원에 더해, 읽기 시스템의 사용자 에이전트 스타일 시트는 [html]의 권장 기본 렌더링SHOULD 지원해야 합니다.

읽기 시스템 개발자는 주요 브라우저 수준으로 CSS 지원을 구현하고, 사용자 에이전트 스타일 시트와 그것이 EPUB 작성자의 스타일 시트와 상호작용하는 방식을 공개적으로 문서화해야 합니다.

6.4 스크립팅

읽기 시스템스크립팅 [epub-33]을 SHOULD 지원해야 합니다.

스크립팅에 대한 읽기 시스템 지원은 그 사용 맥락에 따라 달라집니다:

읽기 시스템이 스크립팅을 지원하는 경우:

읽기 시스템이 스크립팅을 지원하지 않는 경우, 스크립트 콘텐츠 문서의 폴백 [epub-33]에 정의된 대로 스크립트 콘텐츠에 대한 폴백을 MUST 처리해야 합니다.

6.4.1 로컬 스토리지

읽기 시스템은 스크립트가 쿠키웹 스토리지 [html]를 통해 영구 데이터를 저장하는 것을 MAY 차단할 수 있습니다.

로컬 스토리지 [html]를 허용하는 읽기 시스템은 사용자가 해당 데이터를 검사하거나 삭제할 수 있는 방법을 SHOULD 제공해야 합니다.

6.4.2 이벤트 모델

읽기 시스템은 [html]에 따른 DOM 이벤트 모델을 SHOULD 따르고, 이러한 이벤트와 관련된 기본 동작을 수행하기 전에 UI 이벤트를 스크립팅 환경에 전달해야 합니다.

읽기 시스템 개발자는 스크립트가 탐색과 같은 중요한 기능을 비활성화할 수 없도록 하여, 잠재적으로 악의적인 스크립트가 읽기 시스템에 미칠 수 있는 영향을 제한해야 합니다. 그 결과, 스크립팅 환경은 모든 이벤트의 기본 동작을 취소할 수 있어야 하지만, 일부 이벤트는 전달되지 않거나 취소할 수 없을 수 있습니다.

6.4.3 보안 고려사항

이 섹션은 비규범입니다.

스크립팅도 지원하는 읽기 시스템 개발자는 읽기 시스템이 스크립트 콘텐츠를 실행할 때 발생하는 보안 문제를 인식해야 합니다. 읽기 시스템과 브라우저가 사용하는 기본 스크립팅 모델은 동일하므로, 개발자는 웹 맥락에서 마주치는 것과 같은 종류의 문제를 고려해야 합니다.

각 읽기 시스템은 특정 문서의 스크립트를 신뢰할 수 있는지 확인해야 합니다. 읽기 시스템은 모든 스크립트를 신뢰할 수 없는 것(그리고 잠재적으로 악의적인 것)으로 취급해야 하며, 개발자는 모든 공격 벡터를 검토하고 이에 대비해야 합니다. 특히 개발자는 다음을 고려해야 합니다:

  • 런타임 환경에 대한 공격(예: 사용자의 하드 드라이브에서 파일을 훔치는 것);

  • 읽기 시스템 자체에 대한 공격(예: 사용자의 책 목록을 훔치거나 예상치 못한 동작을 유발하는 것);

  • 하나의 EPUB 콘텐츠 문서가 다른 문서를 공격하는 것(예: 다른 문서에서 유래한 데이터를 훔치는 것);

  • 암호화되지 않은 스크립트가 문서의 암호화된 부분을 공격하는 것(예: 주입된 악성 스크립트가 보호된 콘텐츠를 추출하는 것);

  • 로컬 네트워크에 대한 공격(예: 방화벽 뒤의 서버에서 데이터를 훔치는 것).

신뢰할 수 없는 스크립트의 가능한 피해를 제한하기 위해, 이 명세는 읽기 시스템이 각 EPUB 출판물에 할당된 고유한 출처 [html]를 설정할 것을 권장합니다( 4.1.1 루트 디렉터리의 URL 참조). 고유한 출처를 할당하면 spine 수준 스크립트 [epub-33]가 다른 EPUB 출판물로부터 격리되고, 쿠키 [html], 웹 스토리지 [html] 등에 대한 접근을 제한합니다.

"origin" 개념에 연결된 웹 API의 예에는 웹 스토리지 [html]와 IndexedDB [indexeddb]가 있으며, EPUB 콘텐츠 문서는 스크립팅을 통해 이들과 상호작용할 수 있습니다. 읽기 시스템이 사용자가 관리되는 라이브러리(자신의 "책장")에 출판물을 추가/제거하도록 허용하는 경우, 해당 출판물이 제거되고 이후 콘텐츠 라이브러리로 다시 가져와질 때 출판물의 고유 출처를 유지할 수 있습니다. 반대로, 읽기 시스템은 새로 추가된 모든 출판물에 대해 새 고유 출처를 만들 수 있습니다.

이 명세는 또한 컨테이너 제약 스크립트 [epub-33]가 호스트 EPUB 콘텐츠 문서의 DOM을 수정하거나 포함하는 사각형을 조작하지 못하도록 할 것을 권장합니다(6.4 스크립팅 참조).

이러한 권장사항을 준수한다고 해서 위에 나열된 가능한 공격으로부터 보호가 보장되는 것은 아닙니다. 개발자는 각 잠재적 취약성을 자신의 읽기 시스템 맥락 안에서 검토해야 합니다.

7. 내비게이션 문서 처리

읽기 시스템MUST EPUB 내비게이션 문서 [epub-33]를 처리해야 합니다.

EPUB 내비게이션 문서를 처리하기 위해, 읽기 시스템은:

EPUB 내비게이션 문서가 spine의 일부인지 여부와 관계없이, 읽기 시스템은 위 요구사항을 MUST 준수해야 합니다.

8. 레이아웃 렌더링 제어 처리

8.1 고정 레이아웃 문서

읽기 시스템고정 레이아웃 문서 [epub-33]의 렌더링을 MUST 지원해야 합니다.

8.1.1 고정 레이아웃 속성

8.1.1.1 rendition:layout 속성

rendition:layout 속성을 지닌 meta 요소가 패키지 문서 메타데이터 [epub-33]에 나타나지 않는 경우, EPUB 읽기 시스템은 기본값 reflowable을 전역 값으로 MUST 가정해야 합니다.

rendition:layout 속성이 pre-paginated로 설정된 경우, 읽기 시스템은 합성 스프레드를 렌더링할 때 인접한 콘텐츠 슬롯 사이에 공간을 포함해서는 MUST NOT 안 됩니다.

rendition:layout 속성 값에는 다음 처리 요구사항이 있습니다:

reflowable

읽기 시스템은 렌더링할 때 동적 페이지 매김을 MAY 적용할 수 있습니다.

pre-paginated

읽기 시스템은 렌더링할 때 spine itemref [epub-33]당 정확히 하나의 페이지를 MUST 생성해야 합니다.

8.1.1.2 rendition:orientation 속성

rendition:orientation 속성을 지닌 meta 요소가 패키지 문서 메타데이터 [epub-33]에 나타나지 않는 경우, EPUB 읽기 시스템은 기본값 auto를 전역 값으로 MUST 가정해야 합니다.

rendition:orientation 속성 값에는 다음 처리 요구사항이 있습니다:

auto

읽기 시스템은 EPUB 콘텐츠 문서를 렌더링할 방향을 결정합니다.

landscape

여러 방향을 지원하는 읽기 시스템은 EPUB 콘텐츠 문서를 가로 방향으로 렌더링하는 것이 SHOULD 권장됩니다.

portrait

여러 방향을 지원하는 읽기 시스템은 EPUB 콘텐츠 문서를 세로 방향으로 렌더링하는 것이 SHOULD 권장됩니다.

그 의도를 전달하는 수단은 구현별로 다릅니다.

8.1.1.3 rendition:spread 속성

읽기 시스템은 rendition:spread 속성을 지닌 meta 요소가 패키지 문서 메타데이터 [epub-33]에 나타나지 않는 경우 기본값 auto를 전역 값으로 반드시 가정해야 합니다.

rendition:spread 속성 값에는 다음 처리 요구사항이 있습니다:

none

읽기 시스템은 spine 항목을 합성 스프레드에 포함해서는 MUST NOT 안 됩니다. 읽기 시스템은 화면 중앙에 배치된 단일 뷰포트를 만드는 것이 SHOULD 권장됩니다.

landscape

읽기 시스템은 장치가 가로 방향일 때에만 spine 항목에 대한 합성 스프레드를 렌더링하는 것이 SHOULD 권장됩니다.

portrait (폐기 예정)

읽기 시스템은 "portrait" 값을 "both"의 동의어로 취급하고 방향과 관계없이 스프레드를 만드는 것이 SHOULD 권장됩니다.

both

읽기 시스템은 장치 방향과 관계없이 합성 스프레드를 렌더링하는 것이 SHOULD 권장됩니다.

auto

읽기 시스템은 콘텐츠 표시 영역 활용 최적화 과정의 일부로 특정 또는 모든 장치 방향에서 합성 스프레드를 MAY 사용할 수 있습니다.

8.1.1.4 rendition:page-spread-* 속성

rendition:page-spread-left 속성 [epub-33]은 주어진 spine 항목이 스프레드의 왼쪽 슬롯에 렌더링되는 것이 SHOULD 권장됨을 나타냅니다. rendition:page-spread-right 속성 [epub-33]은 주어진 spine 항목이 스프레드의 오른쪽 슬롯에 렌더링되는 것이 SHOULD 권장됨을 나타냅니다.

rendition:page-spread-leftrendition:page-spread-right 속성은 pre-paginated 콘텐츠와 reflowable 콘텐츠 모두에 적용되며, 읽기 시스템이 합성 스프레드를 만들 때에만 적용됩니다.

rendition:page-spread-* 속성은 page-break-before 속성 [csssnapshot]이 XHTML 콘텐츠 문서에 대해 어떤 값으로 설정되어 있든 그 값보다 MUST 우선해야 합니다.

reflowable spine 항목이 pre-paginated 항목 뒤에 오는 경우, reflowable 항목에는 rendition:page-spread-* 속성 값이 없을 때 page-progression-direction 속성 [epub-33]에 정의된 다음 페이지에서 시작하는 것이 SHOULD 권장됩니다.

읽기 시스템은 reflowable 및 pre-paginated spine 항목 모두에서 rendition:page-spread-* 속성을 MUST 준수해야 합니다(예: 빈 페이지 삽입).

pre-paginated spine 항목이 reflowable 항목 뒤에 오는 경우, pre-paginated 항목에는 rendition:page-spread-* 속성 값이 없을 때 (page-progression-direction 속성에 정의된) 다음 페이지에서 시작하는 것이 SHOULD 권장됩니다.

읽기 시스템이 실제 스프레드를 나타내는 두 spine 항목(즉, rendition:page-spread-leftrendition:page-spread-right 속성이 있는 인접한 두 spine 항목)을 만나면, 인접한 페이지 사이에 공간 없이 스프레드를 만드는 것이 SHOULD 권장됩니다.

8.1.2 초기 컨테이닝 블록 치수

XHTML

읽기 시스템은 XHTML 콘텐츠 문서에 대해 viewport meta 태그에 선언된 너비 및 높이 표현식을 사용하여 초기 컨테이닝 블록(ICB)을 MUST 생성해야 하며, 이는 HTML에서 표현하기 [epub-33]에서 정의된 바와 같습니다. 그 시스템은 ICB 밖에 배치된 콘텐츠를 MUST 잘라내야 합니다.

viewport meta 태그의 너비 또는 높이 값이 숫자가 아닌 문자를 포함하지만 숫자로 시작하는 경우(예: 값에 "500px"와 같은 길이 단위 선언이 포함된 경우), 숫자 접두사를 픽셀 값으로 사용하는 것이 SHOULD 권장되며, 그렇지 않으면 그 값은 유효하지 않은 것으로 MUST 처리해야 합니다.

읽기 시스템은 viewport meta 태그의 구문이 유효하지 않더라도 widthheight 값을 추출하려고 시도하는 것이 SHOULD 권장됩니다.

읽기 시스템은 viewport meta 태그에서 widthheight 속성의 첫 번째 선언을 MUST 사용해야 합니다(즉, 반복된 선언은 무시합니다).

viewport meta가 width 또는 height 값을 포함하지 않거나, 이러한 값이 유효하지 않은 경우, 읽기 시스템은 값을 제공할 MAY 있습니다. 예를 들어, 읽기 시스템은 다음과 같이 할 수 있습니다:

  • 이들을 각각 device-widthdevice-height 값으로 간주합니다; 또는
  • 해당하는 경우 spine에서 이전 콘텐츠 문서를 찾아 거기에 정의된 ICB 값을 사용합니다; 또는
  • 콘텐츠 문서 전체를 오류가 있는 XHTML 콘텐츠로 간주합니다.

XHTML 콘텐츠 문서가 둘 이상의 viewport meta 태그를 포함하는 경우, 읽기 시스템은 높이 및 너비 치수를 얻기 위해 문서 순서상 첫 번째 태그를 MUST 사용해야 합니다. 이후 선언은 MUST 무시해야 합니다.

ICB 종횡비가 읽기 시스템 콘텐츠 표시 영역의 종횡비와 일치하지 않는 경우, 읽기 시스템은 사용자 인터페이스를 수용하기 위해 ICB를 그 영역 안에 배치할 MAY 있습니다. 다시 말해, 추가된 레터박스 공간이 콘텐츠의 한쪽(또는 양쪽)에 나타날 MAY 있습니다.

SVG

읽기 시스템은 SVG 콘텐츠 문서를 렌더링하기 위해 SVG에서 ICB 표현하기 [epub-33]에 정의된 치수를 사용하여 초기 컨테이닝 블록(ICB)을 MUST 생성해야 합니다.

참고

ICB 종횡비가 읽기 시스템 콘텐츠 표시 영역의 종횡비와 일치하지 않는 경우, 읽기 시스템은  [SVG]에 정의된 대로 viewBoxpreserveAspectRatio 속성에 대한 규칙을 따라야 합니다.

8.1.3 뷰포트 렌더링

고정 레이아웃 문서를 렌더링할 때, 기본 의도는 콘텐츠 표시 영역이 사용 가능한 뷰포트 영역을 가능한 한 많이 차지하는 것입니다. 읽기 시스템은 테두리, 여백, 머리글 또는 바닥글과 같은 추가 콘텐츠를 뷰포트에 주입해서는 SHOULD NOT 안 됩니다.

참고

이 명세는 초기 컨테이닝 블록 [css2]이 읽기 시스템 콘텐츠 표시 영역 안에 어떻게 배치되는지 정의하지 않습니다.

참고

사용자에게 읽기 시스템 제어 위젯을 노출하는 방식은 구현별로 다르며, 위의 동작 기대사항에는 포함되지 않습니다.

8.2 리플로우 가능 레이아웃

읽기 시스템리플로우 가능 레이아웃 속성 [epub-33]을 SHOULD 처리해야 합니다.

8.2.1 rendition:flow 속성

읽기 시스템이 지정된 렌더링을 지원하는 경우, 오버플로 콘텐츠를 처리하기 위해 해당 방법을 사용하는 것이 SHOULD 권장되지만, 사용자가 요청된 렌더링을 재정의할 수 있는 옵션을 MAY 제공할 수 있습니다.

이 속성을 지닌 meta 요소가 metadata 섹션 [epub-33]에 나타나지 않는 경우 기본 전역 값은 auto입니다. 읽기 시스템은 이 기본값만 MAY 지원할 수 있습니다.

rendition:flow 속성 값에는 다음 처리 요구사항이 있습니다:

paginated

읽기 시스템은 모든 오버플로 콘텐츠를 동적으로 페이지 매김하는 것이 SHOULD 권장됩니다.

scrolled-continuous

읽기 시스템은 모든 EPUB 콘텐츠 문서를 오버플로 콘텐츠가 스크롤 가능하도록 렌더링하는 것이 SHOULD 권장되며, EPUB 출판물을 spine 항목에서 spine 항목으로 이어지는 하나의 연속 스크롤로 제공하는 것이 SHOULD 권장됩니다(단, 로컬로 재정의 [epub-33]된 경우는 예외).

scrolled-doc

읽기 시스템은 모든 EPUB 콘텐츠 문서를 사용자가 오버플로 콘텐츠를 스크롤할 수 있도록 렌더링하는 것이 SHOULD 권장되며, 각 spine 항목을 별도의 스크롤 가능한 문서로 제공하는 것이 SHOULD 권장됩니다.

auto

읽기 시스템은 오버플로 콘텐츠를 기본 방법 또는 사용자 환경설정 중 적용 가능한 것으로 MAY 렌더링할 수 있습니다.

rendition:flow-scrolled-continuous 속성의 경우, 스크롤 방향은 itemref 요소 [epub-33]가 참조하는 XHTML 콘텐츠 문서의 루트 요소의 블록 흐름 방향을 기준으로 MUST 정의되어야 합니다. 블록 흐름 방향이 아래쪽(위에서 아래)인 경우 스크롤 방향은 수직이어야 MUST 합니다. 루트 요소의 블록 흐름 방향이 오른쪽(왼쪽에서 오른쪽) 또는 왼쪽 (오른쪽에서 왼쪽)인 경우 수평이어야 MUST 합니다.

읽기 시스템은 pre-paginated spine 항목 [epub-33]을 처리할 때 rendition:flow 속성과 그 재정의를 MUST 무시해야 합니다.

참고

읽기 시스템 개발자는 이 제한을 무시하고, rendition:flowscrolled-continuous 값을 각 pre-paginated spine 항목을 긴 세로 스트립에 표시하는 전환으로 받아들이기로 결정할 수 있습니다(스마트폰이나 컴퓨터에서 읽기 쉽게 함). 이러한 유형의 표현은 종종 "웹툰"이라고 합니다. 일부 출판자는 이미 이 가능성을 사용하고 있습니다. 추가 실험과 인큐베이션을 거친 후, 이 명세의 향후 버전은 이 접근 방식을 고정 레이아웃 문서의 표준 기능으로 도입할 수 있습니다. (연기된) github issue 2412도 참조하십시오.

8.2.2 rendition:align-x-center 속성

rendition:align-x-center 속성이 spine 항목에 설정된 경우, 읽기 시스템은 해당 콘텐츠를 적용 가능한 경우 뷰포트 또는 스프레드 안에서 수평 중앙에 렌더링하는 것이 SHOULD 권장됩니다. 이 속성은 spine 항목의 렌더링에는 영향을 주지 않으며, 결과 콘텐츠 상자의 배치에만 영향을 줍니다.

reflowable 콘텐츠의 경우, 이 속성을 지원하는 읽기 시스템은 각 가상 페이지를 가운데에 MUST 정렬해야 합니다.

이 명세는 읽기 시스템이 이 속성을 지원하지 않거나 EPUB 작성자가 이를 지정하지 않을 때의 기본 렌더링 동작을 정의하지 않습니다. 읽기 시스템은 spine 항목을 자체 설계에 따라 MAY 렌더링할 수 있습니다.

8.3 viewport meta 태그

고정 레이아웃 문서의 초기 컨테이닝 블록 치수를 얻는 경우를 제외하고, 읽기 시스템은 viewport meta 선언의 렌더링 지시를 MUST 무시해야 합니다.

이 제한은 고정 레이아웃 문서와 리플로우 가능 문서 모두에 적용됩니다.

8.4 사용자 정의 속성

읽기 시스템패키지 렌더링 어휘 [epub-33]에 정의된 속성과 동작상 충돌하는 표현식을 도입하지 않는 한 사용자 정의 속성을 MAY 지원할 수 있습니다.

9. 미디어 오버레이 처리

읽기 시스템 중 사전 녹음된 오디오를 렌더링할 수 있는 것은 미디어 오버레이 [epub-33]를 SHOULD 지원해야 합니다.

읽기 시스템이 미디어 오버레이를 지원하지 않는 경우, 다음 둘 다 MUST 무시해야 합니다:

9.1 미디어 오버레이 로딩

읽기 시스템이 패키지 문서를 로드할 때, 해당 시스템은 manifest item 요소 [epub-33]의 media-overlay 속성을 참조하여 EPUB 콘텐츠 문서에 대응하는 미디어 오버레이를 발견해야 MUST 합니다.

읽기 시스템은 XHTML 콘텐츠 문서에 대한 재생을 MUST 지원해야 하며, SVG 콘텐츠 문서MAY 지원할 수 있습니다.

재생은 원하는 EPUB 콘텐츠 문서 시작 지점에 대응하는 미디어 오버레이 요소에서 MUST 시작해야 합니다. EPUB 콘텐츠 문서의 시작이 미디어 오버레이의 시작 부분 또는 중간에 있는 요소에 대응할 수 있음에 유의하십시오. 미디어 오버레이 문서의 재생이 끝나면, 읽기 시스템은 다음 EPUB 콘텐츠 문서 (패키지 문서 spine에 지정된 대로)를 로드하고, 해당하는 미디어 오버레이 문서가 제공된 경우 그것도 로드하는 것이 SHOULD 권장됩니다.

9.2 기본 재생

9.2.1 타이밍과 동기화

읽기 시스템은 body 요소 [epub-33]의 직접 자식을 순서대로 MUST 렌더링해야 합니다. seq 요소 [epub-33]의 자식은 순서대로 MUST 렌더링되어야 하며, 마지막 자식의 재생이 끝나면 재생이 완료됩니다. 읽기 시스템은 par 요소 [epub-33]의 자식을 병렬로(각각이 같은 시각에 시작하도록) MUST 렌더링해야 하며, 모든 자식의 재생이 끝나면 재생이 완료됩니다. 미디어 오버레이 문서의 읽기 시스템 재생은 body 요소의 마지막 자식 재생이 끝나면 완료됩니다.

9.2.2 오디오 렌더링

미디어 오버레이 audio 요소 [EPUB-33]가 주어지면, 읽기 시스템은 src 속성이 참조하는 오디오 리소스를 clipBegin 속성이 지정한 클립 오프셋 시각에서 시작하여 clipEnd 속성이 지정한 클립 오프셋 시각에서 끝나도록 MUST 재생해야 합니다 [epub-33].

추가로:

  • EPUB 작성자clipBegin 속성을 지정하지 않은 경우, 읽기 시스템은 "0" 값을 MUST 가정해야 합니다.

  • EPUB 작성자가 clipEnd 속성을 지정하지 않은 경우, 읽기 시스템은 그 값을 물리적 미디어의 전체 지속 시간으로 MUST 가정해야 합니다.

  • clipEnd 값이 물리적 미디어의 전체 지속 시간을 초과하는 경우, 읽기 시스템은 그 값을 물리적 미디어의 전체 지속 시간으로 MUST 가정해야 합니다.

사용자가 제어할 수 있는 오디오 재생 옵션은 사용자가 음높이를 왜곡하지 않고 재생 속도를 변경할 수 있는 타임스케일 수정을 포함하는 것이 SHOULD 권장됩니다. 권장 범위는 절반 속도에서 두 배 속도까지입니다.

9.2.3 EPUB 콘텐츠 문서 요소 렌더링

미디어 오버레이 text 요소 [epub-33]가 주어지고 그 src 속성이 EPUB 콘텐츠 문서의 특정 부분을 참조하는 URL-fragment string을 포함하는 경우, 읽기 시스템은 참조된 부분이 뷰포트에서 보이도록 보장하는 것이 SHOULD 권장됩니다. [html] 요소 ID 참조 및 SVG Fragment Identifiers [svg]에 더해, 읽기 시스템은 다른 프래그먼트 식별자 스킴을 MAY 지원할 수 있습니다.

미디어 오버레이 재생 중에, 뷰포트가 있는 읽기 시스템은 지정된 경우 메타데이터 속성 active-classplayback-active-class [epub-33]가 지정한 클래스 이름을 EPUB 콘텐츠 문서의 적절한 요소에 추가하는 것이 SHOULD 권장됩니다. 반대로, 재생 상태가 변경되면 스타일 정보 연결 [epub-33]에 설명된 대로 클래스 이름을 제거하는 것이 SHOULD 권장됩니다.

active-classplayback-active-class 메타데이터 속성은 OPTIONAL이며, 생략된 경우 읽기 시스템 동작은 구현별로 다릅니다.

프래그먼트 식별자 [epub-33]가 요소를 참조하지 않을 때의 읽기 시스템 동작도 구현별로 다릅니다.

9.3 EPUB 콘텐츠 문서와 상호작용하기

참고

이 명세의 이전 버전에는 내장 오디오 및 비디오에 대한 일부 정보 [epubmediaoverlays-32]가 포함되어 있었습니다. 이 기능은 폐기 예정입니다.

9.3.1 내비게이션

미디어 오버레이는 EPUB 콘텐츠 문서와 긴밀하게 연결되어 있으므로, 읽기 시스템은 미디어 오버레이 재생의 현재 위치를 기반으로 EPUB 콘텐츠 문서 안의 위치를 매우 쉽게 찾을 수 있습니다. 사용자가 동기화된 재생을 일시 정지하고 EPUB 출판물의 다른 부분으로 이동하면, 동기화된 재생은 그 지점에서 MUST 재개되어야 합니다. 예를 들어, EPUB 콘텐츠 문서의 특정 페이지 번호가 원하는 위치라면, 미디어 오버레이에서도 같은 지점을 찾아 그곳에서 재생을 시작합니다.

이와 같은 접근 방식은 EPUB 내비게이션 문서에서 사용자가 내비게이션 지점을 선택하는 것과 미디어 오버레이 재생을 동기화할 수 있게 합니다. 읽기 시스템은 해당 파일의 미디어 오버레이를 로드하고, 내비게이션 지점 대상의 ID를 기반으로 재생을 시작할 올바른 지점을 찾습니다.

참고

EPUB 작성자는 그 내용의 동기화된 재생을 제공하기 위해 미디어 오버레이 문서EPUB 내비게이션 문서와 직접 연결할 수 있으며, 이는 해당 문서가 들어 있는 XHTML 콘텐츠 문서spine에 포함되는지 여부와 관계없습니다. 자세한 정보는 EPUB 내비게이션 문서 [epub-33]를 참조하십시오.

참고

EPUB 작성자는 미디어 오버레이 문서 요소를 표와 같은 EPUB 콘텐츠 문서 구조와 연결할 수 있습니다. 읽기 시스템은 미디어 오버레이 재생이 사용자의 표 행 및 셀 내비게이션과 계속 동기화되도록 보장해야 합니다. 읽기 시스템은 셀 내용에 앞서 대응하는 표 머리글을 재생할 수도 있습니다.

9.3.2 내장 오디오 및 비디오(폐기 예정)

내장 오디오 및 비디오의 자동 재생에 대한 지침은 이제 폐기 예정입니다.

자세한 정보는 [epubmediaoverlays-32]의 해당 정의를 참조하십시오.

9.3.3 텍스트 음성 변환

미디어 오버레이 text 요소가 audio [epub-33] 형제 요소 없이 대상 EPUB 콘텐츠 문서 안의 텍스트를 참조하는 경우, 텍스트 음성 변환(TTS) 재생이 가능한 읽기 시스템은 참조된 텍스트를 TTS를 사용하여 렌더링하는 것이 SHOULD 권장됩니다.

읽기 시스템은 미디어 오버레이 렌더링의 일부로 오디오 스트림을 재생하기 위해 대상 EPUB 콘텐츠 문서에 제공된 음성 관련 정보를 사용하는 것이 SHOULD 권장됩니다.

참고

EPUB 출판물에서 TTS 기술을 지원하는 방법에 대한 자세한 정보는 EPUB 3 Text-to-Speech Support [epub-tts-10]를 참조하십시오(EPUB 출판물).

미디어 오버레이 text 요소의 수명은 연결된 음성 합성의 렌더링 시간에 대응합니다. 따라서 text 요소(그리고 추론상 부모 par 요소)의 암시적 지속 시간은 Text-to-Speech 엔진의 실행에 의해 결정되며, 저작 시점에는 알 수 없습니다(말하기 속도, 일시 정지 및 기타 운율 매개변수와 같은 요소가 오디오 출력에 영향을 줍니다). 이는 또한 읽기 시스템이 패키지 문서에 설정된 duration 속성 값을 사용할 때 근사값으로 취급해야 함을 의미합니다.

9.4 건너뛰기 가능성과 벗어나기 가능성

9.4.1 건너뛰기 가능성

읽기 시스템은 미디어 오버레이 요소의 epub:type 속성이 제공하는 시맨틱 정보를 사용하여 사용자에게 콘텐츠를 건너뛸 옵션을 제공하는 것이 SHOULD 권장됩니다.

콘텐츠 건너뛰기가 활성화된 경우, 읽기 시스템은 epub:type 속성이 건너뛸 수 있는 구조와 일치하는 시맨틱을 포함하는 모든 parseq 요소의 재생을 MUST 억제해야 합니다.

9.4.2 벗어나기 가능성

미디어 오버레이를 재생하는 동안, 읽기 시스템은 사용자에게 벗어날 수 있는 구조 [epub-33]에서 나가는("벗어나는") 옵션을 제공하는 것이 SHOULD 권장됩니다. 이러한 구조는 벗어날 수 있는 구조 목록의 값을 가진 epub:type 속성 [epub-33]의 존재로 결정됩니다. 사용자가 벗어날 수 있는 구조에서 벗어나기로 선택하면, 읽기 시스템은 그 구조 다음의 다음 순차 요소에서 재생을 MUST 계속해야 합니다.

10. 구조적 시맨틱 처리

읽기 시스템구조적 시맨틱 [epub-33]을 EPUB 콘텐츠 문서에서 MAY 지원할 수 있습니다.

epub:type 속성을 처리할 때, 읽기 시스템은:

11. property 값 처리

읽기 시스템어휘 연결 메커니즘을 지원하여 property 데이터 유형 값 [epub-33]을 처리할 MAY 수 있습니다.

이 섹션은 property 데이터 유형 값에서 확장된 URL을 얻는 알고리즘을 정의합니다. 이는 [epub-33] 어휘 연결 메커니즘을 지원하는 읽기 시스템에만 적용됩니다.

[epub-33] 어휘 연결 메커니즘을 지원하지 않는 읽기 시스템은 property 값을 일반 문자열 값 [infra]으로 처리할 MAY 수 있습니다. 이 값들의 존재에 기반하여 읽기 시스템 동작을 추가하기 위해, 이 값들을 URL로 확장하는 것을 지원할 필요는 없습니다.

이 알고리즘은 [infra]에 정의된 용어와 데이터 유형을 사용하여 과정을 설명하며, 성공하면 확장된 URL이 반환된 문자열 값을 결과로 냅니다. 유효하지 않은 속성에는 null 값이 반환됩니다.

이 알고리즘은 다음 인수를 받습니다:

확장된 URL을 얻으려면, 다음 단계를 적용합니다:

  1. baseURL, expandedURL, propertyPrefixpropertyReference를 빈 문자열로 둡니다.

    설명

    이 알고리즘에서:

    • baseURL은 EPUB 작성자가 할당했든, 기본 어휘에 해당하든, 또는 예약된 접두사에서 왔든, 해당 값과 연결된 기본 URL을 보관합니다.
    • expandedURL은 기본 URL과 속성 참조를 연결한 결과로 나오는 최종 URL을 보관합니다.
    • propertyPrefix는 속성의 접두사 [epub-33]를 보관합니다 (즉, 콜론 앞의 값). 기본 어휘의 속성에는 접두사가 없지만, 그 밖의 모든 속성에는 접두사가 있습니다.
    • propertyReference는 속성의 참조 [epub-33]를 보관합니다 (즉, 접두사 뒤의 값). 모든 유효한 속성에는 참조가 필요합니다.
  2. propertyPrefixpropertyReference의 값을 다음과 같이 얻습니다:

    1. value가 콜론(U+003A)을 포함하지 않으면, propertyReferencevalue로 설정합니다.

      설명

      property 값에 콜론이 없으면 접두사가 없습니다. 이 경우, 알고리즘의 다음 단계에서 설명한 대로 값은 기본 어휘에서 가져옵니다.

    2. 그렇지 않고 value가 콜론으로 시작하면, 그 값은 유효하지 않습니다. null을 반환합니다.

      설명

      값의 시작에 있는 콜론은 접두사가 설정되지 않았음을 나타내므로 유효하지 않습니다.

    3. 그렇지 않으면, value를 첫 번째 콜론에서 나누고 propertyPrefix를 콜론 앞의 문자열로, propertyReference를 콜론 뒤의 문자열로 설정합니다.

    propertyReferencepath-relative-scheme-less-URL 문자열로서 유효하지 않으면, property 데이터 유형 정의 [epub-33]에서 요구하는 바에 따라, 그 값은 유효하지 않습니다. null을 반환합니다.

    설명

    path-relative-scheme-less-URL 문자열 정의에는 접두사가 있든 없든 참조에 적용되는 여러 제한이 있습니다.

    예를 들어, 참조는 URL-scheme string 뒤에 콜론이 오는 것으로 시작해서는 안 됩니다. 이 제한은 다음 값이 두 번째 콜론이 스킴을 나타낼 수 있으므로 유효한 property 값이 아님을 의미합니다: foo:bar:baz/qux.

    또한 어떤 문자를 퍼센트 인코딩해야 하는지에 대한 제한도 있습니다.

  3. baseURL의 값을 다음과 같이 얻습니다:

    1. propertyPrefix가 빈 문자열인 경우:

      1. attrepub:type [epub-33]이면, baseURL
        http://idpf.org/epub/vocab/structure/#로 설정합니다.
      2. 그렇지 않고 elem이 패키지 문서 meta 요소 [epub-33]이고 attrscheme이면, 속성 값은 유효하지 않습니다. null을 반환합니다.
      3. 그렇지 않고 elem이 패키지 문서 meta 요소 [epub-33]이면, baseURL
        http://idpf.org/epub/vocab/package/meta/#로 설정합니다.
      4. 그렇지 않고 elem이 패키지 문서 link 요소 [epub-33]이면, baseURL
        http://idpf.org/epub/vocab/package/link/#로 설정합니다.
      5. 그렇지 않고 elem이 패키지 문서 item 요소 [epub-33]이면, baseURL
        http://idpf.org/epub/vocab/package/item/#로 설정합니다.
      6. 그렇지 않고 elem이 패키지 문서 itemref 요소 [epub-33]이면, baseURL
        http://idpf.org/epub/vocab/package/itemref/#로 설정합니다.
      설명

      property 값에 접두사가 없으면, 이 단계는 해당 값이 속한 속성 또는 요소를 기준으로 사용할 기본 어휘 URL을 할당합니다. 패키지 문서의 한 요소에 property 데이터 유형을 받는 속성이 둘 이상 있는 경우, 이러한 속성은 같은 기본 어휘를 공유합니다. 이러한 이유로, 어떤 URL을 할당할지 결정하기 위해 요소와 속성을 모두 확인할 필요는 없습니다.

      기본 어휘가 없는 EPUB 3의 유일한 속성은 scheme 속성 [epub-33]입니다. 접두사가 없는 scheme 값은 유효하지 않습니다.

    2. 그렇지 않으면:

      1. prefix 속성이 doc의 문서 요소에 선언되어 있고, 해당 속성이 propertyPrefix와 일치하는 접두사를 포함하면, baseURL을 접두사 선언과 연결된 URL로 설정합니다.

      2. 그렇지 않고 propertyPrefixdoc에 대한 예약된 접두사 [epub-33]와 일치하면, baseURL을 예약된 접두사와 연결된 URL로 설정합니다.

      설명

      property 값에 접두사가 있으면, 그 기본 URL을 확인할 첫 번째 위치는 문서 요소의 prefix 속성 선언입니다.

      작성자가 접두사에 URL을 할당하지 않은 경우, 다음 단계는 해당 접두사가 예약된 접두사 중 하나와 일치하는지 확인하는 것입니다.

      작성자가 할당한 접두사 URL은 예약된 접두사 URL을 재정의함에 유의하십시오.

    baseURL이 빈 문자열이면, 속성 값은 유효하지 않습니다. null을 반환합니다.

    설명

    이 처리 단계가 끝날 때 기본 URL이 비어 있으면, 접두사가 매핑되지 않았거나 예약되지 않았거나, 처리 중인 요소 또는 속성이 [epub-33]에 정의된 대로 property 데이터 유형을 허용하지 않는다는 뜻입니다.

    기본 URL이 없으면 확장된 URL을 생성할 수 없으므로, 값은 유효하지 않습니다.

  4. expandedURLbaseURLpropertyReference의 값을 연결한 값으로 설정합니다. 값을 연결할 때 구분자를 추가하지 마십시오.
  5. expandedURL유효한 URL 문자열이 아니면, 그 값은 유효하지 않습니다. null을 반환합니다.

    그렇지 않으면, expandedURL을 반환합니다.

    설명

    확장된 값을 얻을 수 있더라도, 그것이 반드시 유효한 URL인 것은 아닙니다. 이는 EPUB 작성자가 접두사에 유효하지 않은 기본 URL을 할당한 경우에만 발생할 가능성이 있습니다.

참고

읽기 시스템은 결과 URL을 구문 분석 [url]하거나 결과로 얻은 확장된 URL을 역참조하려고 시도할 필요는 없습니다. property 데이터 유형 값을 전체 URL로 확장하는 것은 읽기 시스템이 기대한 값을 만났음을 보장할 뿐입니다(즉, 서로 다른 EPUB 작성자가 같은 접두사를 서로 다른 URL에 할당할 수 있으므로, 두 값은 확장되기 전까지 같아 보일 수 있습니다).

12. 하위 호환성

읽기 시스템패키지 문서version 속성 [epub-33]이 "3.0"보다 작은 EPUB 출판물을 처리하려고 MUST 시도해야 합니다.

이전 버전 번호를 가진 EPUB 출판물은 각자의 명세에 따라 처리하지 않으면 항상 의도한 대로 정확하게 렌더링되지는 않습니다. 읽기 시스템은 해당 명세에서 정의한 대로 이러한 EPUB 출판물을 지원하는 것이 SHOULD 권장됩니다.

13. 상위 호환성

읽기 시스템패키지 문서version 속성 [epub-33]이 "3.0"보다 큰 EPUB 출판물을 처리하려고 SHOULD 시도해야 합니다.

14. 접근성

이 섹션은 비규범입니다.

이 명세의 주된 초점은 EPUB 출판물을 처리하고 렌더링하는 방법에 있지만, 모든 읽기 시스템이 제공해야 하는 특정 사용자 인터페이스를 의무화하지는 않습니다. 이것이 모든 읽기 시스템 개발자가 인식해야 하거나 애플리케이션에서 피하려고 해야 할 공통 접근성 문제가 없다는 의미는 아닙니다.

W3C의 User Agent Accessibility Guidelines [uaag20]는 많은 브라우저 접근성 문제가 EPUB 전용 사용자 에이전트에서도 유사하게 나타나므로, 개발자가 읽기 시스템을 개선하기 위해 적용해야 할 많은 유용한 실천 방법을 제공합니다.

다음 목록은 접근성 부족이 사용자의 읽기 경험에 영향을 주는 몇 가지 추가 EPUB 전용 영역을 개괄합니다:

DAISY 컨소시엄은 이러한 문제와 그 외의 문제를 평가하는 데 도움을 주기 위해 접근성 테스트 스위트를 유지 관리합니다.

15. 보안 및 개인정보 보호

15.1 개요

이 섹션은 비규범입니다.

EPUB 출판물의 특수성은 그 구조에 있습니다. EPUB 형식은 HTML, CSS, SVG 및 기타 리소스를 포함하는 구조화되고 의미론적으로 강화된 웹 콘텐츠를 단일 파일 컨테이너로 배포하기 위해 표현하고, 패키징하고, 인코딩하는 수단을 제공합니다.

읽기 시스템의 경우, 이는 보안 및 개인정보 보호 문제가 주로 이러한 형식의 기능에 기반하며, 일반적인 웹 콘텐츠가 제시하는 위협과 매우 유사하다는 것을 의미합니다.

읽기 시스템 개발자에게는 애플리케이션의 보안과 개인정보 보호를 보장하는 동시에 그 안에서 렌더링되는 콘텐츠로부터 사용자에게 가해지는 위협을 제한하도록 돕는 이중 책임도 있습니다. 이 섹션의 나머지는 개발자가 이러한 위험을 인식하고 완화하는 데 도움을 주기 위해 EPUB 3의 위험 모델을 살펴봅니다.

참고

EPUB 출판물 저작과 관련된 위험은 [epub-33]의 보안 및 개인정보 보호 섹션을 참조하십시오.

15.2 위협 모델

이 섹션은 비규범입니다.

사용자에게 가장 큰 위협은 사용자가 읽는 콘텐츠 [epub-33]에서 오며, 이러한 공격에 대한 첫 번째 방어선은 사용자가 사용하는 읽기 시스템입니다. 사용자는 읽기 시스템이 악성 콘텐츠에 대한 보호 장치로 작동할 것이라고 기대하며, EPUB 출판물이 웹 사이트와 동일한 보안 위험에 취약하다는 사실을 인식하지 못하는 경우가 많습니다.

하지만 읽기 시스템은 보안과 개인정보 보호를 제공하도록 의존되는 한편, 정보 처리 방식에 따라 사용자에게 의도치 않은 위협을 줄 수도 있습니다. 예를 들어 경험을 최적화하기 위해 사용자 정보를 추적하는 것은 흔한 필요이지만, 사용자 허가 없이 수행하면 읽기 시스템은 법적 개인정보 보호 요구사항을 위반할 수 있습니다.

이 섹션은 읽기 시스템 개발자가 고려해야 하는 주요 위협 몇 가지를 개괄하며, 자세한 내용과 권장사항은 다음 섹션들에 제공합니다.

스크립팅

악성 스크립트는 읽기 시스템에 대해 여러 공격 벡터를 제시합니다. 예를 들어 로컬 스토리지가 안전하지 않으면, 사용자의 데이터를 침해하려고 시도할 수 있습니다. 네트워크 접근이 제공되면, 사용자 데이터를 무단으로 수집하려고 시도할 수 있습니다.

이러한 문제와 완화 방법에 대한 더 자세한 논의는 6.4.3 보안 고려사항에 제공됩니다.

악성 콘텐츠

EPUB 출판물에는 읽기 시스템이나 그것이 실행되는 운영 체제의 보안 결함을 악용하도록 설계된 리소스가 포함될 수 있습니다. 공격자는 심볼릭 링크나 파일 별칭과 같은 파일 간접 참조 기법을 사용하여 원격 리소스에 접근하려고 시도할 수도 있습니다.

EPUB 출판물에 서명하는 표준 방법이 없다는 것은, 읽기 시스템이 저작과 장치 로딩 사이에 콘텐츠가 변조되었는지 항상 검증할 수 없다는 것을 의미합니다.

원격 리소스

원격 리소스는 신뢰할 수 없는 출처에서 로드된 EPUB 출판물과 동일한 위험을 제시합니다. EPUB 출판물의 발행자를 신뢰하더라도, 원격 리소스는 침해될 수 있습니다.

원격 리소스 호출은 사용자에 대한 정보를 추적하는 데도 사용될 수 있습니다(예: 서버 로그를 통해). 읽기 시스템은 HTTP 요청을 통해 노출하는 정보를 리소스를 얻는 데 필수적인 것만으로 제한해야 합니다.

EPUB의 출처EPUB 작성자에게 알려져 있지 않고 각 읽기 시스템 구현마다 고유합니다. 따라서 EPUB 작성자가 자신이 제어하는 웹 서버에 원격 리소스를 호스팅하는 경우, 그 서버는 사실상 CORS, Content-Security-Policy, 또는 X-Frame-Options용 헤더와 같이 허용 가능한 출처를 지정해야 하는 보안 기능을 사용할 수 없습니다.

외부 링크

원격 리소스와 마찬가지로, 외부 링크는 방심한 사용자를 속여 웹상의 악성 리소스를 열게 하여 읽기 시스템이나 운영 체제를 악용하도록 설계된 리소스를 열게 하는 데 사용될 수 있습니다.

마찬가지로, 읽기 시스템은 링크 이동을 통해 사용자를 식별할 수 있는 정보를 노출하지 않도록 해야 합니다(예: 추적 식별자를 사용하지 않거나 사용자의 환경에 대한 불필요한 정보를 노출하지 않음).

사용자 생성 콘텐츠

읽기 경험 안의 사용자 생성 콘텐츠, 예를 들어 텍스트 영역이나 기타 대화형 구성 요소를 통한 콘텐츠는 적절히 보호되지 않으면 읽기 시스템 보안이나 사용자 개인정보 보호에 위협이 될 수 있습니다. 스크립팅 보안에 대한 자세한 내용은 6.4.3 보안 고려사항에 제공됩니다.

사용자 데이터 수집

사용자와 사용자의 읽기 습관에 대한 정보를 허가 없이 수집하면, 그 정보가 내부 사용만을 목적으로 하더라도 사용자의 개인정보를 침해할 수 있습니다.

읽기 습관이나 출판물의 메타데이터(예: 접근성 선호)를 통해 사용자를 프로파일링하려는 시도는 사용자에게 의도치 않은 피해를 노출할 수 있습니다.

또한 [xml] 및 [zip] 파일에 적용되는 보안 고려사항은 각각 패키지 문서Open Container Format에도 적용됩니다. 자세한 내용은 application/oebps-package+xmlapplication/epub+zip 형식의 미디어 유형 등록에 있는 "Security Consideration" 섹션을 참조하십시오.

15.3 권장사항

읽기 시스템 개발자가 개인정보 보호를 위해 취할 수 있는 가장 강력한 조치는 사용자 및/또는 사용자의 읽기 행동에 대해 수집하고 사용하려는 데이터를 명시하고, 이를 얻기 위해 사용자의 동의를 구하는 것입니다. 또한 이 정보에 대한 개인화와 제어를 허용하는 것이 SHOULD 권장됩니다.

읽기 시스템이 사용자에게 영구 데이터를 저장하도록 허용하는 경우, 특히 개인 식별 정보를 저장하는 경우, 그 데이터를 민감한 것으로 취급하고 제3자의 접근을 허용하지 않는 것이 SHOULD 권장됩니다.

일부 사용자 데이터 수집은 EPUB 출판물의 판매, 전달 및 운영에 필요할 수 있으며, 특히 EPUB 출판물의 판매와 읽는 방법이 연결된 플랫폼에서는 그렇다는 점을 이해합니다. 이러한 경우, 읽기 시스템은 수집되는 데이터, 그 사용 방식, 그리고 사용자가 거부할 수 있는 방법을 식별하는 것이 SHOULD 권장됩니다(다만 소매업자는 사용자가 웹 사이트에서 계정을 만들 때와 같이 다른 수단으로 사용자에게 알리기로 선택할 수 있습니다). 수집된 모든 데이터의 익명화는 사용자와 읽기 시스템의 개인정보 보호 및 보안을 위해 RECOMMENDED됩니다.

또한 사용자 데이터가 일부 읽기 시스템 어포던스에 필요하거나 도움이 될 수 있다는 점도 이해합니다. 이러한 경우에도 익명화가 RECOMMENDED됩니다. 읽기 시스템은 또한 사용자에게 어떤 데이터가 필요한지, 무엇에 사용되는지 알리고, 거부할 방법을 제공하는 것이 SHOULD 권장됩니다.

콘텐츠 프로세서 — 배포, 표시 또는 판매를 위해 EPUB 콘텐츠의 수집을 처리하는 엔터티로 정의됨 — 도 수집 과정의 잠재적 위험을 인식해야 합니다. 콘텐츠 프로세서는 일반적으로 수행되는 검증 단계에 더해, 수집 시 콘텐츠에 악성 콘텐츠가 있는지 확인하는 것이 권장됩니다. 여기에는 바이러스 검사 실행, 외부 링크와 원격 리소스 검증, 기타 예방 조치가 포함될 수 있습니다.

XML 문서를 처리할 때, 읽기 시스템은 DOCTYPE, ENTITY 및 NOTATION 선언의 외부 식별자 [xml]를 해석해서는 SHOULD NOT 안 됩니다. 읽기 시스템은 또한 예를 들어 DoS 공격으로도 알려진 "Billion laughs attacks" 또는 "XML external entity attacks"와 같은 내부 또는 외부 XML 엔터티와 관련된 보안 위험도 SHOULD 고려해야 합니다.

참고

외부 링크, 네트워크 접근 및 스크립팅에 대한 추가 보안 권장사항은 각각 3.9 외부 링크, 3.8 네트워크 접근6.4.3 보안 고려사항에서 확인할 수 있습니다.

A. 지원되지 않는 기능

읽기 시스템폐기 예정 기능 [epub-33]을 MAY 지원할 수 있습니다.

참고

개발자는 폐기 예정 기능에 대한 새 지원을 추가하기 전에, 그러한 기능을 가진 콘텐츠를 마주칠 가능성이 낮다는 점을 고려해야 합니다.

B. epubReadingSystem 객체

참고

읽기 시스템은 EPUB 출판물의 핵심 렌더링 엔진으로 작동하며, [dom] 명세에 기반한 스크립팅 환경을 제공합니다. 따라서 이 인터페이스 정의가 읽기 시스템 구현을 위해 [webidl] 표기법을 사용하더라도, 웹 브라우저가 일반적으로 이러한 객체를 구현할 필요는 없습니다.

B.1 인터페이스 정의

이 명세는 Navigator 객체 [html]를 다음과 같이 확장합니다.

WebIDL[Exposed=(Window)]
interface EpubReadingSystem {
    boolean hasFeature(DOMString feature, optional DOMString version);
};

partial interface Navigator {
    [LegacyUnforgeable, SameObject] readonly attribute EpubReadingSystem epubReadingSystem;
};
참고

이 명세는 WorkerNavigator 객체 [html]에 대한 epubReadingSystem 속성 확장을 정의하지 않습니다. 따라서 읽기 시스템은 Workers의 스크립팅 맥락에서 epubReadingSystem 객체를 노출할 필요가 없으며, EPUB 작성자는 그 존재에 의존할 수 없습니다.

B.2 설명

Navigator.epubReadingSystem 객체는 스크립트 콘텐츠 문서가 사용자의 읽기 시스템에 대한 정보를 질의할 수 있는 인터페이스를 제공합니다.

읽기 시스템은 모든 로드된 스크립트 콘텐츠 문서의 navigator 객체에 epubReadingSystem 객체를 MUST 노출해야 하며, 여기에는 중첩된 컨테이너 제약 스크립팅 맥락 [epub-33]도 포함됩니다. 읽기 시스템은 DOMContentLoaded 이벤트가 트리거될 때 [html]까지는 epubReadingSystem 객체가 사용 가능하도록 MUST 보장해야 합니다.

참고

읽기 시스템 구현은 기술적 실현 가능성 때문에 스크립트 콘텐츠 문서 안에 epubReadingSystem 객체의 복제된 인스턴스를 만들 수 있습니다. 이러한 경우, 읽기 시스템은 그 속성과 메서드의 값에 반영된 객체 상태를 모든 복사된 인스턴스에서 일관되게 유지하도록 보장해야 합니다.

B.3 속성

이 명세는 예전에는 name, versionlayoutStyle 속성을 정의했지만, 이제 이들은 폐기 예정입니다 [epub-33]. 자세한 정보는 [epubcontentdocs-32]의 정의(nameversion에 대해)와 [epubcontentdocs-301]의 정의(layoutStyle에 대해)를 참조하십시오.

B.4 메서드

B.4.1 hasFeature

B.4.1.1 설명

hasFeature 메서드는 읽기 시스템이 지정된 기능의 어떤 버전이든 지원하는지 여부를 나타내는 boolean 값을 반환하거나, 읽기 시스템이 지정된 기능을 인식하지 못하는 경우 undefined를 반환합니다.

선택적 version 매개변수는 EPUB 작성자가 시간이 지남에 따라 호환되지 않는 방식으로 변경될 수 있는 사용자 정의 기능을 질의할 수 있게 합니다. 반환값은 지정된 기능 버전에 대한 지원만을 나타냅니다.

이 명세에서 정의된 기능은 버전이 없습니다. 읽기 시스템이 이 명세에서 정의된 기능을 지원하는 경우, 제공된 version 매개변수를 MUST 무시하고 true 값을 반환해야 합니다.

B.4.1.2 기능

다음 표는 epubReadingSystem 객체를 지원하는 읽기 시스템이 MUST 인식해야 하는 기능 집합을 나열합니다. 기능이 hasFeature 메서드에서 질의되면, 읽기 시스템은 해당 지원 여부를 나타내는 boolean 값을 MUST 반환해야 합니다.

이름 설명
dom-manipulation 스크립트가 문서의 DOM에 구조적 변경을 가할 수 있습니다(spine 수준 스크립팅 [epub-33]에만 적용).
layout-changes 스크립트가 콘텐츠 레이아웃에 영향을 주는 속성과 CSS 스타일을 수정할 수 있습니다 (spine 수준 스크립팅 [epub-33]에만 적용).
touch-events 장치가 터치 이벤트를 지원하며, 읽기 시스템이 터치 이벤트를 콘텐츠에 전달합니다.
mouse-events 장치가 마우스 이벤트를 지원하며, 읽기 시스템이 마우스 이벤트를 콘텐츠에 전달합니다.
keyboard-events 장치가 키보드 이벤트를 지원하며, 읽기 시스템이 키보드 이벤트를 콘텐츠에 전달합니다.
spine-scripting 읽기 시스템이 spine 수준 스크립팅 [epub-33]을 지원하는지 여부를 나타냅니다 (예: 컨테이너 제약 스크립트 [epub-33]가 최상위 콘텐츠 문서의 스크립팅 지원에 의존하는 동작을 시도하기 전에 성공 가능성이 있는지 판단할 수 있도록).

읽기 시스템 개발자는 추가 기능을 MAY 추가할 수 있지만, 이 명세의 향후 버전은 이러한 사용자 정의 추가 기능과 충돌하거나 호환되지 않을 수 있는 방식으로 이 목록에 추가할 수 있습니다.

C. 색인

C.1 이 명세에서 정의된 용어

C.2 참조로 정의된 용어

D. 변경 기록

이 섹션은 비규범입니다.

이 변경 기록은 EPUB 3.2 이후의 실질적 변경만 식별한다는 점에 유의하십시오 — 즉 EPUB 읽기 시스템의 적합성에 영향을 줄 수 있는 변경입니다.

처리된 모든 이슈 목록은 워킹 그룹의 이슈 트래커를 참조하십시오.

2023-05-25의 권고안 이후의 실질적 변경

실질적 변경은 없었습니다.

2022-05-12의 후보 권고안 이후의 실질적 변경
EPUB 3.2 이후의 실질적 변경

E. 감사의 말

이 섹션은 비규범입니다.

명세는 예술과 마찬가지로 인간의 창작물입니다. Garth Conboy만큼 EPUB에 많은 기여를 한 사람은 없습니다. 그는 1999년 최초의 OEB 1.0부터 오늘날의 EPUB 3.3까지 모든 단계에 함께했습니다. Garth의 비전, 지식, 그리고 비범하게 선한 성품이 없었다면 이 모든 것은 일어나지 않았을 것입니다. 우리는 EPUB 3.3을 그의 기억에 바칩니다. Garth, 우리는 영원히 당신에게 빚지고 있습니다.

EPUB 3 Working Group의 다음 구성원들이 이 명세의 개발에 기여했습니다:

F. 참고문헌

F.1 규범 참고문헌

[bidi]
Unicode Bidirectional Algorithm. Manish Goregaokar मनीष गोरेगांवकर; Robin Leroy. Unicode Consortium. 2024년 9월 2일. Unicode Standard Annex #9. URL: https://www.unicode.org/reports/tr9/tr9-50.html
[css-fonts-4]
CSS Fonts Module Level 4. Chris Lilley. W3C. 2024년 2월 1일. W3C Working Draft. URL: https://www.w3.org/TR/css-fonts-4/
[csssnapshot]
CSS Snapshot. URL: https://www.w3.org/TR/CSS/
[dcterms]
DCMI Metadata Terms. DCMI Usage Board. DCMI. 2020년 1월 20일. DCMI Recommendation. URL: https://www.dublincore.org/specifications/dublin-core/dcmi-terms/
[dom]
DOM Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://dom.spec.whatwg.org/
[epub-33]
EPUB 3.3. Ivan Herman; Matt Garrish; Dave Cramer. W3C. 2023년 5월 25일. W3C Recommendation. URL: https://www.w3.org/TR/epub-33/
[epubcontentdocs-301]
EPUB Content Documents 3.0.1. Markus Gylling; William McCoy; Elika J. Etimad; Matt Garrish. IDPF. 2014년 6월 26일. URL: https://idpf.org/epub/301/spec/epub-contentdocs-20140626.html
[epubcontentdocs-32]
EPUB Content Documents 3.2. Dave Cramer; Matt Garrish. W3C. 2019년 5월 8일. URL: https://www.w3.org/publishing/epub32/epub-contentdocs.html
[epubmediaoverlays-32]
EPUB Media Overlays 3.2. Marisa DeMeglio; Daniel Weck. EPUB 3 Community Group. 2019년 5월 8일. URL: https://www.w3.org/publishing/epub32/epub-mediaoverlays.html
[html]
HTML Standard. Anne van Kesteren; Domenic Denicola; Dominic Farolino; Ian Hickson; Philip Jägenstedt; Simon Pieters. WHATWG. Living Standard. URL: https://html.spec.whatwg.org/multipage/
[infra]
Infra Standard. Anne van Kesteren; Domenic Denicola. WHATWG. Living Standard. URL: https://infra.spec.whatwg.org/
[mathml3]
Mathematical Markup Language (MathML) Version 3.0 2nd Edition. David Carlisle; Patrick D F Ion; Robert R Miner. W3C. 2014년 4월 10일. W3C Recommendation. URL: https://www.w3.org/TR/MathML3/
[opentype]
OpenType specification. Microsoft. URL: http://www.microsoft.com/typography/otspec/default.htm
[rdfa-core]
RDFa Core 1.1 - Third Edition. Ben Adida; Mark Birbeck; Shane McCarron; Ivan Herman 외. W3C. 2015년 3월 17일. W3C Recommendation. URL: https://www.w3.org/TR/rdfa-core/
[rfc1951]
DEFLATE Compressed Data Format Specification version 1.3. P. Deutsch. IETF. 1996년 5월. Informational. URL: https://www.rfc-editor.org/rfc/rfc1951
[rfc2046]
Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types. N. Freed; N. Borenstein. IETF. 1996년 11월. Draft Standard. URL: https://www.rfc-editor.org/rfc/rfc2046
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. 1997년 3월. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[rfc2397]
The "data" URL scheme. L. Masinter. IETF. 1998년 8월. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc2397
[rfc8089]
The "file" URI Scheme. M. Kerwin. IETF. 2017년 2월. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc8089
[RFC8174]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. 2017년 5월. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174
[rfc9110]
HTTP Semantics. R. Fielding, Ed.; M. Nottingham, Ed.; J. Reschke, Ed.. IETF. 2022년 6월. Internet Standard. URL: https://httpwg.org/specs/rfc9110.html
[svg]
SVG. W3C. URL: https://www.w3.org/TR/SVG/
[truetype]
TrueType™ Reference Manual. Apple, Inc. URL: https://developer.apple.com/fonts/TrueType-Reference-Manual/
[url]
URL Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://url.spec.whatwg.org/
[w3cprocess]
W3C Process Document. URL: https://www.w3.org/Consortium/Process/
[webidl]
Web IDL Standard. Edgar Chen; Timothy Gu. WHATWG. Living Standard. URL: https://webidl.spec.whatwg.org/
[woff]
WOFF File Format 1.0. Jonathan Kew; Tal Leming; Erik van Blokland. W3C. 2012년 12월 13일. W3C Recommendation. URL: https://www.w3.org/TR/WOFF/
[woff2]
WOFF File Format 2.0. Vladimir Levantovsky. W3C. 2024년 8월 8일. W3C Recommendation. URL: https://www.w3.org/TR/WOFF2/
[xml]
Extensible Markup Language (XML) 1.0 (Fifth Edition). Tim Bray; Jean Paoli; Michael Sperberg-McQueen; Eve Maler; François Yergeau 외. W3C. 2008년 11월 26일. W3C Recommendation. URL: https://www.w3.org/TR/xml/
[xml-names]
Namespaces in XML 1.0 (Third Edition). Tim Bray; Dave Hollander; Andrew Layman; Richard Tobin; Henry Thompson 외. W3C. 2009년 12월 8일. W3C Recommendation. URL: https://www.w3.org/TR/xml-names/
[xmlenc-decrypt]
Decryption Transform for XML Signature. Merlin Hughes; Takeshi Imamura; Hiroshi Maruyama. W3C. 2002년 12월 10일. W3C Recommendation. URL: https://www.w3.org/TR/xmlenc-decrypt/
[zip]
.ZIP File Format Specification. 2020년 7월 15일. Final. URL: https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT

F.2 정보 참고문헌

[css2]
Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. Bert Bos; Tantek Çelik; Ian Hickson; Håkon Wium Lie. W3C. 2011년 6월 7일. W3C Recommendation. URL: https://www.w3.org/TR/CSS21/
[epub-tts-10]
EPUB 3 Text-to-Speech Enhancements 1.0. Matt Garrish. W3C. 2023년 12월 21일. W3C Working Group Note. URL: https://www.w3.org/TR/epub-tts-10/
[epubpackages-32]
EPUB Packages 3.2. Matt Garrish; Dave Cramer. EPUB 3 Community Group. 2019년 5월 8일. URL: https://www.w3.org/publishing/epub32/epub-packages.html
[h264]
H.264 : Advanced video coding for generic audiovisual services. 2017-04-13. URL: https://www.itu.int/ITU-T/recommendations/rec.aspx?rec=13189
[indexeddb]
Indexed Database API. Nikunj Mehta; Jonas Sicking; Eliot Graff; Andrei Popescu; Jeremy Orlow; Joshua Bell. W3C. 2015년 1월 8일. W3C Recommendation. URL: https://www.w3.org/TR/IndexedDB/
[rfc6386]
VP8 Data Format and Decoding Guide. J. Bankoski; J. Koleszar; L. Quillio; J. Salonen; P. Wilkins; Y. Xu. IETF. 2011년 11월. Informational. URL: https://www.rfc-editor.org/rfc/rfc6386
[uaag20]
User Agent Accessibility Guidelines (UAAG) 2.0. James Allan; Greg Lowney; Kimberly Patch; Jeanne F Spellman. W3C. 2015년 12월 15일. W3C Working Group Note. URL: https://www.w3.org/TR/UAAG20/
[wai-aria-11]
Accessible Rich Internet Applications (WAI-ARIA) 1.1. Joanmarie Diggs; Shane McCarron; Michael Cooper; Richard Schwerdtfeger; James Craig. W3C. 2017년 12월 14일. W3C Recommendation. URL: https://www.w3.org/TR/wai-aria-1.1/