기타 Lobsters · 2일 전

"웹 기술로 전자책 만든다며?" 까보면 XHTML 지옥인 ePub의 현실

핵심 요약
  • 전자책 표준인 ePub은 웹 기반 기술로 보이지만 실제로는 엄격한 XML 문법을 요구하는 XHTML 체계로 작동합니다.
  • 전자책 단말기들의 구형 렌더링 엔진과 네임스페이스 규칙 때문에 일반 웹 CSS나 SVG 등을 그대로 쓰기 어렵습니다.
  • 대신 ePub 고유의 네임스페이스와 어휘를 통해 전자책 특화 주석 모달 같은 기능들을 구현할 수 있습니다.
요약 웹 개발자들에게는 친숙한 전자책 표준 포맷 ePub이지만, 실제로 책을 제작해 보면 웹 브라우저 환경과는 전혀 다른 세계를 마주하게 됩니다. 겉으로는 우리가 매일 다루는 HTML과 CSS로 문서를 구성하는 것처럼 보이지만, 그 바탕에는 과거 웹에서 사실상 퇴출당했던 XHTML이 굳건히 자리 잡고 있기 때문입니다. 과거 웹 환경에서는 사소한 문법 오류에도 흰 페이지만 뜨는 치명적인 취약점과 브라우저 지원 문제로 인해 XHTML이 자취를 감추었습니다. 하지만 전자책 표준인 ePub은 엄격한 XML 문법 체계를 고수하고 있어, 태그 닫기 누락이나 네임스페이스 오류가 발생하면 전자책 리더기에서 에러를 뿜어냅니다. CSS 사용 환경 역시 현대 브라우저와는 큰 격차가 있습니다. 전자책 단말기는 전력 소모를 극도로 줄인 저사양 기기인 경우가 많고, 기기 교체 주기가 10년이 넘는 경우도 흔해 렌더링 엔진 자체가 매우 구형입니다. 따라서 최신 CSS 가상 클래스인 :is()는 고사하고 :not()조차 호환성을 담보하기 어려워 주의가 필요합니다. 또한 XML 네임스페이스 기반으로 작성된 속성을 CSS로 스타일링하려면 @namespace 선언과 파이프(|) 구분자를 명시해야 합니다. 수식(MathML)이나 벡터 그래픽(SVG) 삽입 방식도 일반 HTML5와 다릅니다. 일반 웹에서는 태그만 넣으면 알아서 인식되지만, ePub 내부의 XHTML 문서에서는 루트 요소에 해당 네임스페이스를 선언하고 접두사(예: m:math, svg:svg)를 붙여야 온전히 작동합니다. 반면 ePub 표준만의 강점도 존재하는데, W3C의 ePub 명세에서 제공하는 epub:type 속성을 사용하면 전자책에 특화된 미주(endnote) 링크를 팝업 모달 형태로 띄워 본문 읽기를 방해하지 않고 주석을 확인하게 만드는 등 독특한 인터랙션을 구현할 수 있습니다.
Sponsored · 광고