PaperPaw is a beta: for testing, and for developers, who can build their own plugins before the release. Expect rough edges.

Your own fonts

Read with a font you like: a .ttf or .otf file, for example from Google Fonts. On the Xteink X4 and X4 Pro you make a font pack first. You can do it right on this page.

Why a pack

The X4 and the X4 Pro draw font packs, not font files. A pack is the font drawn once, at seven sizes from 20 to 48 pixels, and read from the memory card a letter at a time. These readers have no room for a font renderer, and their memory (256 KiB) cannot hold a font file.

Android and other large devices draw font files themselves: copy the file into the fonts folder (on Android PaperPaw/fonts in the shared storage), restart PaperPaw and choose the font as under Choose it, below. You need nothing else.

You can also pick a font from the library on the reader itself: in the list of fonts, choose More fonts. It needs Wi-Fi and no computer.

Make your font pack here

Choose the font files of your font. This page turns them into a font plugin for the X4 and X4 Pro, in your browser. The tool is PaperPaw's own paperpaw-fontgen, the same one as on the command line below, so the result is the same.

Your fonts stay on your computer. Nothing is uploaded: the conversion runs in this page. Use only fonts you may use this way.

This is the name you will see in Settings, under Reading, as Font.

A `.ttf` or `.otf` file each, for example from Google Fonts. A style you leave out is drawn in the regular one. A variable font gives its bold itself.

Letters to make

Every script you add makes the pack larger, and the font must have its letters. Arabic and Hebrew need more than the letters: look for a font made for the script and try a short text first.

More choices

Only the look of the letters changes, not where the lines of a book break. Fonts with marks, such as Arabic or Hebrew, are best left as the font draws them.

Up to 12 sizes from 8 to 96, separated by commas. Fewer sizes make a smaller pack. The reader picks the nearest size.

Then put it on the card

  1. Unzip the file you downloaded. It holds one folder, font-<name>.

  2. Put that folder into the folder plugins on the memory card of your reader. Make the folder plugins if the card has none.

  3. Put the card back and restart the reader.

  4. Open Settings, under Reading, choose Font and then your font's name.

Android and the emulator need no pack: they read .ttf and .otf files straight from their fonts folder (on Android PaperPaw/fonts in the shared storage).

Copy it to the card

Take the memory card out of the reader and put the folder font-my-font into the folder plugins on the card. If the card has no plugins folder, make one. Put the card back and start the reader.

card/
  plugins/
    font-my-font/
      plugin.ini
      fonts/

Choose it

In Settings, under Reading, choose Font and then your font's name. The status lines have a font of their own in the same list.

The font list ends with More fonts and Your own fonts. The second one shows this page's steps on the reader.

Size and memory

A pack of one style takes about half a megabyte for Latin letters, so a family with regular, bold and italic takes about 1.5 MB on the card. The card is the only limit: nothing of a pack is loaded at once, only the letters of the page.

The reader's memory does not grow with the size of the font. In one test with a font of two styles (regular and bold) on the X4, the memory peaked at 141.8 KiB of its 256 KiB with an English book two pages in.

--sizes 24,32,40 makes smaller packs with only those sizes.

Try the font on a short book before you rely on it.

Other scripts

By default the tool makes the Latin letters. Add other scripts with --chars, for example --chars latin,cyrillic,greek; --help lists the names (latin, cyrillic, greek, arabic, hebrew, hangul and more). A font without a letter cannot draw it: that letter shows as a question mark.

paperpaw-fontgen --family "My Font" --regular MyFont-Regular.ttf \
    --chars latin,cyrillic,greek plugins

PaperPaw's own script packs for Arabic, Hebrew, Greek and Cyrillic are made from Literata. They add their letters to every font, yours too, wherever your font has none. They come as plugins; they are in the plugin store once published.

Arabic and Hebrew need more than the letters: shapes that join, and marks that sit in the right place. Look for a font made for the script, ask for its set with --chars arabic or --chars hebrew, and try a short text first.

On the command line: get paperpaw-fontgen

The tool is paperpaw-fontgen. Each release of PaperPaw has it as a zip for each computer.

  1. Open the latest release on GitHub and download the zip for your computer: paperpaw-fontgen-<version>-windows-x64.zip for Windows, paperpaw-fontgen-<version>-macos-arm64.zip for a Mac with an Apple chip, paperpaw-fontgen-<version>-macos-x64.zip for an Intel Mac, paperpaw-fontgen-<version>-linux-x64.zip for Linux. The releases of PaperPaw

  2. Unzip it. The zip holds the tool and PaperPaw's licence. The release also has a .sha256 file for each zip, to check the download.

  3. On Linux and a Mac, if the tool does not start, allow it with chmod +x paperpaw-fontgen.

No zip for your computer, or an older release without it? Build the tool from PaperPaw's source with cargo build --release -p paperpaw-fontgen.

On the command line: make the font plugin

Put the font files in one folder and open a terminal there. This makes the plugin for a family with three styles:

paperpaw-fontgen --family "My Font" \
    --regular MyFont-Regular.ttf \
    --bold MyFont-Bold.ttf \
    --italic MyFont-Italic.ttf \
    plugins

Only --regular is needed. A style you leave out is drawn in the regular one. A variable font gives its weight itself (400 for regular and italic, 700 for bold). On Windows the tool is paperpaw-fontgen.exe.

The tool writes the folder plugins/font-my-font with a plugin.ini and one pack for each style. It says how large each pack is and how many of the letters you asked for the font has, and it warns when it has none of them.