เริ่มจากลงมือทำเลย ถ้ามีไฟล์ 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 ก็สำคัญเหมือนกัน ให้ใส่ th สำหรับภาษาไทย และ 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