I take notes in Obsidian with Korean and English mixed together, and two things bugged me.
The content column is too narrow. I have a wide monitor but the text stays in a thin strip down the middle. And the default fonts aren’t great for Korean. Code blocks and plain-text tables stop lining up once Korean shows up.
I run the Obsidian Nord theme on Linux. I fixed both with a CSS snippet and a few fonts, without touching the theme. Here’s what I did.
Widening the content
Obsidian turns on “Readable line length” by default. Long lines are tiring, so it caps the width. Good for reading, cramped on a wide screen.
The quick fix is to turn it off: Settings → Editor → Readable line length. The text fills the window. But on a wide screen the lines get too long, which is its own problem.
I’d rather keep readable line length on and just set the width. Use a CSS snippet.
- Settings → Appearance → CSS snippets, click the folder icon to open
.obsidian/snippets/. - Make a file
wide-content.css:
body {
--file-line-width: 1000px; /* 800–1200px works well */
}
- Back in Obsidian, refresh the snippet list and enable it.
The default is 700px. I tried a few values and settled on 1000px.
(Some themes like Minimal give you a slider through Style Settings. Nord doesn’t, so the snippet is the way.)
Fonts
By default Obsidian uses system fonts:
- Body: Inter
- Code: system monospace, usually DejaVu Sans Mono on Linux
The issue is Korean. The default monospace isn’t fixed-width for Korean, so Korean inside a code block or a plain-text table breaks the alignment. I set the fonts explicitly:
| Use | Font |
|---|---|
| Body | Pretendard |
| Code (Latin) | JetBrains Mono |
| Code (Korean) | D2Coding |
Pretendard reads well in both scripts. JetBrains Mono keeps l/1/I and 0/O distinct, but it has no Korean glyphs, so Korean set to it falls back to whatever font your system picks. D2Coding is fixed-width for Korean.
You don’t have to pick one. Obsidian’s font setting takes more than one font as a fallback chain. Set the monospace font to JetBrains Mono first, D2Coding second: Latin and symbols use JetBrains Mono, and Korean, which JetBrains Mono lacks, falls back to D2Coding. Code blocks and plain-text tables that mix both stay aligned. All three fonts are free.
Installing on Linux
Download from the GitHub releases, drop into ~/.local/share/fonts/, refresh the cache. Pretendard:
mkdir -p ~/.local/share/fonts/Pretendard
cd /tmp
curl -sL -o pretendard.zip \
"$(curl -sL https://api.github.com/repos/orioncactus/pretendard/releases/latest \
| grep -oE 'https[^\"]*Pretendard-[0-9.]+\.zip' | head -1)"
unzip -o -j pretendard.zip 'public/static/*.otf' -d ~/.local/share/fonts/Pretendard/
fc-cache -f ~/.local/share/fonts
fc-list | grep -i pretendard
Same for the others:
- JetBrains Mono:
fonts/ttf/*.ttffromJetBrains/JetBrainsMono - D2Coding:
*.ttf/*.ttcfromnaver/d2codingfont
Delete the zip when you’re done.
Setting them in Obsidian
Settings → Appearance → Font. Set the body font to Pretendard, and add the monospace fonts in order: JetBrains Mono, then D2Coding. Obsidian stores this in .obsidian/appearance.json, roughly like:
{
"textFontFamily": "Pretendard",
"monospaceFontFamily": "JetBrains Mono, D2Coding"
}
If nothing changes
Edited the config from outside Obsidian? A running instance may not notice. Run Ctrl/Cmd + P → Reload app without saving, or restart. If it still looks wrong, check Settings → Appearance to see if the values took.
Summary
- Width:
--file-line-width: 1000pxin a snippet, readable line length left on - Body: Pretendard
- Monospace: JetBrains Mono, with D2Coding as a fallback for Korean
Nord stays as-is. A snippet and a few fonts, and the mixed notes are much easier to read.