Disclaimer
Is this plugin open source? Yes
Is this plugin completely free? Yes
Is this plugin vibe-coded beyond the author’s ability to comprehend how it works? No
Link: Local Font Loader - Obsidian Plugin
Local Font Loader: Load fonts in vault and support separating Latin and Non-Latin font settings
A comprehensive typography management plugin that brings professional-grade font control to Obsidian with preset-based configuration, device association, and granular character-range controls.
What It Solves
Can’t use different fonts for Latin vs CJK scripts
No granular control over UI, heading, code, and math fonts separately
Fonts must be installed system-wide on every device
No way to have device-specific typography (desktop vs mobile)
What It Does
Local Font Loader lets you:
- Load custom fonts directly from your vault (TTF, OTF, WOFF, WOFF2)
- Create named presets for different typography configurations
- Associate presets with specific devices (auto-switch between desktop/mobile)
- Use separate fonts for Latin and Non-Latin characters with fine-grained unicode-range control
- Manage fonts visually with a status-aware font library (Converted ✓ / Standby / Missing)
Key Features
Preset Management
- Create named typography presets (e.g., “Classic Serif”, “Mobile Reading”)
- Switch entire typography setup with one click
- Set global defaults or device-specific overrides
Device Association
- Link presets to platforms (Desktop-Linux, Mobile, etc.)
- Automatic device detection—your vault adapts when opened on different devices
Font Library Management
- Visual browser with real-time status:
Converted /
Standby /
Missing - Filter by status, bulk operations (apply/clean/clear cache)
- Automatic validation: warns when font families lack Regular/Italic/Bold/Bold Italic variants
Granular Character Control
Assign different fonts to:
- Letters (A-Z, a-z), Numbers (0-9), Punctuation, Symbols
- UI elements (sidebars, menus, buttons)
- Headings (h1-h6), Code blocks, LaTeX math
Vault-Portable & Local-First
- Fonts stored in vault—no CDN, no external dependencies
- Base64 caching for optimized loading
- Works offline, perfect for air-gapped environments
Use Cases
- Multilingual workflows: Minion Pro for English, FZShuSong for Chinese, JetBrains Mono for code—in one note
- Cross-device setups: Compact fonts on desktop, readable fonts on mobile—automatically
- Team collaboration: Shared vault with consistent branding—no manual font installation
- Academic writing: Separate presets for drafting vs publication-ready output
Installation
From Community Plugins:
- Settings → Community plugins → Browse
- Search “Local Font Loader” → Install → Enable
Manual:
- Download from GitHub Releases:
https://github.com/lmce72/obsidian-local-font-loader/releases - Extract to
<vault>/.obsidian/plugins/obsidian-local-font-loader/
Quick Start
-
Create
Fonts/folder in vault, organize by family:Fonts/ ├── Minion Pro/ │ ├── MinionPro-Regular.otf │ ├── MinionPro-Bold.otf │ └── ... └── JetBrains Mono/ └── JetBrainsMono-Regular.ttf -
Settings → Local Font Loader → Set font directory → Click “Rescan”
-
Click “Convert All Fonts to Base64”
-
Create preset → Assign fonts → Enable Latin/Non-Latin separation (optional) → Apply
Performance Note
Avoid mixing too many languages in a single line (e.g., Chinese + Japanese + Korean + Arabic). Dense multilingual mixing can trigger font fallback mechanisms that may freeze rendering. Keep different languages in separate paragraphs
[!info] I’ll be upfront — this plugin was made with AI assistance. But at the end of the day, it’s a tool I built for myself, and I’ve put in the work using my own knowledge and judgment to refine it until it works properly. I’m actively using it now and genuinely happy with how it’s turned out. Still, if you do encounter any problems, don’t hesitate to post them in the Issues section. I’ll do my best to address them.