Local Fonts

by flowing-abyss
5
4
3
2
1
Score: 35/100

Description

The Local Fonts plugin lets you load font files from a folder in your vault and apply them to body text, interface text, monospace text, headings and emoji. It scans subfolders, reads family and style metadata from the files themselves, and picks a format that suits the current device instead of relying on file names. The plugin also handles mixed desktop and mobile cases, including emoji fonts that need different builds on Chromium and WebKit. A diagnostics view shows weights, script coverage, file formats, colour support and which face was chosen for the device. There is also a Check action to verify what actually rendered after you change fonts.

Reviews

No reviews yet.

Stats

stars
downloads
0
forks
4
days
NaN
days
NaN
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
0
commits

Latest Version

Invalid date

Changelog

README file from

Github

Local Fonts

Available in Obsidian Release Downloads

Local Fonts

Load fonts from a folder in your vault and apply them to text, interface, monospace, headings and emoji. Works on desktop and mobile, and makes no network requests.

How it works

Point the plugin at a folder and it reads every .ttf, .otf, .woff and .woff2 file inside, including subfolders. Family name, weight, style, script coverage and colour format all come from the font file itself, so filenames are irrelevant in normal use.

Fonts load through resource URLs instead of base64, so the browser fetches only the weights a note actually displays. A folder holding forty faces typically loads a dozen.

The default folder is fonts in your vault root. Any vault-relative path works, hidden ones like .fonts included, which keeps a font collection out of your note tree.

[!WARNING] Obsidian Sync excludes hidden files and folders, so anything under a folder whose name starts with a dot stays on the device it was added to. Sync that folder some other way, or keep the fonts somewhere visible. See Hidden files and folders for details.

Adding fonts

Create the folder next to .obsidian in your vault root and drop font files into it:

📂 My Vault
├── 📁 .obsidian/
└── 📂 fonts/
    ├── 📁 IBM Plex Sans/
    │   ├── 🔤 Regular.woff2
    │   ├── 🔤 Regular.ttf
    │   └── 🔤 Bold.woff2
    ├── 📁 IBM Plex Mono/
    │   └── 🔤 Regular.otf
    └── 📁 Noto Color Emoji/
        ├── 😀 COLRv1.woff2
        └── 😀 SVG.woff2

Names are up to you, folders included. Faces are grouped by the family name read from each file, so a flat folder works just as well as this one.

Then open Settings → Local Fonts. Families appear in the dropdowns after the folder is scanned. Scanning runs in the background, and only files that changed since last time are read again.

Filenames matter in one situation. When a .woff2 cannot be decoded, the plugin looks for a file with the same name and a different extension and reads metadata from that instead. Keeping foo.woff2 and foo.ttf named alike preserves that fallback.

You can keep the same face in several formats. The plugin picks one per platform, preferring a format the current engine can render, then woff2 over woff over otf over ttf, then the smaller file.

Settings

Fonts folder takes a vault-relative path.

Text, Interface, Monospace and Headings each take a family from the fonts you have, or leave the theme alone.

Emoji sits first in every font stack and covers only emoji code points, so it leaves digits and punctuation to the family you chose for that role.

Hard override forces your fonts with !important for themes that set font-family directly instead of using Obsidian's variables. Icon elements stay untouched.

Diagnostics

Every family gets a card listing the weights it has, the scripts it covers, and the operating systems that can render it. Each face shows its format, file size, colour format, and whether the plugin selected it for this device. The sample line is drawn in the family itself, and it loads only once you expand the card.

A family card showing OS support badges, a sample line, weight chips and per-face details

The Check button measures what actually rendered on the device you are using. Reach for it after changing fonts, especially on a phone.

Emoji formats

Colour emoji fonts come in incompatible flavours, and the two engines Obsidian runs on cover different ones. Chromium, which powers desktop and Android, renders COLRv1 and ignores OT-SVG. WebKit on iOS renders both.

One file often cannot serve every platform. Put more than one build of the same emoji family in the folder and the plugin chooses per device. The card reports which build it picked.

Google's Noto Color Emoji ships as a COLRv1 .woff2, an OT-SVG build, and a 25 MB .ttf carrying both. Any combination of those works.

Limitations

The test suite runs on every release against Obsidian 1.0.3 and the latest stable release, covering Windows, macOS, Linux and Android on real devices. iOS has no automation available, so the Check button is how you confirm a font applied there.

Emoji on iOS depend on which colour formats your files carry. When they fail, the card shows which format is missing.

Installation

Open Settings → Community plugins, browse for Local Fonts, then install and enable it. You can also install it straight from the plugin page.

To install a build by hand, download main.js, manifest.json and styles.css from the latest release, put them in a local-fonts folder inside your vault's .obsidian/plugins/ directory, and restart Obsidian. BRAT does the same thing and keeps it updated from this repository.

License

MIT

Similar Plugins

info
• Similar plugins are suggested based on the common tags between the plugins.
Contextual Typography
6 years ago by mgmeyers
Custom Font Loader
3 years ago by Amir Pourmand
A plugin to set custom font for obsidian
Emoji Autocomplete
3 years ago by KraXen72
Emoji Shortcodes Autocomplete for Obsidian
Emoji Magic
3 years ago by simplgy
Makes it easier to add emojis using an improved keyword search
Emoji Picker
a year ago by Ali Faraji
An up-to-date Emoji Picker for obisian.md, using emoji-mart.
Emoji selector
9 months ago by summer
Insert custom emojis with quick search, auto-suggestions, and customizable templates.
Emoji Shortcodes
5 years ago by phibr0
Emoji Shortcodes - Obsidian Plugin | Adds Support for Emoji Shortcodes to Obsidian
Emoji Titler
3 years ago by Hyeonseo Nam
Emoji Toolbar
6 years ago by oliveryh
An Obsidian plugin to quickly add emojis into your notes
EmoTagsTitler
3 years ago by Cyfine
Focus Mode
5 years ago by ryanpcmcquen
Add focus mode to Obsidian.
Fontsource
2 years ago by Ayuhito
A plugin to load custom fonts from Fontsource into Obsidian.
Icon Shortcodes
5 years ago by AidenLx
Obsidian Plugin: Insert emoji and custom icons with shortcodes
Minimal Theme Settings
6 years ago by @kepano
Settings plugin to control colors and fonts in Minimal Theme
NerdFont Icon Picker
a year ago by Xaver Wenhart
a simple nerdfont icon picker for obsidian
PDF Emojis
a year ago by Marcel Marusiak
Obsidian plugin that allows you to export your notes as PDFs while retaining emojis in headings, bold texts, and anywhere else in your notes! 🎉
Reset Font Size
5 years ago by luckman212
Plugin for Obsidian that adds shortcuts for resetting the font size (zoom level).
Smart Typography
5 years ago by mgmeyers
Converts quotes to curly quotes, dashes to em dashes, and periods to ellipses
Source Mode Styling
6 months ago by Chris Howard
Obsidian plugin. Provides a customisable raw look in source mode using a monospace font to clearly differentiate from Live Preview.
Tengwar
2 years ago by mikevetkin
Support Tengwar (The Elvish Letters)
Text Progress Bar
3 years ago by Michael Adams
Low-fi text-based progress bar for Obsidian
TG Emoji Search
a year ago by MarsBatya
Tokenz
2 years ago by Ferenc Moricz
Use any kind of short codes in Obsidian! Comes with a map for smileys (:), ;), ...) and one for emojis (:smile:, :wink:, ...).
Typographer
9 months ago by René Coignard
Enhances typography with smart quotes, custom text replacements and auto-pairing characters.
Vault Nickname
a year ago by @rscopic
A plugin for Obsidian markdown editor. Allows users to override a vault's display name without renaming the vault folder.