- 검증을 통과한 DRM 없는 EPUB도 Kobo에서는 “corrupted”로 처리될 수 있으며, 문제는 파일 형식 오류가 아니라 렌더링 엔진 호환성에서 발생함
- epubcheck는 EPUB 구조와 규칙 준수 여부를 확인하는 사실상 표준 검증 도구지만, 특정 렌더러의 오래된 CSS 파서 문제까지 잡아내지는 못함
- Kobo는 Adobe의 독점 전자책 렌더링 엔진인 RMSDK를 사용하며, 이 엔진은 EPUB2 기반으로 만들어진 뒤 EPUB3용으로 가볍게 갱신됐지만 현대화되지 않았음
- 문제의 원인은 max-width: min(150px, 30vw); 한 줄이었고, 이 유효한 CSS level 4 코드는 RMSDK에서 지원되지 않아 Adobe Digital Editions와 Kobo에서 책 로딩 실패를 일으킴
- Kobo 호환성을 확인하려면 epubcheck만으로는 부족하며, Adobe Digital Editions에서 실제로 열어보는 추가 검증이 필요함
epubcheck를 통과한 EPUB에서 시작된 문제
- Adobe 도구는 Creative Suite가 업계 표준이거나 대안이 부족해 사용되는 경우가 많으며, 이 글의 문제의식은 Adobe 소프트웨어에 대한 불만에서 출발함
- 새 책은 독자에게 직접 제공되는 DRM 없는 EPUB 파일로 배포됐고, 배포 전 여러 과정을 거쳐 epubcheck 검사를 통과함
- epubcheck는 잘 구성된 전자책을 확인하는 사실상 표준 도구이며, manifest가 책 안의 조각과 이미지를 빠짐없이 반영해야 통과함
- HTML 요소 순서가 맞지 않거나 International Digital Publishing Forum의 규칙에서 조금만 벗어나도 검증에 실패함
- epubcheck를 100% 통과시키는 일은 초보자에게 쉽지 않지만, 출판 작업자에게는 타입 린터나 형식적 테스트 스위트에 가까운 역할을 함
- 원래 기대는 epubcheck를 통과한 책이 EPUB 호환 리더나 앱 어디서나 작동하는 것임
Kobo에서만 “corrupted”가 발생함
- 새 책은 epubcheck ruleset 3.3을 통과했지만, 한 독자에게서 “corrupted”라는 메시지가 발생함
- 하위 호환성 가능성을 확인하기 위해 EPUB2 버전도 제공했지만, 그 파일도 규칙을 완전히 준수했음에도 같은 문제가 발생함
- 해당 독자는 여러 세대의 Kobo 기기에서 책이 열리지 않는다고 전함
- 같은 EPUB은 Amazon Kindle, Apple Books, Thorium 등 다른 환경에서는 문제없이 작동함
- 조사 결과 Kobo는 Adobe의 독점 전자책 렌더링 엔진인 RMSDK를 사용함
RMSDK와 Adobe Digital Editions로 좁혀진 원인
- RMSDK는 Adobe Digital Editions의 핵심 엔진이며, 여러 Kobo 기기와 구형 Sony·Nook 기기에서도 쓰임
- 이 엔진은 2010년 무렵 EPUB2를 중심으로 만들어졌고, EPUB3용으로 가볍게 갱신됐지만 현대화되지는 않았음
- RMSDK 사용 사실은 epubcheck와 Kobo 결과가 엇갈리는 문제를 곧바로 해결하지는 못했지만, 디버깅 방향을 제공함
- Adobe Digital Editions에 책을 넣자 예상대로 로딩에 실패했으며, 오류 메시지도 나타나지 않음
- 다시 불러오려 하면 이미 추가한 책이라 가져올 수 없다는 메시지가 나왔지만, 화면은 흰색으로 남아 있었음
- 이후 여러 변형 파일을 만들며 테스트했고, 모든 변형은 계속 epubcheck를 통과함
- 폴더 구조 재배치, 메타데이터 제거, 언어 속성 제거, 새 UUID 생성, 디렉터리 평탄화, 확장자 변경, ZIP 재생성, manifest 변경을 시도함
- 이 모든 시도에도 Adobe Digital Editions 로딩 실패는 반복됨
실제 원인: 유효한 CSS 한 줄
- 스타일시트를 비활성화하자 책이 갑자기 로딩되면서, 문제 범위가 스타일시트로 좁혀짐
- 스타일시트 일부만 적용한 여러 변형을 더 만든 끝에 문제를 일으키는 한 줄이 확인됨
.copyright img {
max-width: min(150px, 30vw);
}
- 해당 코드는 완전히 유효한 CSS level 4 코드지만, RMSDK는 이를 지원하지 못함
- 코드를 더 오래된 방식인 max-width: 150px;로 바꾸자 Adobe Digital Editions에서 책이 정상적으로 열림
- RMSDK의 CSS 파서는 대략 2013년 상태에 머물러 있으며, flexbox, grid, 수학 함수, 사용자 지정 속성을 지원하지 않음
- 인식하지 못하는 CSS를 만나면 폴백이나 명확한 오류 대신 조용히 충돌함
- epubcheck는 기본적인 CSS 검사를 수행하지만, 근본적으로 망가진 특정 렌더러에 맞춰 CSS를 검증할 수는 없음
Kobo 호환성 검증의 교훈
- 2026년에도 Kobo가 책 렌더링의 기반으로 RMSDK를 사용하면서, 유효한 CSS 한 줄이 유효한 EPUB 전체를 “corrupted file”로 만들 수 있음
- 이 경우 Kobo는 명확한 오류 메시지나 폴백 없이 책 전체를 열지 못함
- 문제를 피하기 위해 새 버전이 배포됐고, 독자들이 같은 오류를 다시 겪지 않도록 조치됨
- 이상적인 환경이라면 RMSDK가 CSS 구식 상태에서 벗어나거나 최소한 오류 처리를 제공해야 하지만, 현재 문제는 그대로 남아 있음
- Kobo 호환성을 확실히 하려면 epubcheck만으로는 부족하며, Adobe Digital Editions에서 실제 로딩 여부를 확인해야 함
- EPUB은 전자책을 위한 훌륭한 개방형 표준이지만, 많은 구현은 접근 제한을 우선하는 구조 속에서 근본적인 결함을 드러냄