<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <title>#paper-epubs posts — Ben Crowder</title>
    <link>https://bencrowder.net/blog/tag/paper-epubs/</link>
    <atom:link href="https://bencrowder.net/blog/tag/paper-epubs/feed/" rel="self" />
    <description>Feed for blog posts tagged with #paper-epubs.</description>
    <lastBuildDate>Sat, 04 Apr 2026 05:22:16 GMT</lastBuildDate>
    <language>en-US</language>
    <generator>https://bencrowder.net/</generator>

    <item>
      <title>Scroll bleedthrough</title>
      <link>https://bencrowder.net/blog/2025/scroll-bleedthrough/</link>
      <guid isPermaLink="true">https://bencrowder.net/blog/2025/scroll-bleedthrough/</guid>
      <pubDate>Fri, 15 Aug 2025 12:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Ben Crowder]]></dc:creator>
      <description><![CDATA[<p>I figured out how to add a rudimentary dynamic bleedthrough to Scroll (my homemade ebook reader), to make it feel a bit more like real paper — another step toward implementing what I wrote about in my <a href="https://bencrowder.net/blog/2024/1650/">paper EPUBs post</a> last year.</p>
<p><figure>
        <img src="https://cdn.bencrowder.net/blog/2025/08/scroll-bleedthrough.png" alt="Two ebook reader screenshots side by side. The one on the right has a larger font size." title="Two ebook reader screenshots side by side. The one on the right has a larger font size." />
        <figcaption>Two different paper textures/themes and sizes. The screenshot on the right shows how the bleedthrough matches the font size.</figcaption>
      </figure></p>
<p>Initially I considered baking the bleedthrough images onto the backgrounds in advance, but since the font can change (family, size, leading) and I wanted the bleedthrough to match, and since baking (whether directly onto the background textures or as transparent images to be layered on in the client) would mean dozens of permutations and images, I ended up doing this instead:</p>
<ul>
<li>On load, create a new canvas in memory (leaving it out of the DOM)</li>
<li>Get the font information, padding, etc. from the DOM</li>
<li>Render the lines of bleedthrough sample text onto the canvas, at a light opacity, flipping the canvas horizontally and applying a mild blur filter (noting that mobile Safari doesn’t yet support canvas filters, so the blur doesn’t work there)</li>
<li>Export the canvas to a data URL</li>
<li>Set that data URL as a second background image on the content area (where the first background image is the paper texture), with the blending mode set to multiply</li>
</ul>
<p>It’s working fairly well, I think, and seems performant enough so far.</p>
<p>Potential future work:</p>
<ul>
<li>Get the bleedthrough to line up better with the text. While the leading stays more in sync in Firefox, in mobile Safari it drifts off within a few lines and I don’t know why. That said, for some reason I don’t mind that it doesn’t line up, and I’m not sure getting things aligned would be worth all the effort.</li>
<li>Use the text of the book itself instead of a hardcoded sample text. Also may not be worth it, since the bleedthrough is subtle and isn’t meant to actually be read.</li>
</ul><hr class="feed-extra" style="margin-top: 48pt;" /><p class="feed-extra feed-mail"><a href="mailto:ben.crowder@gmail.com?subject=Re%3A%20Scroll bleedthrough">Reply via email</a></p>]]></description>
    </item>
    <item>
      <title>I’ve been playing around with making EPUBs look more like print: Why the madness: ebooks feel kind o...</title>
      <link>https://bencrowder.net/blog/2024/1650/</link>
      <guid isPermaLink="true">https://bencrowder.net/blog/2024/1650/</guid>
      <pubDate>Fri, 12 Jan 2024 12:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Ben Crowder]]></dc:creator>
      <description><![CDATA[<p>I’ve been playing around with making EPUBs look more like print:</p>
<p><figure class="border">
        <img src="https://cdn.bencrowder.net/blog/2024/01/epub2analog.jpg" alt="Two book pages. At left is a page from a digital PDF. At right is the same page but modified to look less digital." title="Two book pages. At left is a page from a digital PDF. At right is the same page but modified to look less digital." />
        
      </figure></p>
<p>Why the madness: ebooks feel kind of sterile to me, and I’m intrigued by the idea of giving them a more analog feel.</p>
<p>The experiment is still early on (I’ve only automated the first step so far), but at this point the process involves:</p>
<ol>
<li>Turning the EPUB into a PDF (concatenating each file in the EPUB into a single HTML file, setting some print CSS rules, and printing from HTML to PDF in a browser)</li>
<li>Turning each page into an image (at left in the above image)</li>
<li>Eroding/dilating the image to simulate ink spread</li>
<li>Adding a very slight ripple</li>
<li>Blurring the next page, flipping it backwards, and compositing it at a low opacity</li>
<li>Adding some paper texture (at right in the above image)</li>
<li>Compiling all the page images back into a PDF</li>
</ol>
<p>Other notes:</p>
<ul>
<li>This does mean larger file sizes, but not prohibitively so. (For me, anyway.)</li>
<li>Right now I’m experimenting with doing this statically, in PDF but I imagine most if not all of it could be done dynamically in-browser. (<code>filter: blur(0.25px) contrast(3)</code> in CSS applied twice to text can give a roughly similar effect to erosion/dilation, for example.)</li>
<li>The current erosion/dilation method is acceptable, but I feel like there’s more room for improvement here.</li>
<li>A shortcut to doing the full process is to export a blurred backwards page image, composite it onto the paper texture, and then use that as the background image on each page. You lose the variety, but it’s probably not noticeable.</li>
</ul><hr class="feed-extra" style="margin-top: 48pt;" /><p class="feed-extra feed-mail"><a href="mailto:ben.crowder@gmail.com?subject=Re%3A%20I’ve been playing around with making EPUBs look more like print: Why the madness: ebooks feel kind o...">Reply via email</a></p>]]></description>
    </item>
    
  </channel>
</rss>
