Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Open Standards in the Walled Garden

Slides from Digital Bindery's O'Reilly Media's Tools of Change for Publishing talk in February 2013

  • Be the first to comment

Open Standards in the Walled Garden

  1. 1. Tom McCluskey @TomMcCluskey Amanda Gomm @agomm Digital Bindery
  2. 2. • Metadata• Navigation• Semantics• Presentation
  3. 3. I’m So Meta, Even This Acronym. -xkcd
  4. 4. ContainerPublicationStructure Content
  5. 5. ContainerPublicationStructure Content
  6. 6. • identifier• title• language• meta property=“dcterms:modified”
  7. 7. • Contributor• Coverage• Creator• Date• Description• Format• Publisher• Relation• Rights• Source• Subject• Type
  8. 8. • Title – title-type (main, subtitle, edition, short, etc.) – display-sequence• Creator – role (author, illustrator, editor, etc.) – display-sequence
  9. 9. PagelistNonlinear Table of content Contents
  10. 10. The main way for readers to get around your ebook• Lists all the main content documents• Basic functionality universally supported• Two different but compatible formats for epub 2.0.1 and epub 3• Great! No problems then, right? Well…
  11. 11. •Nook won’t nest at all•Kobo Arc only goes 3 levels deep (sub-sub-items)
  12. 12. Good navigation is critical!• Consider not nesting at all• If nesting is critical, try to ensure that the top level items are usefully granular• Include a toc.xhtml in your Table of Contents• Top level items can link to pages that break down the content in finer detail• If you’re not worried about nook eInk or Kobo Arc, nest away!
  13. 13. Lets you hide content from readers! Wait, what? Why?• Books in which there is an adventure that you choose• Footnotes• Covers• Any ancillary content
  14. 14. Most reading systems will blissfully ignore yourlinear=“no”•Readium fully supports nonlinear <spine>content•iBooks does, but displays content on one longscrolling screen, like an image •potentially useful for big tables
  15. 15. The sad truth is that linear=“no” is not wellsupported• Don’t count on it to work unless you’re designing specifically for iBooks (or Readium)• Keep nonlinear content together (perhaps nested under, eg, “Endnotes”)• For Gamebooks, accept that some people will just read through all the possible endings
  16. 16. Allows you to embed the location of print page breaksinto your epub• Lets you keep all those references to “the table on page 27”• Makes life easier for people trying to compare notes between print and ebook
  17. 17. Again, support is minimal:• Readium will make use of your <nav epub:type=“page-list”>• iBooks gives an option to display print page number• Nobody else will.• Dang.
  18. 18. You can always include the pagelist; it doesn’t hurt anything• You’ll still have to check your content for page references after all • Just as well, they should be hyperlinks anyway• Make sure to use display: none for the list • Hidden=“hidden” only works on iBooks, Readium, Kobo Arc, and Kobo for iOS
  19. 19. <nav id=“pagelist” epub:type="page-list" hidden=""><h2>Page List</h2><ol><li><a href="02-frontmatter.xhtml#page1">1</a></li><li><a href="03-chapter1.xhtml#page2">2</a></li></ol></nav>nav#pagelist h2, nav#pagelist ol {display:none;}
  20. 20. There are only two things in the world: nothing and semantics. ―Werner Erhard
  21. 21. 1. Accessibility2. Publisher Style Overrides Management3. Sorting, searching, indexing, optimizing, background computer-y stuff (think SEO)4. Super Killer Amazing Futuristic Functionality (SKAFF™)
  22. 22. •body, article, section, nav, aside, h1-h6, hgroup, header, footer, addressSections •p, hr, pre, blockquote, ol, ul, li, dl, dt, dd, figure, figcaption, div, mainGrouping •a, em, strong, small, s, cite, q, dfn, abbr, time, code, var, samp, kbd, sub, sup, I, b, u, mark, ruby, rt, rp, bdi, bdo, span, br, wbrText Level
  23. 23. • body, article, section, nav, aside, h1-h6, hgroup, header,Sections footer, addressWell, they don’t break it.
  24. 24. • p, hr, pre, blockquote, ol, ul, li, dl, dt, dd, figure, figcaptionGrouping , div, mainWell, they don’t break it. mostly main
  25. 25. • a, em, strong, small, s, cite, q, dfn, abbr, time, code, var, samp, kbd, sub, sup, I, b, u, mark, ruby, rt, rp, bdi, bdo,Text Level span, br, wbr Super Reliable: • a, b, strong, em, I, small, s, cite, var, u, sup, sub Reliable within acceptable parameters: • code, samp, kbd Meh: • mark, bdo, q, dfn I’m sorry, did you say something?: • abbr, time
  26. 26. • It doesn’t appear to break things.• Some epub:types are required for EPUB3 validation/navigation• Eventual accessibility or SKAFF? – epub:type=“footnote” looks cool on the iPad…• It would be trivial to add most of them and there are always interns to add the rest (topic- sentence tagging for college credit?)
  27. 27. Whoever controls the media, controls the mind. ― Jim Morrison
  28. 28. CSS3 in CSS2
  29. 29. Target CSS2 and 3 devices separately whenneededProgressive Enhancement as reading systemsadopt CSS3 functionality
  30. 30. In the XHTML:<link href=“css2-stylesheet.css” rel=“stylesheet” type=“text/css”/><link href=“css3-stylesheet.css” rel=“stylesheet” type=“text/css”/>In the CSS3:@media only all {
  31. 31. • Orientation (portrait, landscape)• Color (alone or min/max)• Width/Height (min/max, device)• Aspect Ratio (min/max, device—changes with orientation sometimes)• Unreliable queries – Resolution – Monochrome – Color-index
  32. 32. • Unsupported (but not broken)• CSS3 media queries for orientation are a viable option• Test books on devices with night-reading mode – Check images, transparency can be a good or bad thing – If you declare font color to be black, it will disappear in night vision on some readers
  33. 33. Between CSS 2 & 3, there are lots of neat hyphenation options:• Turning off hyphenation completely (great for headers)• Manual hyphenation for non-standard words• Restriction of hyphenation to eliminate ladders• Use a new character as a hyphen (&, anybody?)• Require a certain number of letters before or after hyphens
  34. 34. • CSS 3 (hyphenate-before, -after, -line, -character) No! • Hyphens: none, or –webkit, -moz, and adobe variants Yes! • Hyphens:manual(­) • Soft hyphens on Nook and Kobo Arc aren’t formattedKinda! right. They (and Readium) will not auto hyphenate.
  35. 35. There aren’t many options:•If you don’t want hyphens, use {hyphens: none;-webkit-hyphens: none; -moz-hyphens:none; adobe-hyphenate: none;}•Avoid soft hyphens unless you’re targeting onlydevices that you know render them well•Sigh quietly and wish CSS 3 hyphenate- propertieswere supported
  36. 36. There’s some neat new CSS 3 stuff here as well:• Text-align: start and end instead of left and right• Text-align-last to control the final line of a paragraph• Text-align: match parent to ensure consistency and flexibility• The old standards: left, right, center, justify
  37. 37. The good news is, the old standards work!• Left, right, center, and justify are supported just about everywhere• Start, end, and match parent are supported on iBooks, Kobo Arc, Kobo for iOS, and Readium• Nobody supports text-align-last
  38. 38. Things here are mostly OK:• The basics work everywhere, so if you stick with them you’ll be set across the board• The lack of consistent support for start and end means that if you’re doing multilingual texts, you’ll have to pay a little more attention• No support for text-align-last takes away a cool typographical option, but it’s not make-or-break• Once people realize that ebooks shouldn’t be justified, we’ll all be much happier
  39. 39. Can be very important for organizing information• Keep the header with the following paragraph or caption with image• Keep boxed text from breaking• Emphasize content by giving it its own page
  40. 40. After/Before: • Not supported on Kobo for iOS or Readium • Kobo Arc will break in portrait mode, but not always; landscape.After/Before: • Not supported on iBooks, Kobo Arc, Kobo for iOS, or Readium avoid; • Doesn’t always work on list itemsAfter/Before: • Universally treated as always; no paging Left/Right; • Not supported on Kobo for iOS or Readium • Not supported on Kobo Arc, Kobo for Inside iOS, Nook, or Readium
  41. 41. Generally not well supported• iBooks and Readium support columns• Kobo Arc supports columns in landscape mode, but not portrait.• Kobo for iOS will display columns, but they are frequently cut off at the top and bottom of the screen
  42. 42. Remember that the goal is to be as readable as possible onas many devices as possible• Page-break-inside:avoid; is the least likely to work—iBooks, ADE, Kobo Mini, Nook, and Nook color support it• Forcing breaks can keep content together • Can lead to large black stretches • Good option for large images & captions• Avoid columns
  43. 43. Floating an image to the right or left of text can beinformative or decorative• Floating an illustrated drop cap• Keeping a small image next to relevant text
  44. 44. Not supported • Nook for iOS Image • Kobo Mini and Nook color will display positioning images inside a <p> higher than issues those outside • Nook: p {float:right;} before an image will sit behind that image • Kobo Mini: floated paragraphs will runGlitchiness off the edge of the screen • Nook for iOS is a hot mess. Full screen images, cut off text.
  45. 45. Floating images is widely supported, but not glitch-free• Limit floating images where possible• For accessibility, try to use text for dropcaps rather than images • If you must use images, for best results put them outside the paragraph • <img class=“float-left” src=“” /><p>…</p>• Go fixed layout
  46. 46. Offers the potential for new ways of engaging withreaders by reacting to their input• JavaScript: The core of online interactivity, increasingly supported by HTML 5• Triggers: Built in to epub 3.0. Limited to just a few types of tasks• Switch: not really interactive, but gives more display options for content
  47. 47. The main way for readers to get around your ebook• Container-constrained and spine-level JS supported by iBooks, Kobo for iOS, and Readium• Trigger supported by iOS and Readium• Switch not supported by Kobo Mini
  48. 48. How do you work around lack of support for interactivity?• Design content so the interactive bits are not essential• Alternately, limit your market to just a few devices• Consider media queries; can have an interactive CSS 3 version and a non-interactive CSS 2 version
  49. 49. Center is a very tough position to play. ―Kareem Abdul-Jabbar
  50. 50. • Works all the time:* – <p style=“text-align:center”>Image</p> or – <div style=“text-align:center”>Image</p> – Image must be displayed inline• What should work but doesn’t – margin: 0 auto – box-pack: center*styles only displayed inline for demonstration purposes.Feel free (and encouraged) to put them in the CSS.
  51. 51. • Works all the time: – Table display:block, set to width less than 100% – Left/right margins set to (100%-table-width)/2 – eg Table width: 80%; margin: 0 10%;• What should work but doesn’t – margin: 0 auto
  52. 52. As long as we are engaged in storytelling that moves the culture forward, it doesnt matter what format it is. ― LeVar Burton
  53. 53. GIFJPEGPNGSVG (with a few exceptions—filters, text on apath, rotated text)
  54. 54. • Manifest Fallbacks – Required – Unsupported• Content Fallbacks<object data="images/formats/tga-format.tga" > <param name="image" value="images/formats/tga-format.tga" /> <img src="images/formats/tga-format.gif" alt="fallbackimage" /></object>
  55. 55. I am large, I contain multitudes.―Walt Whitman, Leaves of Grass
  56. 56. <div><img /></div>Size the div appropriately <div class=“fifty-percent”><img /></div> .fifty-percent { width:50%; }Size the image to fill the entire container <div class=“fifty-percent”><img class=“full” /></div> .fifty-percent { width:50%; } .full { width: 100%; }
  57. 57. • Explicit Size with Relative Constraints: width:100px; max-width: 50%; min-width: 25%;• Relative Size with Explicit Constraints: width: 50%; max-width: 400px; min-width: 100px;• Relative Size with Relative Constraints: width: 20em; max-width: 50%; min-width: 25%;
  58. 58. W=Image Width M/M=Min/Max-width em W W M/M M/M Units % M/M W W M/M px M/M M/M W W Size controlled by Font Font Viewport Viewport Explicit ExplicitSize constrained by Viewport Explicit Explicit Font Font Viewport .image { width:30em; max-width: 50%; min-width: 25%; }
  59. 59. Amanda Gomm @agommTom McCluskey @TomMcCluskey Digital Bindery