먼저 해 보는 것부터 시작합시다. EPUB 파일이 하나 있다면 이것만 하면 됩니다.
.epub 에서 .zip 으로 바꾼다끝입니다. 특별한 소프트웨어는 필요 없습니다. EPUB은 ZIP이므로 경고 한 줄 없이 풀립니다.
"압축이 풀린다면, 폴더를 압축해서 이름을 .epub 으로 바꾸면 EPUB이 되겠네"라고 생각할 수 있습니다. 그렇게 간단하지 않습니다. 다음 절에서 설명할 압축 방식에 관한 규칙 때문입니다.
압축을 풀면 대체로 이런 모습입니다.
OEBPS — 이 폴더 이름과 그 안을 나누는 방식은 만든 도구에 따라 다릅니다. item 이나 xhtml 일 수도 있고, 그래도 괜찮습니다.
이름도 위치도 바꿀 수 없는 것은 mimetype 이 맨 앞에 있어야 한다는 것, 그리고 META-INF/container.xml 입니다. 이 둘은 고정이고 나머지는 자유롭다 — 이것이 구조를 이해하는 첫걸음입니다.
내용은 단 한 줄입니다.
하는 일은 "이 ZIP은 EPUB이다"라고 선언하는 것입니다. 다만 다른 파일에는 없는 엄격한 규칙이 따라붙습니다.
뷰어 앱은 파일의 첫 몇 바이트만 읽고 "이것은 EPUB이다"라고 판단할 수 있습니다. 위치와 형태가 못 박혀 있는 것은 그 때문입니다.
폴더를 일반 압축 도구로 묶으면 파일 순서를 고를 수 없고, mimetype 도 나머지와 함께 압축됩니다. 그 결과, 이름을 .epub 으로 바꿔도 뷰어 앱이 열지 못합니다.
"맨 앞에, 무압축으로"라는 조건을 만족시키려면 압축을 두 단계로 나눠서 돌려야 합니다. EPUB 생성 도구가 가장 먼저 하는 일이 바로 이것입니다.
META-INF/container.xml 은 이렇게 생겼습니다.
하는 일은 딱 하나입니다. "책의 정보는 OEBPS/content.opf 에 있다"고 알려 줍니다.
이 이정표가 있기에 폴더 이름이 자유로울 수 있습니다. 뷰어 앱은 META-INF/container.xml 을 먼저 보고, 그것이 가리키는 곳으로 갑니다.
EPUB에서 가장 중요한 파일입니다. 세 부분으로 나뉩니다.
| 부분 | 하는 일 |
|---|---|
| metadata | 제목·저자·언어 등 책 자체의 정보 |
| manifest | 수록된 모든 파일의 목록 |
| spine | 쪽을 넘기는 순서 |
눈여겨볼 것은 dc:title 입니다. 뷰어 앱의 책장에 표시되는 것은 파일 이름이 아니라 이 값입니다. 파일 이름을 아무리 정성껏 붙여도, 이것이 비어 있으면 책장에는 "Untitled"라고 뜹니다.
dc:language 도 중요합니다. 한국어라면 ko , 일본어라면 ja를 넣습니다. 이것이 없으면 뷰어 앱이 그 언어의 조판 규칙을 적용하지 않을 수 있는데, 그 영향이 가장 크게 나타나는 것이 일본어입니다.
EPUB 안의 모든 파일은 여기에 등록해야 합니다. 이미지 한 장을 추가하고 등록을 잊는 것만으로 오류가 납니다. 반대로 등록은 되어 있는데 실제로는 없는 경우도 오류입니다.
목차 파일에는 properties="nav" 가 붙어서 "이 파일이 목차다"라고 알립니다.
manifest 가 안에 무엇이 있는지의 목록이라면, spine 은 어떤 순서로 읽는지입니다. 여기의 순서가 그대로 쪽 순서가 됩니다.
그리고 일본어 책에서 가장 중요한 부분이 page-progression-direction 입니다.
| 값 | 의미 | 쓰는 책 |
|---|---|---|
| rtl | 오른쪽에서 왼쪽으로 나아간다 | 세로쓰기, 만화 |
| ltr | 왼쪽에서 오른쪽으로 나아간다 | 가로쓰기 |
세로쓰기 책에서 이것을 빠뜨리면 쪽이 반대로 넘어갑니다. 세로쓰기가 제대로 되지 않을 때 가장 먼저 확인할 것 중 하나입니다.
EPUB 3은 목차를 반드시 독립된 파일로 요구합니다. 겉보기에는 평범한 HTML 링크 목록이고, epub:type="toc" 라는 표시로 구분됩니다.
독자가 목차 버튼을 누르면 나오는 것이 이것입니다. 링크된 파일이 없으면 이동할 수 없는 책이 됩니다.
옛 EPUB 2에서는 toc.ncx 라는 파일이 목차 역할을 했습니다. EPUB 3은 이를 nav.xhtml 로 대체했지만, 오래된 뷰어 앱에서도 동작하도록 둘 다 넣은 EPUB도 있습니다.
여기서부터는 웹페이지와 거의 같습니다.
본문을 어떻게 나눌지는 자유지만, 한 파일이 너무 크면 뷰어 앱이 굼떠지므로 장 단위로 나누는 것이 보통입니다.
보셨듯 EPUB의 구조는 복잡하지 않습니다. 글과 이미지와 디자인 지시를, 이정표와 목록과 함께 상자에 담은 것 — 그게 전부입니다.
다만 지켜야 할 규칙이 자잘합니다.
mimetype 이 맨 앞에 무압축으로 들어간다manifest 에 등록되어 있다spine 에 올바르게 지정되어 있다하나라도 빠지면 책이 열리지 않거나 서점 제출에서 반려됩니다. 게다가 오류의 원인은 화면에 보이는 것만으로는 대개 알 수 없습니다.
그래서 실제 제작에서는 원고나 이미지로 구조를 조립해 주는 도구를 씁니다. 그래도 한 번 속을 들여다본 적이 있으면 무언가 잘못됐을 때 어디를 볼지 짐작할 수 있습니다 — 이 글의 목적이 바로 그것입니다.
EPUB FACTORY는 여기서 설명한 구조를 전부 자동으로 만듭니다. 이미지 폴더나 텍스트 원고를 고르기만 하면 됩니다. 가입도, 설치도 필요 없습니다.
EPUB FACTORY 사용해 보기