Skip to content

Instantly share code, notes, and snippets.

@chenhunghan
Last active July 22, 2026 13:53
Show Gist options
  • Select an option

  • Save chenhunghan/b9dbb6ad4095fa12c31838784c26073d to your computer and use it in GitHub Desktop.

Select an option

Save chenhunghan/b9dbb6ad4095fa12c31838784c26073d to your computer and use it in GitHub Desktop.
How to install Noto Sans CJK fonts for reMarkable Tablet

reMarkable is a paper tablet by https://remarkable.com/.

The reMarkable tablet is the best e-paper in the market. However, it does not have built-in support for CJK (Chiniese, Korean and Japanese) users.

Luckily, this could be resolved by installing CJK fonts on the tablet.

  1. Go to Preference > Storage > Enable USB web interface (Beta).
  2. Connect reMarkable with your PC via a microUSB cable.
  3. SSH to the device as user "root" using the password find in Preference > About. e.g. ssh root@10.11.99.1
  4. Download "NotoSansCJK[you language]-Regular.otf" from https://www.google.com/get/noto/help/cjk/ *note, there is limited space on the device, so do not sue "Super OpenType/CFF Collection (Super OTC)", an language-specific OTC is ok.
  5. Copy (using SCP or whateever tools you like) to /usr/share/fonts/opentype/
  6. Make sure the uploaded font file has the corrent permission (it should be 644).
  7. Run fc-cache -f -v to refresh to font cache.
  8. Reboot the device reboot. (or use the physical button)
  9. Read a book in your language, set the font as "Noto Sans" in Text settings.
  10. Done!
  • Note: CJK Serif Fonts does not work even if I have installed OTF on the device and select Noto Serif, not sure why. Noto Sans is good enough though!
@chenhunghan

Copy link
Copy Markdown
Author

@justinchuby try to download the font only with the language you need, not the font covers CJK, see "Language-specific OpenType/CFF (OTF)" here https://www.google.com/get/noto/help/cjk/

@JulienVincenot

JulienVincenot commented Mar 20, 2021

Copy link
Copy Markdown

excellent trick, thank you so much ChenHungHan ! I did it this fall but I just noticed after the recent updates all my ebooks were back to square blocks instead of 汉字... I guess because they reworked the ebook interface, or just because that's how updates work I don't remember. Nice occasion to do so ssh/scp workout, I don't use them so often !

@justinchuby

justinchuby commented Dec 16, 2021

Copy link
Copy Markdown

I am now installing the fonts to /home/root/.fonts/, which will not be overwritten by OS updates and seems to be one of the paths the system searches fonts in.

@dieterplex

Copy link
Copy Markdown

Instead of /etc/fonts/local.conf, placing the custom config to /home/root/.fontconfig works.

If you need mono font, add like following alias to config also.

  <alias>
    <family>monospace</family>
    <prefer>
      <family>Noto Sans Mono Condensed</family>
    </prefer>
  </alias>

@JoeyAndBlueWhale

Copy link
Copy Markdown

@chenhunghan

Copy link
Copy Markdown
Author

I guess it’s because that character is a rare one that is not included in the font you are using. There are some fonts include the characters used in ancient Chinese languages, maybe can try those.

@JoeyAndBlueWhale

Copy link
Copy Markdown

I guess it’s because that character is a rare one that is not included in the font you are using. There are some fonts include the characters used in ancient Chinese languages, maybe can try those.

Thank you very much for your timely reply! I know some fonts containing more characters but can I add them in the same way? In the font menu there are only limited options, Noto Sans, Noto Serif, e.t.c, does this mean the font add also has to be Noto? Do you know any fonts that may work?

@chenhunghan

Copy link
Copy Markdown
Author

You can add them as the same way as long as they are OpenType https://en.m.wikipedia.org/wiki/OpenType and they don’t have to be in Noto family.

I used to use some fonts made by Sinica in Taiwan but can’t find it now on the internet unfortunately.

@rjuni

rjuni commented Sep 22, 2023

Copy link
Copy Markdown

many of my coworkers are Chinese and are looking to use this, will it convert handwritten text when this font is installed? will this convert menus and such to Chinese as well?

@justinchuby

Copy link
Copy Markdown

many of my coworkers are Chinese and are looking to use this, will it convert handwritten text when this font is installed? will this convert menus and such to Chinese as well?

I don't think so. The font will allow Chinese display if the text is in Chinese.

@hachung

hachung commented Nov 24, 2023

Copy link
Copy Markdown

Really appreciate this post. I just want to add a small update. I'm using Remarkable 2 (firmware version 3.8.2.1965). I copied NotoSansKR-Regular.ttf to /usr/share/fonts/ttf/ instead (in the Noto package I downloaded, I don't have any otf fonts) and refresh the font cache as instructed. It works like a charm! Thanks again!

@bellisk

bellisk commented Dec 25, 2023

Copy link
Copy Markdown

Thanks so much, this worked for me! (Using .ttf instead of .otf, as in the comment above.)

@freizl

freizl commented Nov 10, 2024

Copy link
Copy Markdown

Thanks the instructions!
I'm following same step by adding a new font (https://typeof.net/Iosevka/).
But it didn't appear in the Text Settings -> Font of documents (EPUB, Text).
What I could be missing?

@chenhunghan

chenhunghan commented Nov 11, 2024

Copy link
Copy Markdown
Author

@freizl you probably should reach out to ReMarkable, this was written in 2018, it was a hack to support CJK fonts, and back then ReMarkable was a small start-up, but now it's 2024, IMO it is not acceptable that they don't support CJK fonts.

@freizl

freizl commented Nov 11, 2024

Copy link
Copy Markdown

@freizl you probably should reach out to ReMarkable, this was written in 2018, it was a hack to support CJK fonts, and back then ReMarkable was a small start-up, but now it's 2024, IMO it is not acceptable that they don't support CJK fonts.

Cool. thanks!

@chenhunghan

chenhunghan commented Jul 22, 2026

Copy link
Copy Markdown
Author

Install CJK Fonts to reMarkable Tablet (firmware 3.x, tested on 3.27.3.0)

Overview

Instructions for installing CJK (Chinese, Japanese, Korean) fonts on reMarkable tablets so ebooks display these languages properly. Tested on a reMarkable 1 running firmware 3.27.3.0.

⚠️ What changed on firmware 3.x: the root filesystem is nearly full (~11 MB free), so the old advice of copying fonts to /usr/share/fonts/ no longer works. Install fonts to /home/root/.local/share/fonts/ instead — it lives on the data partition (several GB free), xochitl picks it up automatically, and it survives both reboots and OS upgrades (upgrades replace the whole OS partition, but never touch /home).

Which font to download

Use the Subset OTF flavor from the notofonts/noto-cjk repo — it contains only the glyphs for one language, so a single weight is only ~5–6 MB (vs ~16 MB for the language-specific OTF, or 300+ MB for the Super OTC).

For Traditional Chinese, Regular + Bold is only ~11 MB total:

curl -LO https://github.com/notofonts/noto-cjk/raw/main/Sans/SubsetOTF/TC/NotoSansTC-Regular.otf
curl -LO https://github.com/notofonts/noto-cjk/raw/main/Sans/SubsetOTF/TC/NotoSansTC-Bold.otf

The TC subset covers the ~7,800 most frequent Traditional Chinese characters plus Taiwan's 常用國字標準字體表, Hong Kong's 常用字字形表, Bopomofo, and full-width punctuation — plenty for reading ebooks.

Other languages: swap TC for SC (Simplified Chinese), JP (Japanese), or KR (Korean) in the URLs. Prefer serif for reading? Use Serif/SubsetOTF/TC/NotoSerifTC-Regular.otf (~7 MB) from the same repo.

Steps

  1. On the tablet, go to Settings > Storage and enable the USB web interface, then connect via USB cable.

  2. Find the root password in Settings > General > Help > Copyrights and licenses (bottom of the GPLv3 section).

  3. Create the user font directory and copy the fonts over (the -O flag is needed because the tablet has no SFTP server):

    ssh root@10.11.99.1 "mkdir -p /home/root/.local/share/fonts"
    scp -O NotoSansTC-Regular.otf NotoSansTC-Bold.otf root@10.11.99.1:/home/root/.local/share/fonts/
  4. Fix permissions and rebuild the font cache (the cache is mainly for CLI tools — xochitl scans the directory itself — but it makes verification easy):

    ssh root@10.11.99.1 "chmod 644 /home/root/.local/share/fonts/*.otf && fc-cache -fv"
    ssh root@10.11.99.1 "fc-list | grep 'Noto Sans TC'"
    # /home/root/.local/share/fonts/NotoSansTC-Regular.otf: Noto Sans TC:style=Regular
    # /home/root/.local/share/fonts/NotoSansTC-Bold.otf: Noto Sans TC:style=Bold
  5. Clear stale render caches — this is the step everyone misses. xochitl pre-renders each EPUB to a hidden <doc-uuid>.pdf next to the .epub and keeps serving it forever; books added before the font install will show tofu (□) no matter what you change, because the tofu is baked into an old cached render. Deleting the cache is safe — the document itself is untouched and re-renders on next open:

    ssh root@10.11.99.1 'systemctl stop xochitl
    cd /home/root/.local/share/remarkable/xochitl
    for e in *.epub; do rm -f "${e%.epub}.pdf" "${e%.epub}.epubindex"; done
    systemctl start xochitl'

    (This also restarts xochitl, so no reboot is needed. Avoid restarting xochitl more than a few times within 10 minutes — its systemd unit rate-limits starts, and exceeding the limit triggers the watchdog, which reboots the device.)

  6. Open an ebook. On firmware 3.x the Text settings font picker is a hardcoded list (EB Garamond / Noto Sans / Noto Mono / Noto Serif) — installed fonts never appear in it, in any format. That's fine: pick any of them (or leave the publisher default) and CJK characters render through per-glyph fallback to your installed font.

How it works (and why old guides mislead)

  • xochitl is launched by systemd without $HOME, so fontconfig CLI tools behave differently from xochitl itself — env -i fc-match "Noto Sans" can't see user fonts, which makes it look like fallback is broken. It isn't: xochitl is a Qt app, and Qt resolves the home directory via the passwd database, scanning /home/root/.local/share/fonts regardless of the environment. No /etc/fonts/local.conf, no systemd tweaks, no HOME hacks needed.
  • Because nothing outside /home is involved, the setup survives reboots and OS upgrades. After an upgrade, at most re-clear the render caches of books that still show tofu (step 5).
  • If one stubborn book still shows tofu, its per-book font is stored as "fontName" in /home/root/.local/share/remarkable/xochitl/<doc-uuid>.content ("" = publisher default). Stop xochitl, set it to your CJK family (e.g. "Noto Sans TC"), delete that book's .pdf/.epubindex cache, and start xochitl.
  • Rare characters can still tofu legitimately: the TC subset omits Japanese-only kanji (e.g. 峠, 読). Add the JP subset font if you read mixed content.

Vertical reading (直排)

xochitl ignores EPUB writing-mode CSS, so real vertical layout is impossible — but 偽直排 (fake-vertical) fonts work perfectly: every glyph is pre-rotated 90° counterclockwise, so you render the book as normal horizontal text and physically rotate the tablet 90° clockwise to read top-to-bottom, right-to-left. Tested on 3.27.3.0.

Fonts (pick one):

Font Style Download Size
源流明體 GenRyuMin TW 明體 (ming/serif) GenRyuMinTW-Medium-R03-Simp2Trad.ttf (more variants + docs: vixual.net) 15 MB
原俠正楷 GuanKiapTsingKhai 楷書 (kai) GuanKiapTsingKhai-TW-90.ttf (other variants: releases) 10 MB
懷源黑體 KaiGenGothic TW 黑體 (gothic/sans) KaiGenGothicTW-Medium-R02-Simp2Trad.ttf 11 MB

Simp2Trad / -TW variants also convert simplified characters to traditional glyphs and Taiwan word conventions on the fly — handy for mainland-sourced EPUBs. (The GuanKiapTsingKhai author notes the auto-word-selection -W/-TW variants can rarely overlap characters; use -T-90 if you hit that.)

Install (same as the main steps — the font just goes in the user font dir):

scp -O GuanKiapTsingKhai-TW-90.ttf root@10.11.99.1:/home/root/.local/share/fonts/
ssh root@10.11.99.1 "chmod 644 /home/root/.local/share/fonts/*.ttf && fc-cache -f"

Apply to a book — the picker will never list the font (hardcoded list), so set it per book. Find the book's UUID by its title, then point its .content at the font's exact family name and clear the render cache:

# 1. find the UUID of your book (grep by title)
ssh root@10.11.99.1 'grep -l "書名" /home/root/.local/share/remarkable/xochitl/*.metadata'

# 2. get the exact family name fontconfig reports
ssh root@10.11.99.1 'fc-list | grep -i guankiap'
# → GuanKiapTsingKhai-TW-90

# 3. set the book to that family and force a fresh render
ssh root@10.11.99.1 'systemctl stop xochitl
cd /home/root/.local/share/remarkable/xochitl
id=<uuid-from-step-1>
sed -i "s/\"fontName\": \"[^\"]*\"/\"fontName\": \"GuanKiapTsingKhai-TW-90\"/" $id.content
rm -f $id.pdf $id.epubindex
systemctl start xochitl'

Open the book, rotate the tablet 90° clockwise, and read. The setting persists (reboots, upgrades, sync) — just never touch that book's font in Text settings, or the picker will overwrite it.

No-SSH alternative — embed the font in the EPUB itself: in Calibre, Convert book → Look & feel → Fonts → Embed font family with the rotated TTF (and let it set the base font), then upload the converted EPUB normally. Books left on the publisher default use their embedded fonts, so the vertical typography travels with the file — no device tweaks at all.

Caveats:

  • Do not try the document's "orientation": "landscape" setting (or the UI landscape toggle) as a substitute for physically rotating the device — xochitl rotates landscape content the opposite direction, producing upside-down text (verified).
  • Half-width Latin/numbers lie sideways in vertical reading — inherent to the trick.
  • Serif CJK needs the explicit override. Per-glyph fallback does not style-match: with both Noto Sans TC and Noto Serif TC installed, selecting the built-in Noto Serif renders Latin in serif but falls back to the sans CJK font (verified by inspecting the render — it embeds NotoSerif + NotoSansTC). To read Chinese in serif (明體), either set the book's .content to "fontName": "Noto Serif TC" and clear its render cache as above, or — if you want serif everywhere with no per-book SSH — install only the Serif TC family: fallback can only pick from what's installed, so with a single CJK family present, every book uses it automatically.

@chenhunghan

Copy link
Copy Markdown
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment