Repository navigation
Releases: TheHolyOneZ/ZFontManager
Release list
ZFontManager 0.8.0
Fixed
-
Affinity only got one style of a family. When a document used a font,
the Affinity integration switched on that one file and nothing else, so a
document set in Regular left the other eleven styles of a twelve-style family
asleep and Affinity's font menu offered Regular alone. A matched font now
wakes its whole family, the way Affinity lists it. Only styles that were off
are switched on, so quitting Affinity no longer turns off styles you had
activated yourself. -
A family looked active when only one of its styles was. The family switch
was on as soon as any single style was active, which hid the problem above:
there was no reason to click it. Families now have a third state. A partly
active family shows a centred switch and "Partly active · 1 of 12 styles" in
the detail panel, and one click activates the styles that are missing. It
appears under both Activated and Deactivated in the sidebar. -
Affinity font names with spaces in the family were never matched by
family. PostScript names drop the spaces ("SourceSerif4-Semibold"), and the
fallback compared them against the spaced family name, so it found nothing.
Names are now compared with spaces and hyphens ignored. A name that matches
no family in the library is skipped instead of being guessed. -
Windows: a font Windows refused to load still counted as active. The
result of loading the file was never checked, so a font could be registered,
shown as active and still be missing from every other app. The file is now
loaded first and only registered once that worked; if registering fails, it
is unloaded again. Either way the toggle reports the error. -
Turning on part of a batch reported only the first error. Activating a
family or a selection now says how many files failed ("3 of 12 fonts
failed: ..."), and the library reloads its real state instead of flipping
every switch back as if nothing had changed. -
macOS: activating a font that was already active failed with "no parked
copy recorded", which would have broken activating the rest of a partly
active family. It is now a no-op. A failed move back out of the parking
folder also no longer forgets where the file was parked. -
Activate until close could turn off styles that were already on. It sent
every file of the family, so closing the app deactivated styles you had
switched on permanently. It now only sends the ones that were off.
Reported by zeusextremachine on Windows with Affinity by Canva, with an
unusually thorough investigation. (#18)
Added
- An activation log. Every activation and deactivation is written to
activation.login the app data folder, with the result for each file and
the names inside it (family, style, full and PostScript name). On Windows it
also records how many fonts Windows loaded from the file and which registry
entry was written. When a file claims the same name as one already
activated, or shares its PostScript name with another file the library scan
found (system fonts included), the log warns about it: apps then show only
one of the two, which looks exactly like a missing style. Fonts Windows refuses to load at startup
are logged too. The log stays under 1 MB.
Changed
- All nine languages gained the string for partly active families.
pnpm testruns tests for the Affinity matching and family states, and the
Rust side has tests for the log.
ZFontManager 0.7.2
All Affinity by Canva integration fixes. Includes 0.7.1, which never got its
own release.
If you turned the integration off because Affinity kept crashing, this fixes
it.
Download below or from https://zsync.eu/zfontmanager/
Affinity crashed on startup (#16)
Affinity's MCP server accepts connections before Affinity has finished
starting. ZFontManager connected the moment the process showed up, usually
while Affinity was still on "Initializing...", and that could kill it with no
error dialog. ZFontManager would then show "preamble read failed: error
decoding response body" or a failed link to localhost:6767/sse.
ZFontManager now waits 20 seconds after Affinity appears before touching it.
If the link still fails it backs off instead of retrying every pass: 10s, 20s,
40s, up to two minutes. Errors are only reported after three failures in a
row, so a slow start doesn't throw a warning at you.
Side effect: if a document is already open when Affinity launches, its fonts
get activated a bit after startup instead of right away.
Thanks to zeusextremachine for the report. It pinned the cause exactly.
Settings showed a stale connection status
The connection status was read once when you opened Settings and never
updated. With the 20 second wait above, it could sit on
Offline · Affinity link failed: error sending request for url
(http://localhost:6767/sse)
long after the link was fine. Same wording as one of the crash errors, so a
working setup looked broken. It updates live now.
The bigger problem was underneath: that status check opened its own connection
to Affinity, ignoring the 20 second wait. So opening Settings at the wrong
moment could cause the crash this release fixes. The watcher now publishes
what it already knows and the panel reads that, which costs Affinity nothing.
Test connection still probes when you press it.
Also fixed
-
Every poll built a new session, retrying all three loopback addresses and
up to three protocol versions. That's nine connection attempts for one
working link. The address and protocol that worked are remembered and
tried first, and dropped on failure so a changed setup still gets found. -
Open documents were re-checked every 10 seconds with a full handshake each
time. Now every 30 seconds. -
If a server accepted the connection but didn't report its own version
string, ZFontManager treated that as every protocol version being refused
and failed the link for no reason.
Downloads
Windows ZFontManager_0.7.2_x64-setup.exe 4.8 MB
ZFontManager_0.7.2_x64_en-US.msi 6.6 MB
macOS ZFontManager_0.7.2_aarch64.dmg 9.6 MB (Apple Silicon)
ZFontManager_0.7.2_x64.dmg 10.1 MB (Intel)
Linux ZFontManager_0.7.2_amd64.deb 8.1 MB
ZFontManager-0.7.2-1.x86_64.rpm 8.1 MB
ZFontManager_0.7.2_amd64.AppImage 82.5 MB (needs FUSE 2)
SHA-256 checksums
fc3a1b64bdfcd2ac4aa7c30bdda5253281738626314589ba853a4315fc9fcf07 ZFontManager_0.7.2_x64-setup.exe
cd7c8d1d827237b17842727a2b93289cf0095552435525a4e063ac6e846441c0 ZFontManager_0.7.2_x64_en-US.msi
180507bca6520590e5392c66f56534d4235ec6cd5b6f69e2d6ec31f0f8251841 ZFontManager_0.7.2_aarch64.dmg
58cc64df50bdb9461ac22effe34010a39fbc6aafac378df8810aecd52c3129e2 ZFontManager_0.7.2_x64.dmg
92e57952cd28b3f22b99b269672e437d015ff7d54346c5d7b5c648614a834e47 ZFontManager_0.7.2_amd64.deb
fec871493c547ede310faee1b7ecd785b68d4038bfa75ef8271dfbb9dc3d171f ZFontManager-0.7.2-1.x86_64.rpm
f5cc1265c162081945c0bc5d7fe3935899ec8b05bb7516edb7915e7dd42effbe ZFontManager_0.7.2_amd64.AppImage
ZFontManager is free software under GPL-3.0.
https://github.com/TheHolyOneZ/ZFontManager
ZFontManager 0.7.0
Two requested features, both from issues opened this month.
Download for your platform below, or from https://zsync.eu/zfontmanager/
Copy a font's name with one click (#14)
Click the family name in the detail panel to copy it. Click the PostScript
name in the metadata list below to copy that instead.
If you use an application whose settings are a text file with no font picker,
this is the name you need, and until now the PostScript name was shown but
could not be selected.
System tray (#15)
ZFontManager can now live in the tray. Three new settings under System:
Close to tray The close button hides the window instead of quitting.
Start with system Launch ZFontManager at sign-in.
Start minimised Start in the tray without opening the window.
All three are off by default, so nothing changes unless you turn them on.
On Windows, left-click the tray icon to bring the window back and right-click
for the menu. On macOS and Linux the menu opens on click, which is each
platform's own convention — Linux desktops do not deliver tray click events to
applications at all, so the menu is the way back. If the tray cannot be
created on your desktop, Close to tray stays inactive rather than leaving you
without a way to reach the window.
Under the hood
Tauri moves from 2.11.5 to 2.12.3, which the autostart integration requires,
and the webview layer (wry) from 0.55 to 0.57 along with it. The window sizing
and interface scaling added in 0.6.0 were re-checked against the new webview.
macOS builds are best-effort and were not run on
real hardware before release. The tray icon and start-minimised were verified
on Linux; close-to-tray and the autostart toggle are not covered by automated
tests, so if either misbehaves on your system please open an issue.
On Linux, use the .deb or .rpm. They install cleanly with your own system
libraries. The AppImage needs FUSE 2, which many current distributions no
longer ship by default.
Downloads
Windows ZFontManager_0.7.0_x64-setup.exe 4.8 MB
ZFontManager_0.7.0_x64_en-US.msi 6.6 MB
macOS ZFontManager_0.7.0_aarch64.dmg 9.6 MB (Apple Silicon)
ZFontManager_0.7.0_x64.dmg 10.1 MB (Intel)
Linux ZFontManager_0.7.0_amd64.deb 8.1 MB
ZFontManager-0.7.0-1.x86_64.rpm 8.1 MB
ZFontManager_0.7.0_amd64.AppImage 82.5 MB (needs FUSE 2)
The Linux packages now depend on libayatana-appindicator3-1 for the tray icon.
Your package manager will pull it in; nothing to do by hand.
SHA-256 checksums
336cfbe51d2c9d8cc173608e4e2cf6c3685d8f11fbda06305345b715deafb32b ZFontManager_0.7.0_x64-setup.exe
af39a107cea25a4f5613a19fce081259f659be167d486a80ad1bab98bbbf05d0 ZFontManager_0.7.0_x64_en-US.msi
1c791290e3076e501df71f6eccb09170cda566c13a6ce122fd43e08917f29908 ZFontManager_0.7.0_aarch64.dmg
b03d731ccd03c9d0b45a49abf89bdbeee2ad65e4eddd04b4acf4ddcda3363eff ZFontManager_0.7.0_x64.dmg
27dc7506eaaa1c612c39c5c14ba9c8bba8cdeab69b7b26b2a418bbca7330ab83 ZFontManager_0.7.0_amd64.deb
b79dd686390f356954a228c6ac69f02c7d30b3acdd32da459d935cc361ec9060 ZFontManager-0.7.0-1.x86_64.rpm
21adff045d049ee070a448ce0f647be2b6ee9283214f899081e53eaa602c9c65 ZFontManager_0.7.0_amd64.AppImage
ZFontManager is free software under GPL-3.0.
https://github.com/TheHolyOneZ/ZFontManager
ZFontManager v0.6.1
TITLE: ZFontManager 0.6.1
A small release with one requested feature.
Download for your platform below, or from https://zsync.eu/zfontmanager/
What's new
Show only the fonts you installed yourself. A new Show control at the top
of the filter menu switches between all fonts, system fonts, and user-installed
fonts. On a machine carrying several hundred system faces, the ones you added
by hand were easy to lose in the list; now they are one click away.
It composes with everything else, so you can narrow to your own fonts and then
filter those by format, typographic feature or character.
Requested by a user who found their own fonts hard to pick out.
Also in this release
The AppImage is back. It was held out of 0.6.0 because it had never been run on
a real distribution. This one has, and it works — but note that an AppImage
needs FUSE 2, which many current distributions no longer install by default. If
it refuses to start, install your distribution's fuse2 package, or use the .deb
or .rpm, which remain the better choice where they are available.
Downloads
Windows ZFontManager_0.6.1_x64-setup.exe 4.6 MB
ZFontManager_0.6.1_x64_en-US.msi 6.3 MB
macOS ZFontManager_0.6.1_aarch64.dmg 9.2 MB (Apple Silicon)
ZFontManager_0.6.1_x64.dmg 9.7 MB (Intel)
Linux ZFontManager_0.6.1_amd64.deb 7.7 MB
ZFontManager-0.6.1-1.x86_64.rpm 7.7 MB
ZFontManager_0.6.1_amd64.AppImage 81.8 MB (needs FUSE 2)
SHA-256 checksums
bc137a2f50d8830010e76764d6ec253917432f5d3a6dce7a8b8ce68a8ccd7034 ZFontManager_0.6.1_x64-setup.exe
776b1863341a41f5b8bb42d30a7ac980637ae34f573c8bce65f04cc0a9ab6034 ZFontManager_0.6.1_x64_en-US.msi
15b28cd684b1cc8a57607a3361e80b07645e680620c8f5246ed1cab8f0953a73 ZFontManager_0.6.1_aarch64.dmg
3862d0d33953d3cf0780f70054bdc2eceec0a83bba54afdbf85372d7796e6ca9 ZFontManager_0.6.1_x64.dmg
d685760e34514e49ac546830804575d14f0935bdcef4121e0e0e520ea9b9dd6e ZFontManager_0.6.1_amd64.AppImage
86ba45deabd69444f33203c65863f06af7ceb2c51496fdf513662b47ef5f1616 ZFontManager_0.6.1_amd64.deb
ea78f5893a399178bee2b02bbd993d49072162af36d4e8450e53564de3d577c3 ZFontManager-0.6.1-1.x86_64.rpm
ZFontManager is free software under GPL-3.0.
https://github.com/TheHolyOneZ/ZFontManager
ZFontManager v0.6.0
Download: https://zsync.eu/zfontmanager/
Changelog
All notable changes to ZFontManager are documented here. The format follows
Keep a Changelog, and the project uses
Semantic Versioning.
[0.6.0] — 2026-09-21
Everything here comes from one report by a tester running Fedora on a 1366x768
ThinkPad.
Added
- Interface scale. ZFontManager now measures the usable area of your screen
at startup and picks a scale that fits the whole interface into it, so a
small or low-resolution display shows the entire layout instead of a cropped
one. Settings → Appearance → Interface scale overrides it: Auto, or a
fixed 80–125% if you would rather decide, which also serves anyone on a large
display who simply wants the interface bigger. - Reduce transparency. A new Appearance setting that replaces the frosted
glass with solid panels. It is easier to read, it is the accessible choice,
and it removes the most expensive thing the app draws — which makes a real
difference on older integrated graphics. - Filter by file format. OpenType, TrueType, WOFF and WOFF2, in the filter
menu alongside classification and language support. - Filter by typographic feature. Swashes, stylistic alternates,
discretionary ligatures, small caps, oldstyle figures and fractions. The
feature list is now read while the library is indexed rather than only when a
font is selected, so it can be filtered on. If you are hunting for faces with
alternate letterforms, this is the fastest way to find them. - Find fonts containing a specific character. Type any character into the
filter menu and the library narrows to the fonts whose character map covers
it. The search reads every font file, so it runs on demand rather than
continuously, and it reports the codepoint it resolved your character to. - Glyph count. Shown in the inspector, and available as a sort order.
- Collapsible sidebar sections. Browse, Collections and Tags each fold away,
and stay folded between launches. - Sort by glyph count, next to name, styles and size.
Fixed
- The window could open taller than the screen. The default size is right
for the displays the app was designed against, but nothing checked whether it
fitted. On a 1366x768 screen roughly a hundred pixels of the app sat below
the bottom edge once the desktop panel was counted, which among other things
hid the inspector's Tags section. The window is now measured against the
monitor's usable area — panels, docks and taskbars excluded — and clamped and
centred to fit. The configured default is unchanged, so nothing moves on a
display that was already big enough. - The context menu could not be scrolled. It had no height limit, so with
enough tags the "Tag all" menu grew past the screen and lost its top. It now
scrolls, and can no longer be positioned off the top or left edge. - Panels turned unreadable when the compositor could not blur. Every
overlay — the context menu, Compare, Settings, the selection bar — was a
ten-percent-white surface that relied entirely on a backdrop blur to become
legible. Where that blur silently does nothing, the panel was a haze. The new
Reduce transparency setting makes them solid. - No resize handles. ZFontManager draws its own title bar, and drawing your
own means the window has no resize border unless you provide one. There was
none, so the edges were a one-pixel guessing game. All four edges and corners
are now grabbable, with the right cursor on each. This affected Windows and
macOS too. - The online font browser ignored the preview size slider, rendering every
preview at a fixed size while the rest of the library followed the control.
Notes
- The tiny flickering squares reported on Intel HD 4000 with the crocus driver
are not drawn by the app and were not reproducible away from that hardware.
Reduce transparency removes the most likely trigger; if you see them, please
try it and say whether it helps.
ZFontManager 0.5.1
One bug, every platform: the sidebar didn't scroll. If you have enough
collections and tags, the bottom of it — Tags, Trash, About, Shortcuts — was
simply cut off, and the onboarding tour could point at a spot below the
window. Both fixed.
Download for your platform below, or from https://zsync.eu/zfontmanager/
What's fixed
The sidebar scrolls. It never had a scroll region, so once Browse,
Collections and Tags together grew taller than the window, everything past the
bottom edge was silently clipped — the Tags section first, then Trash, About
and Shortcuts. 0.4.0 made this easy to hit by adding four rows to Browse.
Browse, Collections and Tags now scroll; Trash, About and Shortcuts stay pinned
at the bottom.
The tour keeps its target in view. Each step scrolls whatever it points at
into view before drawing the spotlight, so it can no longer highlight
something below the window edge.
Thanks to S on Fedora for the report — a real library with real tags is what
it took to hit it.
Nothing else changed. If you're on 0.5.0 and your sidebar fits, there is no
hurry.
Downloads
Windows ZFontManager_0.5.1_x64-setup.exe SIZE
ZFontManager_0.5.1_x64_en-US.msi SIZE
macOS ZFontManager_0.5.1_aarch64.dmg SIZE (Apple Silicon)
ZFontManager_0.5.1_x64.dmg SIZE (Intel)
Linux ZFontManager_0.5.1_amd64.deb SIZE
ZFontManager-0.5.1-1.x86_64.rpm SIZE
SHA-256 checksums
SHA ZFontManager_0.5.1_x64-setup.exe
SHA ZFontManager_0.5.1_x64_en-US.msi
SHA ZFontManager_0.5.1_aarch64.dmg
SHA ZFontManager_0.5.1_x64.dmg
SHA ZFontManager_0.5.1_amd64.deb
SHA ZFontManager-0.5.1-1.x86_64.rpm
ZFontManager is free software under GPL-3.0.
https://github.com/TheHolyOneZ/ZFontManager
ZFontManager 0.5.0
Browse and install nearly two thousand free fonts from inside the app, with a
live preview and the licence in front of you before you download. Plus a clear
answer, at last, to "why can't I turn this font off?"
Download for your platform below, or from https://zsync.eu/zfontmanager/
What's new
An online font browser. Switch it on under Settings → Online font browser
and an Online section appears in the sidebar with the whole Google Fonts
catalogue — 1,980 open-licence families. Search by name, filter by category,
licence, or variable-only, and add a family to your library with one click.
Downloaded families are tagged "Online" automatically and marked "In library"
in the browser afterwards.
See it before you take it. Open a family and your current sample text is
rendered live in that font. Below it: the designer, the licence with a link to
the full text, the Reserved Font Name where the OFL declares one, and the list
of files. The licence text is stored alongside the font when you add it.
Complete fonts, not web subsets. Files come straight from the google/fonts
repository — the canonical source everything else mirrors. You get the full
variable font with every script, not a per-language slice cut down for web
embedding. That's why Bunny Fonts and CDN-hosted copies aren't used: they
serve WOFF and WOFF2 subsets that Windows cannot install and that would put a
dozen partial copies of each style in your OS.
System fonts now say why they can't be turned off. On Windows and macOS,
the operating system owns its own fonts. Until now their cards showed a dimmed
toggle that looked switched on but did nothing. They now show a small "OS"
lock badge with the reason on hover — managed by the operating system, can't
be turned off. And the filter menu gains "Hide fonts the OS won't let you turn
off", so the library can show only what you can actually act on. On Linux,
where fontconfig can exclude any font, nothing changes — everything keeps its
toggle.
How the online browser handles your privacy
This is the first ZFontManager feature that contacts a real server, so here is
exactly what it does and doesn't do.
It is off by default. A fresh install never contacts a font provider.
Switching it on sends nothing. A request goes out only when you open the
Online section and search or download. There is no background refresh, no
check on startup, and no probe when you open Settings.
Search is local. The catalogue — about 440 KB — is fetched once from
api.fontsource.org and cached for seven days. Typing filters that cache on
your machine. The provider sees one request a week, not one per keystroke.
Two hosts, both named under the toggle: api.fontsource.org for the catalogue,
raw.githubusercontent.com for font files and licences. Every request passes
through one client that refuses if the setting is off, rejects any other host,
follows no redirects, and identifies itself as ZFontManager.
Nothing about your library leaves the machine. The "In library" badge is
computed locally. What those two hosts receive is your IP address, the
catalogue request, and the fonts you choose to download — nothing else.
The README's Privacy section carries a table of every feature that can open a
connection. This release adds the first row that says "Yes, leaves your
machine", with exactly what and to whom.
Fixed
- reqwest was built without a TLS backend. The Affinity integration only ever
spoke plain HTTP to loopback, so it was never noticed, but any https://
request would have failed at runtime. It now uses rustls with the operating
system's own trust store on all three platforms. - The install progress toast could stay on screen indefinitely when an install
was started by anything other than a drag-and-drop. It now dismisses itself
once the last file lands.
Platform notes
The online browser has no platform-specific code — it is HTTP, JSON and file
writes, then a call into the same import path drag-and-drop uses. Downloaded
fonts are activated exactly like any other import on each platform.
Affinity auto-activation and the Photoshop/Illustrator integration remain
Windows and macOS only, since that software has no Linux build.
Tested on Windows and Linux. macOS builds are best-effort and were not run on
real hardware before release. If something misbehaves on macOS, please open an
issue.
On Linux, use the .deb or .rpm. They install cleanly with your own system
libraries. An AppImage is not part of this release.
Contributing
Everything has to work on Linux, Windows and macOS, and any interface text has
to be translated into all nine languages — CONTRIBUTING.md explains both, with
the reasoning. Translations have a shorter guide in docs/TRANSLATING.md.
Downloads
Windows ZFontManager_0.5.0_x64-setup.exe 4.6 MB
ZFontManager_0.5.0_x64_en-US.msi 6.3 MB
macOS ZFontManager_0.5.0_aarch64.dmg 9.2 MB (Apple Silicon)
ZFontManager_0.5.0_x64.dmg 9.7 MB (Intel)
Linux ZFontManager_0.5.0_amd64.deb 7.7 MB
ZFontManager-0.5.0-1.x86_64.rpm 7.7 MB
SHA-256 checksums
55c94c40ed1c9296b33b4aec79f993da487b2a2d7361b9f569e2f50785c646f4 ZFontManager_0.5.0_x64-setup.exe
88093d58af33d372e0d5bf87995b3563b090eeeeb2ccb3eefd6a95137574e2bf ZFontManager_0.5.0_x64_en-US.msi
08cea92fe3ba993d4253453987ffb39e561dfaee7b8219dfb8e470345ceabbe5 ZFontManager_0.5.0_aarch64.dmg
a141ae33d151490625a742c957581114bbf4fafabafa55004ee284a22fc01811 ZFontManager_0.5.0_x64.dmg
76ae9f281fe30f2ced46352d517ec34ddfa52f2293f3b20ebfa66452123f6a7d ZFontManager_0.5.0_amd64.deb
6695f69721ddac7d9b00467be0d440cb477dbb262846a7885400381a4b9110f2 ZFontManager-0.5.0-1.x86_64.rpm
ZFontManager is free software under GPL-3.0.
https://github.com/TheHolyOneZ/ZFontManager
ZFontManager 0.4.0
Import fonts without moving them, auto-activation for Affinity by Canva, and
activate a whole library in one keystroke.
Download for your platform below, or from https://zsync.eu/zfontmanager/
What's new
Import on your terms. Dropping fonts in now asks how you want them handled.
Add to library leaves the file exactly where it is — an external drive, a
project folder, wherever you keep it — and registers it from there. Copy to
system folder copies it into your library folder and clears the original away.
You can point that library folder anywhere you like under Settings.
Duplicates are noticed. Fonts already in your library are reported and
skipped instead of quietly being added twice.
Auto-activation for Affinity by Canva. Open a document and the fonts it
asks for switch themselves on, for as long as Affinity is running, then switch
back off when you quit. Nothing is installed permanently. It is off until you
turn it on, needs Affinity 3.2 or newer with Model Context Protocol enabled,
and only ever talks to the copy of Affinity on your own machine.
Activate a whole library at once. Ctrl+A (Cmd+A on macOS) selects every font
in view — the entire library, or just what your search and filters have narrowed
it to — and one right-click activates or deactivates the lot, with a single undo.
Also in the command palette as "Select all".
Filter by state. New sidebar sections for Activated, Activated until close,
Deactivated, Last imported and System fonts, each reachable from the command
palette.
Per-file actions when two fonts share a name. The conflict panel lists every
file involved, marks which copy is active, and lets you keep, remove or trash
each one separately. System fonts stay protected.
All nine languages are complete again. German, Spanish, French, Japanese,
Brazilian Portuguese, Russian, Simplified and Traditional Chinese now cover
every string, with the plural forms each language actually requires.
Fixed
- Imported fonts were reported as inactive even when "auto-activate imports" was
switched on and they had in fact been activated. - On macOS, deactivating a font added with "Add to library" moved the original
file out of its folder. Linked fonts are now linked and unlinked instead, and
the original is never touched. - Fonts added with "Add to library" were invisible to other applications on
Linux and macOS, because they sat outside the directories those systems scan. - Removing a font added with "Add to library" only unregistered it on Windows.
On Linux and macOS it stayed available to other applications afterwards. - The Affinity watcher scanned every running process every two seconds even when
the feature was switched off, which was the default. It now does that only
while the feature is on, and never starts at all on Linux. - Opening Settings probed for Affinity even with the feature switched off.
- The source badge in the name-conflict panel showed "Managed" and "User" in
English in every language.
A note on privacy
This release adds the first feature that opens a network connection, so it is
worth being precise about what that means.
Out of the box, nothing is sent anywhere. Nothing about your fonts, tags,
collections or notes is ever uploaded — no feature does that, on or off.
Affinity auto-activation is off by default. When you switch it on, ZFontManager
talks to the copy of Affinity running on your own computer, over loopback. That
conversation never leaves your machine: no DNS lookup, no packet on your
network, nothing for an ISP or anyone else to see. With the feature off, no
connection is attempted at all.
The README now carries a table listing every feature that can open a connection,
what it contacts, and whether anything leaves your machine. Anything added in
future goes in that table, off by default, and says so before you enable it.
Platform notes
Affinity auto-activation, and the existing Photoshop and Illustrator
integration, depend on software that has no Linux build. They appear only on
Windows and macOS, and nothing runs in the background on Linux looking for them.
If the AppImage will not start, install the .deb or .rpm instead — they are the
more reliable option on Linux. Two things commonly stop an AppImage: it needs
FUSE 2, which many current distributions no longer install by default, and it is
built on GitHub Actions against that runner's system libraries, so an older
distribution can be missing a version it expects. The packages have neither
problem.
This release was tested on Windows and Linux. The macOS builds are provided on a
best-effort basis and could not be exercised on real hardware before release —
the macOS-specific changes above were reviewed and type-checked but not run. If
something misbehaves on macOS, please open an issue and it will be looked at
promptly.
Contributing
CONTRIBUTING.md is new in this release. If you are thinking of sending a pull
request, the two things worth knowing up front: everything has to work on Linux,
Windows and macOS, and any interface text has to be translated into all nine
languages. Both are explained there, with the reasoning.
Translations have their own shorter guide in docs/TRANSLATING.md — no code
required, and new languages are genuinely welcome.
Downloads
Windows ZFontManager_0.4.0_x64-setup.exe 3.6 MB
ZFontManager_0.4.0_x64_en-US.msi 5.0 MB
macOS ZFontManager_0.4.0_aarch64.dmg 7.7 MB (Apple Silicon)
ZFontManager_0.4.0_x64.dmg 8.0 MB (Intel)
Linux ZFontManager_0.4.0_amd64.AppImage 79.7 MB
ZFontManager_0.4.0_amd64.deb 6.0 MB
ZFontManager-0.4.0-1.x86_64.rpm 6.0 MB
SHA-256 checksums
608b34ced2acf0cd780b59c0af5b899ae19c9fabb7855753ff0fdce0d231f00a ZFontManager_0.4.0_x64-setup.exe
d4e6da510287d879d3b72f4f8d867adf58226f42bad368b88c150bd0f469a3d2 ZFontManager_0.4.0_x64_en-US.msi
d8df2905922c7c1783a088073beee38d0f3f30a4de9fd6cb70771d34cab4a961 ZFontManager_0.4.0_aarch64.dmg
e6b7cc0045dd56d67eee2bde371a119442101da1913a4aaac7f4f0e2f42fb118 ZFontManager_0.4.0_x64.dmg
02c4dc5491b20669c0432d3227d1fb62cfb015608b4e17fdd41bd5da98f19217 ZFontManager_0.4.0_amd64.AppImage
a88a2547793ba6d5bf1817bab6d91965a4dd6cacc6ad64c05ff8b895b88873d4 ZFontManager_0.4.0_amd64.deb
f32deed87c9e29f1704b53489a7ca697896a5bc7647d5a75b90a2ebaeac72d05 ZFontManager-0.4.0-1.x86_64.rpm
ZFontManager is free software under GPL-3.0.
https://github.com/TheHolyOneZ/ZFontManager
ZFontManager v0.3.0
Changelog
All notable changes to ZFontManager are documented here. The format follows
Keep a Changelog, and the project uses
Semantic Versioning.
0.3.0 — 2026-09-11
Added
- Apply a font in Photoshop or Illustrator (Windows and macOS). Right-click a
family → Apply in Photoshop… / Apply in Illustrator…, or use the command
palette with a family selected. ZFontManager talks to the running app
(COM on Windows, AppleScript on macOS) and switches every selected text
layer or text frame to the font; with nothing selected it adds a new text
layer using the family name as sample text. A sleeping font is woken "until
close" first, so auditioning never installs anything permanently. Every
outcome is reported in a toast (applied with layer count, layer created,
app not running, no open document, app hasn't refreshed its font list yet).
Not yet verified against a real Photoshop/Illustrator — the app-side
plumbing and scripts are tested up to the Adobe boundary only. Feedback
welcome. - Adding or removing a watched folder now indexes the library immediately,
shows the progress inline in Settings, and reports what changed
("3 new fonts found", "4 fonts removed", or that no font files were found). - Linux bundles (AppImage, .deb, .rpm) are now built by the GitHub Actions
workflow alongside the Windows and macOS installers, and
prepare-release.mjsrefreshes the website download page and checksums.
Fixed
- Watched folders on Windows. Fonts in a folder added in Settings were
shown as active, could not be deactivated ("font not found in per-user
registry"), and every card said "This format can't be previewed yet".- Activation is now driven by what Windows itself lists in the font
registry (read through the Win32 API instead of scrapingreg.exe
output). Fonts from a watched folder start inactive; switching one on
registers it for your user account right where it is — external drives
included — and switching it off unregisters it, without errors when there
was nothing to unregister. Original registry names are remembered so a
round trip leaves the registry exactly as it was. - Fonts registered from outside the per-user font folder are loaded again
at app start so they are available to other apps immediately. - Bulk activation keeps going past a failing file and always persists what
was applied.
- Activation is now driven by what Windows itself lists in the font
- Previews for fonts outside the standard folders. Watched folders (and
on Linux/usr/local/share/fonts) were never allowed through the preview
asset scope, so their fonts could not render. Every scanned folder is now
allowed at startup and whenever the folder list changes. - Constant GPU load. A perpetual background-gradient animation kept the
compositor busy on every frame and forced the blurred sidebar and detail
panel to re-blur continuously — up to ~50 % GPU on large displays and
integrated GPUs. The gradient is now static; idle GPU use drops to zero. - The in-app "Reduce motion" setting now also disables CSS animations
(skeleton shimmer, toast flashes), not only the interface springs. - macOS: a deactivated (parked) font lost its preview, glyph map and
OpenType feature list because those were read from the original path. - Registry entries ZFontManager writes on Windows now use the names Windows
itself would use:(OpenType)for CFF files, every face named for
collections, and a numbered suffix when a name is already taken.
Changed
- All nine languages gained the strings for the features above.
[0.2.0] and earlier
Earlier releases predate this changelog. Their installers remain available on
the download page.
ZFontManager v0.2.0
ZFontManager
The font manager Linux never got — and Windows & macOS make you pay for.
Preview, organize, activate and install fonts across all three desktop platforms,
from one clean, fast, native app. Your fonts never leave your machine.
⬇ Download ·
🌐 Website ·
💻 Source Code ·
👤 The Developer
The library: every family rendered live, one toggle away from any app's font menu.
📖 Table of contents
- Why ZFontManager?
- Feature tour
- Your whole library, rendered live
- Activate & deactivate — the killer feature
- Try a font before committing
- Installing fonts
- A trash can, not a shredder
- Organize: tags, collections, favorites, notes
- Find anything
- Compare fonts side by side
- The waterfall view
- Peek inside a font
- Export a specimen sheet
- The command palette
- Themes, sound & motion
- Your language
- Back up your curation
- Keyboard shortcuts
- Translations
- Getting ZFontManager
- Platform notes
- Privacy
- FAQ
- Building from source
- About the developer
- License
💡 Why ZFontManager?
If you've ever worked with type on Linux, you know the drill: fonts live in
scattered folders, previewing means opening each file one by one, and
"managing" them means a terminal and crossed fingers. On Windows and macOS
the situation is better — but the good tools cost real money.
ZFontManager is the answer to both:
- One app, three platforms. The same clean interface on Linux, Windows and macOS.
- Native and fast. Not a website in a box — it starts quickly, scrolls
smoothly through hundreds of families, and feels at home on your desktop. - Speaks your language. Nine languages, picked up from your system
automatically — English, Deutsch, Español, Français, Português (Brasil),
Русский, 日本語, 简体中文 and 繁體中文. - Yours. Free, open source (GPL-3.0), no account, no cloud, no telemetry.
Everything happens on your machine.
Note
ZFontManager is currently at version 0.2.0. It's already very usable
day-to-day, but expect the occasional rough edge — and please
report anything odd!
✨ Feature tour
Your whole library, rendered live
On first launch, ZFontManager scans the standard font locations on your
system — both the system-wide ones and your personal user fonts — and builds
your library automatically. You can add extra folders to watch in Settings,
and the app notices when new fonts appear in them.
Every font family is shown in its own typeface, not as a generic name in
a list. Type any sentence into the preview box at the top — your brand name,
a headline you're working on — and the entire library re-renders in it
instantly. A size slider takes the preview anywhere from small print to
poster size.
Fonts with many weights and italics are grouped into a single family card.
Expand the card and every style — Light, Regular, Bold, Black, the italics —
renders live underneath.
Three views, switchable from the top bar:
| View | What it's for |
|---|---|
| Grid | Big, comfortable cards — the browsing view |
| List | Compact rows with style count, format and size — the overview |
| Waterfall | One family shown at every size at once — the type-nerd view |
Activate & deactivate — the killer feature
This is what separates a font manager from a font viewer.
A huge font library is wonderful — until you open the font picker in your
design app and have to scroll past 900 entries. Deactivating a font in
ZFontManager removes it from other applications' font menus without
uninstalling it. The files stay exactly where they are; the font just goes
to sleep. Flip the toggle again and it's back.
- Toggle a single family with one click (or press Space)
- Select many families and activate/deactivate them all at once
- Deactivated fonts stay in your library, gently dimmed, ready to wake up
Each platform has its own proper mechanism under the hood (see
Platform notes) — but from where you sit, it's just a
switch.
Tip
Keep your everyday fonts active and park the other 800 decorative ones.
Your design app's font menu becomes usable again, and every font is still
one click away.
Try a font before committing
Not sure you want that font cluttering your menus permanently? Right-click →
"Activate until close" wakes a font up for this session only. When you
quit ZFontManager, it's automatically put back to sleep. Perfect for
auditioning a typeface in your design app without any cleanup afterwards.
Installing fonts
Drag anything into the window:
- individual font files (TTF, OTF, TTC, WOFF and friends),
- whole folders,
- even ZIP archives — fresh from a font site, no unzipping needed.
ZFontManager installs them into your user font directory, and they appear in
the library immediately. A progress toast keeps you informed on big drops.
A trash can, not a shredder
Uninstalling a font never silently deletes anything. Removed fonts go to a
restorable Trash inside the app — the actual files are kept safe. Made a
mistake? Open the Trash tab, hit Restore, and the font is back exactly where
it was. Only "Empty Trash" or a per-item "Delete permanently" actually
removes files, and both are clearly marked.
Organize: tags, collections, favorites, notes
Four complementary ways to impose order on font chaos:
- Tags — free-form labels on any family ("condensed", "80s", "client-x").
Tags appear in the sidebar and act as instant filters. Tag many fonts at
once via multi-select. - Collections — folders you curate by hand, per project or per client.
Right-click any font → Collections → add it. A font can live in as many
collections as you like. - Favorites — one star for your go-to typefaces, with its own sidebar view.
Press F on any selected font. - Notes — a small text field per family for things you'd otherwise
forget: "licensed for Client X only", "kerning breaks above 60px".
Find anything
- Search by name, live as you type (press / to jump to the box).
- Filter by classification — Serif, Sans, Mono, Script, Display and more.
- Filter by writing system — Latin, Cyrillic, Greek, and others.
- Variable fonts only — one switch to see just the flexible ones.
- Sort by name, style count, or file size.
Filters combine, and the empty state always tells you which filters are
active so you're never staring at a mysteriously empty library.
Compare fonts side by side
Select two to four families — Ctrl+Click each one, or hold
Shift and use the arrow keys — and a small bar appears at the
bottom of the window with a Compare button. Click it (or just press
C, or right-click the selection) and the compare view opens: the
same preview text rendered in parallel, resizable, so you can finally settle
"which of these three sans-serifs is the one" with your own eyes instead
of your memory.
The waterfall view
One family, every size from small to huge, stacked on one screen. This is
how type designers evaluate a font — you can instantly see where it gets
muddy, where the details shine, and whether it holds up at footnote size.
Peek inside a font
Click any family and the detail panel slides in:
- Every style listed with live samples and per-style export
- Variable font axes — drag sliders for weight, width, slant and
whatever else the font offers, and watch the preview morph in real time - OpenType features — ligatures, small caps, stylistic alternates,
oldstyle numerals… toggle them and see exactly what they do before you
enable them in your design app - Character map — every glyph the font actually contains; click a
character to copy it - The practical facts — format, file size, file path, license info when
the font declares one, plus your tags and notes
Export a specimen sheet
Right-click a family → Export specimen and get a beautiful, shareable
PNG type specimen — the classic ...