Kobo와 Adobe RMSDK: 왜 유효한 EPUB가 전자책 단말기에서 실패하는가
현대적 CSS가 유효한 EPUB 파일에서 조용한 실패를 유발할 수 있습니다
업계 표준인 epubcheck 검증을 통과한 EPUB 파일이라도 Kobo 전자책 단말기에서는 "corrupted" (손상됨) 상태로 보고될 수 있습니다. 이는 Kobo가 Adobe의 독점적인 RMSDK (Reader Mobile Software Development Kit) 렌더링 엔진을 사용하기 때문이며, 이 엔진은 현대적인 CSS 사양을 지원하지 않습니다. RMSDK가 CSS Level 4의 min() 함수와 같이 인식하지 못하는 CSS 속성이나 함수를 만나면, 지원되지 않는 스타일을 무시하는 대신 책 전체의 렌더링에 조용히 실패할 수 있습니다.
근본 원인: Adobe RMSDK의 레거시 CSS 파서
epubcheck는 EPUB가 International Digital Publishing Forum (IDPF) 규칙에 따라 잘 구성되었는지 확인하지만, 모든 독점 렌더러의 특정 제한 사항에 대해 CSS를 검증하지는 않습니다.
기록된 사례에 따르면, epubcheck 규칙 세트 3.3을 통과한 도서가 여러 Kobo 기기에서 로드에 실패했습니다. 원인은 단 한 줄의 CSS였습니다:
.copyright img {
max-width: min(150px, 30vw);
}
이 현대적인 CSS 함수를 정적 값(max-width: 150px;)으로 교체하여 문제를 해결했습니다. RMSDK 엔진의 CSS 파서는 사실상 2013년 시대에 멈춰 있으며, 다음과 같은 기능을 지원하지 않습니다:
- Flexbox
- CSS Grid
- Math functions (예:
min(),max(),clamp()) - Custom properties (CSS variables)
"손상된 파일"이라는 오류의 오류
RMSDK가 충돌을 유발하는 지원되지 않는 CSS를 만나면, 사용자 인터페이스는 종종 파일을 "corrupted" (손상됨)라고 보고합니다. 이는 오해의 소지가 있는 오류 메시지입니다. 파일은 구조적으로 건전하고 개방형 표준에 따라 유효하지만, 렌더링 엔진이 스타일시트를 처리할 수 없는 것입니다. Adobe Digital Editions (ADE)—RMSDK의 내부 구조를 공유하는—가 종종 특정 오류 로그를 제공하지 않고 조용히 실패하기 때문에, 이러한 문제를 디버깅하려면 스타일시트를 완전히 비활성화하여 문제를 격리하는 것과 같은 지루한 소거법 과정이이 필요합니다.
업계 관점 및 해결 방법
출판사와 개발자들 사이의 기술적 논의는 개방형 표준과 독점적인 DRM 중심 엔진 사이의 체계적인 긴장 관계를 강조합니다.
렌더링 대안 및 도구
- KoReader: Kobo 기기에서 기본 Adobe 기반 엔진을 우회회하기 위해 설치할 수 있는 인기 있는 오픈 소스 대안 렌더러입니다.
- Kepubify: 표준 EPUB를
.kepub.epub파일로 변환하는 도구로, 일부 사용자는 이것이 Kobo 기기에서 더 발전된 렌더링 경로를 사용할 수 있다고 제안합니다. - Basic HTML/CSS: 일부 개발자들은 모든 레거시 기기에서의 최대 호환성을 보장하기 위해 (초기 웹의 IE6를 타겟팅하는 것과 유사하게) "최저 공통 분모"를 타겟팅할 것을 권장합니다.
EPUB 표준의 상태
비평가들은 EPUB 유지 관리가 W3C로 이전됨에 따라 "living standards" (예: WHATWG HTML)에 대한 의존도가 높아졌다고 지적합니다. 이는 웹 표준의ing의 타겟이 계속 변하는 상황에서 파일이 "valid" (유효) 하다고 해도, 최신 웹 브라우저만큼 자주 업데이트되지 않는 e-ink 기기에서 완전히 읽을 수 없는 상태를가 될 수 있습니다.
시장 변화
최근 보고에 따르면 Adobe Digital Editions와 RMSDK는 Wipro Engineering에 매각되었습니다. 또한, 일부 사용자는 Kobo가 EU에서 전자책 단말기 소프트웨어의 완전한 재작성(beta-test)을 진행 중이라고 보고하고 있으며, 이는 마침내 플랫폼이 노후화된 RMSDK 엔진에 대한 의존성을 탈피할 수 있게 해줄 수도 있습니다.