Hãy bắt đầu bằng việc làm thử. Nếu có sẵn một tệp EPUB, chỉ cần thế này thôi.
.epub thành .zip Xong. Không cần phần mềm đặc biệt nào. EPUB là một tệp ZIP, nên nó bung ra mà chẳng buồn cảnh báo lấy một câu.
Bạn có thể nghĩ "nếu giải nén được thì nén một thư mục rồi đổi tên thành .epub sẽ ra một tệp EPUB". Không đơn giản vậy, là vì các quy tắc về cách nó phải được nén được nói tới trong phần sau.
Sau khi bung ra, nó thường trông thế này.
OEBPS — cái tên thư mục đó, và cách mọi thứ được chia bên trong nó, thay đổi tùy công cụ đã dựng ra nó. Nó có thể là item hoặc xhtml thay vào đó, và như vậy cũng chẳng sao.
Thứ bạn không được đổi, cả tên lẫn vị trí, là mimetype ở ngay đầu và META-INF/container.xml . Hai thứ đó là cố định còn mọi thứ khác thì tự do — đó là bước một để hiểu cấu trúc.
Nội dung của nó chỉ là một dòng.
Việc của nó là tuyên bố "tệp ZIP này là một tệp EPUB". Nhưng nó đi kèm những quy tắc khắt khe mà không tệp nào khác có.
Một ứng dụng đọc có thể quyết định "đây là EPUB" chỉ bằng cách đọc vài byte đầu của tệp. Chính vì thế mà vị trí và hình thức của nó bị đóng đinh.
Nén một thư mục bằng công cụ thông thường thì bạn không chọn được thứ tự tệp, và mimetype bị nén chung với tất cả những thứ còn lại. Kết quả: bạn đổi tên nó thành .epub và các ứng dụng đọc không mở nổi.
Thỏa mãn điều kiện "đầu tiên, không nén" nghĩa là phải chạy việc nén thành hai bước tách biệt. Đó là việc đầu tiên nhất mà một công cụ dựng EPUB làm.
META-INF/container.xml trông như thế này.
Nó làm đúng một việc: nó nói "thông tin sách nằm trong OEBPS/content.opf ".
Nhờ tấm biển đó mà tên thư mục mới được tự do. Một ứng dụng đọc nhìn vào META-INF/container.xml trước rồi đi tới bất cứ đâu nó chỉ.
Đây là tệp quan trọng nhất trong một tệp EPUB. Nó chia làm ba phần.
| Phần | Việc của nó |
|---|---|
| metadata | Tên sách, tác giả, ngôn ngữ — thông tin của chính cuốn sách |
| manifest | Danh sách mọi tệp có mặt |
| spine | Thứ tự lật trang |
Thứ cần để mắt tới là dc:title . Cái hiện trên kệ của một ứng dụng đọc chính là giá trị này, không phải tên tệp. Bạn có đặt tên tệp cẩn thận tới đâu, nếu chỗ này để trống thì kệ sách hiện ra "Untitled".
dc:language cũng quan trọng. Hãy điền vi cho tiếng Việt, ja cho tiếng Nhật. Không có nó, một ứng dụng đọc có thể không áp dụng các quy tắc dàn chữ của ngôn ngữ — điều gây hậu quả nặng nhất với tiếng Nhật.
Mọi tệp trong tệp EPUB đều phải được khai báo ở đây. Thêm một tấm ảnh rồi quên khai báo, riêng chuyện đó đã là một lỗi. Chiều ngược lại — đã khai báo nhưng thực tế không có — cũng là lỗi.
Tệp mục lục được đánh dấu bằng properties="nav" , đó là cách nó nói "tệp này là mục lục".
manifest là danh sách những gì có bên trong; còn spine là thứ tự đọc chúng. Thứ tự ở đây trở thành thứ tự trang.
Và phần quan trọng nhất với một cuốn sách tiếng Nhật là page-progression-direction .
| Giá trị | Ý nghĩa | Sách dùng nó |
|---|---|---|
| rtl | Tiến từ phải sang trái | Chữ dọc, manga |
| ltr | Tiến từ trái sang phải | Chữ ngang |
Bỏ sót nó trong một cuốn sách dàn chữ dọc và trang sẽ lật ngược chiều. Đó là một trong những thứ đầu tiên cần kiểm tra khi chữ dọc không chạy đúng.
EPUB 3 luôn đòi mục lục phải là một tệp riêng. Nó trông như một danh sách liên kết HTML bình thường, được phân biệt bằng dấu hiệu epub:type="toc" .
Đây là thứ hiện ra khi người đọc bấm nút mục lục. Nếu thiếu một tệp được liên kết tới, bạn có một cuốn sách không thể di chuyển bên trong.
Ở EPUB 2 cũ, một tệp tên là toc.ncx đảm nhiệm việc của mục lục. EPUB 3 đã thay nó bằng nav.xhtml , nhưng một số tệp EPUB vẫn kèm cả hai để các ứng dụng đọc cũ còn chạy được.
Từ đây trở đi thì gần như y hệt một trang web.
Chia phần chữ ra sao là tùy bạn, nhưng một tệp quá lớn sẽ khiến ứng dụng đọc trở nên ì ạch, nên chia theo chương là chuyện thường tình.
Như bạn đã thấy, cấu trúc của một tệp EPUB không hề phức tạp. Chữ, ảnh và các chỉ dẫn thiết kế được gói vào một chiếc hộp cùng một tấm biển chỉ đường và một bản danh sách — chỉ có thế.
Tuy vậy những quy tắc phải tuân theo thì lại rất tủn mủn.
mimetype nằm đầu tiên, không nénmanifest spine Thiếu một cái là sách không mở được, hoặc bị trả về khi nộp lên cửa hàng. Mà nguyên nhân của lỗi thì thường không nhìn ra được từ những gì hiện trên màn hình.
Cho nên trong sản xuất thực tế người ta dùng một công cụ lắp ráp cấu trúc từ một bản thảo hoặc từ ảnh. Dù vậy, từng nhìn vào bên trong một lần nghĩa là bạn có thể đoán được phải xem ở đâu khi có gì đó trục trặc — và đó chính là mục đích của bài này.
EPUB FACTORY tự động dựng mọi phần của cấu trúc được mô tả ở đây. Chỉ cần chọn một thư mục ảnh hoặc một bản thảo văn bản. Không cần tài khoản, không cần cài đặt.
Dùng thử EPUB FACTORY