Anthropic Sans, Serif, and Mono fonts for the DSH Web UI, with Source Han fallback for CJK.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-anthropic-fonts
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:Isilsolme/dsh-anthropic-fonts
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
Apply Anthropic's typefaces to the DeepSeek Harness Web UI:
- Interface (sidebar, headings, buttons, settings):
Anthropic Sans Web Text - Model conversation (Markdown body / headings / tables):
Anthropic Serif Web Text - Code / code blocks:
Anthropic Mono Variable
CJK text falls back to the Source Han family (Noto Sans SC / Source Han Sans SC / Noto Serif SC), then to system fonts.
Fonts
Important: the plugin does not bundle fonts. The npm package does not ship font files; install the fonts below manually, then refresh / restart the web surface for the change to take effect.
The plugin references three Anthropic Latin typefaces (install them for the best English / code rendering):
| Font | Role | Where to get it |
|---|---|---|
| Anthropic Sans Web Text | Interface | Download from fonts/, or extract from a Claude app |
| Anthropic Serif Web Text | Conversation | Download from fonts/, or extract from a Claude app |
| Anthropic Mono Variable | Code | Download from fonts/, or extract from a Claude app |
Install: double-click each .ttf on Windows → Install; on macOS use Font Book. Then refresh / restart the web surface.
The fonts are proprietary to Anthropic, for personal use only, and are not covered by the MIT license (see the font notice in LICENSE).
Chinese needs no extra install — it falls back to the Source Han fonts (Noto Sans/Serif SC, Source Han), then to system CJK fonts.
Install
A standard dsh bundle plugin — the same shape as
dsh-whale-animation.
CLI (recommended)
Published on npm — install in one command:
dsh plugin --profile web add dsh-anthropic-fonts
or from GitHub:
dsh plugin --profile web add "github:Isilsolme/dsh-anthropic-fonts"
dsh plugin add runs pnpm add inside the profile and auto-appends the
bundle to dsh.profile.bundles. Restart the web surface afterwards.
⚠️ After installing the plugin you still need to install the font files manually (see "Fonts" above) — the npm package does not ship them.
Manual
// ~/.dsh/profiles/web/package.json
{
"dependencies": {
"dsh-anthropic-fonts": "^0.2.1"
},
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-anthropic-fonts"
]
}
}
}
then:
cd ~/.dsh/profiles/web && pnpm install
For local development you can instead use
"dsh-anthropic-fonts": "link:C:/path/to/dsh-anthropic-fonts"to point at a local checkout.
Uninstall / toggle off
dsh plugin --profile web remove dsh-anthropic-fonts
(or remove it from dependencies and bundles, then pnpm install).
Restart to restore the default fonts.
Compatibility & permissions
| Field | Declared in | Value |
|---|---|---|
| DSH range | dsh.compatibility.dsh |
>=0.1.0-rc.7 <0.2.0 |
| DSH per release | dsh.compatibility.dshReleases |
see below |
| Node.js | engines.node |
>=22 |
| Profile | dsh.compatibility.profiles, dsh.client.platform |
web |
dshReleases records every DSH release as compatible, incompatible, or
unknown. Only releases actually smoke-tested in a disposable profile are
marked compatible; releases covered by the range but not individually tested
stay unknown — a range is never presented as verified evidence.
Smoke-tested releases (disposable profile, DSH_HOME pointed at a temp
directory, never the real profile):
| DSH release | install | start | uninstall |
|---|---|---|---|
| 0.1.5-alpha.2 | ✅ | ✅ | ✅ |
| 0.1.5-rc.1 | ✅ | ✅ | ✅ |
| 0.1.5-rc.2 | ✅ | ✅ | ✅ |
How each release was checked:
DSH_HOME=/tmp/dsh-smoke dsh plugin --profile web add /path/to/dsh-anthropic-fonts # install
DSH_HOME=/tmp/dsh-smoke dsh --profile web --dump-config # entry anthropic-fonts in the composed tree
DSH_HOME=/tmp/dsh-smoke dsh --profile web --port 39123 --no-open # start, prints the served URL
DSH_HOME=/tmp/dsh-smoke dsh plugin --profile web remove dsh-anthropic-fonts # uninstall
Covered: dependency installed into the profile, bundle appended to
dsh.profile.bundles, bundle patch inserting entry anthropic-fonts, the web
server binding and serving a 200 page whose boot payload registers
dsh-anthropic-fonts/client.js, and full removal of both the dependency and the
bundle row. Not covered: visual acceptance in a browser (install the fonts
and refresh manually), and no independent security audit.
Permissions: the client half injects a single <style> element into
document.head; no file, network, command, or credential access. The host half
(lib/index.js) is empty.
After a new DSH release: re-run the four steps in a disposable profile, add that
release to dsh.compatibility.dshReleases as compatible, bump this plugin's
SemVer, and push.
How it works
Overrides only the font-family part of the DSH typography tokens:
--dsw-font-family (UI) and the non-code --dsw-font-markdown-*-font-family
tokens (conversation body), keeping DSH's official font sizes and line heights;
code font goes through --ds-font-family-code. The injected <style> is
owned by the client fiber and removed on uninstall.
Structure
lib/index.js— host half (empty; the effect is browser-only)lib/client.js— client half (injects the font CSS variable overrides)cordis.patch.yml— bundle patch inserting the plugin rowfonts/— the three Latin font files
Credits
Font stack modeled on blaxisomu/typora_claude (Anthropic Web fonts for Latin, Source Han for CJK).
License
MIT
Links
More in this category
Small-tailqwq/dsh-deep-whale#maid-atelier★ 2252
Whale-girl skin series for the DSH Web UI (maid-atelier).
elysia395/dsh-wallpaper-engine★ 384
Requires DeepSeek Harness 0.1.5-rc.1+ (DSH Desktop >= 2.0.7) and dsh-better-sidebar >= 0.19.0 - update both before installing or updating this plugin. Plays local Wallpaper Engine Video/Web wallpapers behind the chat, renders Scene wallpapers as extracted static frames, and adds content-rating/type filters, custom uploads and an iOS-style liquid-glass settings window.
d-dev0101/open-sea-skin★ 380
Realtime WebGPU ocean skin with quick controls for waves, daylight, glass opacity, and an automatic day cycle.
kingOfSoySauce/dsh-liang-skin★ 222
Adaptive reasoning slider skin that maps each model's available reasoning efforts onto a 0–30 visual intensity scale, with synchronized portraits, background, and interface colors.
RevolutionLA/dsh-dream-skin★ 192
One-command skin plugin: 8 original themes, translucent wallpaper with opacity/blur, per-user accent, and shareable theme-pack import/export, favorites and surprise-me — purely native on DSH's token system.
GGBond2424648901/deep-whale-day-night-theme★ 117
Non-commercial day/night whale-girl skin for official Harness rc.7: current no-viewport-frame layout, paired crystal-workshop and moon-tide scenes, chibi companions, translucent ornaments, and lightweight ambience.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.