This is a fontmatrix fork focused on keeping the project buildable with Qt5 and extending it so it can work as a font collection viewer, not only as a viewer for fonts installed in the operating system.
This fork currently builds on Linux and already includes a folder-based collection mode.
- Builds with
cmakeand Qt5. - Preserves the traditional system font browsing workflow.
- Can open a folder as a font collection.
- Can return to the full catalog with
File > Show All Fonts. - Has an explicit
File > Close Collectionaction (shortcut Ctrl+W). - Remembers the last opened collection.
- Can reload the current collection.
- Shows the full active collection path in the status bar.
- Stores recent collections in
File > Recent Collections. - Provides
File > Quick Collectionswith one-click access to:~/.fonts(if present)~/.local/share/fonts(if present)- Auto-detected common folders such as
album-fuentes/fuentes-extraidas,~/Fonts,~/fuentes, and similar.
- Visual indicators for collection mode:
- Window title shows the active collection name.
- Status-bar catalog label is styled with a highlighted color.
- Prevents old imported fonts outside the active folder from leaking into collection mode.
- Database layer exposes both
AllFontNames()(global catalog) andVisibleFontNames()(collection-filtered subset).
Functional details and pending work are tracked in ROADMAP.md.
These are the dependencies required for the base build that has already been verified in this fork on Debian/Ubuntu and derivatives:
For Debian 12
sudo apt update
sudo apt install -y \
build-essential \
cmake \
pkg-config \
qtbase5-dev \
qttools5-dev \
qttools5-dev-tools \
libqt5svg5-dev \
libqt5webkit5-dev \
libqt5sql5-sqlite \
libfreetype6-dev \
libfontconfig1-devFor Debian 13
sudo apt install -y \
build-essential \
cmake \
pkg-config \
qtbase5-dev \
qttools5-dev \
qttools5-dev-tools \
libqt5svg5-dev \
qtwebengine5-dev \
libqt5sql5-sqlite \
libqt5webenginewidgets5 \
libfreetype-dev \
libfontconfig1-dev 2>&1 | tail -30
Notes:
Qt5WebKitWidgetsis required by the current codebase.libqt5sql5-sqliteis important because Fontmatrix uses an SQLite database internally.harfbuzzandhyphenatedo not need to be installed separately for the verified base build, because they are already vendored in this tree.
These are not required for the verified base build, but the current CMakeLists.txt still contains optional support for them:
PythonLibsif-DWANT_PYTHONQT=trueis enabledICUif-DWANT_ICU=trueis enabledM17Nif-DWANT_M17N=trueis enabledPoDoFoif-DWANT_PODOFO=trueis enabled
This fork does not currently document a recently verified build for those optional features, so they should only be enabled when specifically needed for development work.
Minimum verified build:
cmake -S . -B build
cmake --build build -j4The binary is generated at:
build/src/fontmatrixTo install locally:
sudo cmake --install buildThe current default install prefix is /usr/local.
From the build tree:
./build/src/fontmatrix- Install dependencies.
- Configure with
cmake -S . -B build. - Build with
cmake --build build -j4. - Test both the system-font workflow and the collection workflow manually.
- Review ROADMAP.md before continuing new work.
Whenever collection mode is changed, at minimum test the following:
- Open Fontmatrix showing system fonts.
- Go to
File > Open Font Collection.... - Select a folder containing
.ttf,.otf, or.pfbfiles. - Verify that only fonts from that folder are shown.
- Verify that the window title and the status-bar catalog label show the active collection.
- Verify that
File > Close Collection(or Ctrl+W) returns to the global catalog. - Verify that
File > Reload Current Collectionstill works. - Verify that
File > Recent Collectionsreopens the folder correctly. - Verify that
File > Show All Fontsreturns to the global catalog. - Verify that
File > Quick Collectionsshows available entries such as~/.fontsor~/.local/share/fontswhen those folders exist. - Close and reopen the application and confirm that the last collection is restored.
CMakeLists.txt: top-level project configuration.src/CMakeLists.txt: sources, UI files, MOC setup, and executable linking.src/typotek.cppandsrc/typotek.h: main window, menu actions, and overall collection-mode state.src/fmfontdb.cppandsrc/fmfontdb.h: internal database and visible-font filtering.src/mainviewwidget.cppandsrc/mainviewwidget.h: main view refresh and font selection behavior.ROADMAP.md: actual fork status and next steps.
The main changes made during this development stage are concentrated in:
src/typotek.cppsrc/typotek.hsrc/fmfontdb.cppsrc/fmfontdb.hsrc/mainviewwidget.cppsrc/mainviewwidget.h
In summary, this fork already implements support for:
- opening folders as collections,
- switching between collection mode and the global catalog,
- explicitly closing a collection via
File > Close Collection(Ctrl+W), - remembering the last collection,
- reloading collections,
- showing the active path in the status bar,
- handling recent collections via
File > Recent Collections, - one-click opening of common folders via
File > Quick Collections(including~/.fonts,~/.local/share/fonts, and auto-detected user font folders), - visual collection-mode indicators (window title and highlighted status-bar label),
- correctly restricting the visible subset of fonts,
- and exposing both global (
AllFontNames()) and collection-filtered (VisibleFontNames()) APIs in the database layer.
- The project still carries many build warnings inherited from the historical codebase and from old Qt APIs.
- A successful build does not mean that every legacy feature has already been fully reviewed under the new collection mode.
- If filters, family views, export features, or font reload behavior are changed, check carefully that they do not accidentally fall back to the global catalog when they should use the visible subset.
- The repository still contains legacy files such as
READMEandINSTALLfrom the original project. ThisREADME.mddocuments the practical current state of this fork.
The following priority items are still pending at the time of writing:
- allow opening several collections at once and switching between them,
- add a dialog or banner explaining that the current filter is folder-based,
- add an option to open a collection non-recursively,
- add an option to open only certain formats (
.ttf,.otf,.pfb) within a collection, - review secondary operations that may still depend on the global catalog (font reload, font-book export),
- document more complete manual test procedures,
- and, if the project matures further, introduce automated tests.