# Maple Mono: a rounded coding font with ligatures and Nerd-Font icons

> Maple Mono is an OFL-1.1 licensed monospace font for IDEs and terminals, built from Python sources with a variable format, smart ligatures, and a CJK variant that keeps Chinese and English at a 2:1 width ratio. The V7 branch is a frozen snapshot; V8 work has moved to the variable branch.

**subframe7536/maple-font** — Maple Mono: Open source monospace font with round corner, ligatures and Nerd-Font icons for IDE and terminal, fine-grained customization options. 带连字和控制台图标的圆角等宽字体，中英文宽度完美2:1，细粒度的自定义选项

- Repository: https://github.com/subframe7536/maple-font
- Website: https://font.subf.dev
- Stars: 29,046 · Forks: 1,197
- Language: Python
- License: OFL-1.1
- Published: 2026-09-21 · Updated: 2026-09-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/subframe7536-maple-font

## What Maple Mono is for, and who ends up using it

Maple Mono targets the daily reading surface of a developer: the editor and the terminal. The README frames it as an open source monospace font focused on smoothing your coding flow, which the author says was created to improve his own working experience. That is a personal-project origin, and it shows in the scope: the feature list is about glyph shapes and rendering details rather than about a font family for print or branding.

The intended user is someone who stares at code for hours and cares about specific details: round corners, redrawn glyphs for characters like the at sign, dollar sign, percent sign, ampersand and Q, cursive letterforms in italics, and a large set of programming ligatures. A second audience is multilingual. The CN version, built on Resource Han Rounded, covers Simplified Chinese, Traditional Chinese and Japanese and holds a 2:1 width ratio between CJK and Latin glyphs, which matters for aligned Markdown tables and mixed-language source comments.

If you only need a font that renders text and you never change editor settings, Maple Mono is more configuration surface than you need.

## How the font is built: Python sources, variable axes and a frozen branch

The repository is not a folder of finished font files. The top level contains build.py, task.py, config.json, pyproject.toml, requirements.txt, a Dockerfile, and source/ and resources/ directories. The build depends on font tooling: the pyproject file pins foundrytools-cli, glyphslib, python-minifier, skia-pathops and typing-extensions, and requirements.txt lists the wider transitive set including afdko, fonttools, ufo2ft, fontparts and booleanoperations. In other words, the shipped fonts are compiled artifacts produced from sources by a Python pipeline.

That pipeline is also exposed to users. The Dockerfile installs FontForge on a python:3.11-slim base, copies requirements.txt, installs the Python dependencies, copies the project, declares a volume at /app/fonts, and sets the entrypoint to run build.py with an optional BUILD_ARGS environment variable. So a customized build is a supported path, not a side experiment.

Branch layout matters for anyone reading the code. The README states that this branch has been frozen as a snapshot of V7, and that V8 will include the latest features and bug fixes on the variable branch. The V7 line is described as a complete remake that introduced the variable font format, source files, redesigned glyphs and smarter ligatures. The latest releases listed are v8.0-beta.2 and v8.0-beta.1, alongside a cjk-base release, so the V8 line is in beta while the branch you are reading is a snapshot.

## Installing Maple Mono with Scoop, Homebrew or paru

The README points to the Releases page for v7.9 as the place to download font archives, and also documents package-manager routes. On Windows, Scoop installs from the nerd-fonts bucket. The base package is TTF; the NF variants add Nerd-Font icons, and the CN variants add the CJK character set. Run these three commands in order and the fonts appear in your user font directory.

```bash
scoop bucket add nerd-fonts
scoop install Maple-Mono
scoop install Maple-Mono-NF
scoop install Maple-Mono-NF-CN
```

On macOS and Linux, Homebrew casks follow the same naming pattern, including a Normal variant that omits the cursive italic letterforms. Installing a cask places the font files where the system font manager picks them up, so a fresh terminal or editor session should list Maple Mono in its font menu.

```bash
brew install --cask font-maple-mono
brew install --cask font-maple-mono-nf
brew install --cask font-maple-mono-nf-cn
```

On Arch, the README recommends ArchLinuxCN over AUR, because ArchLinuxCN lets you download a single package zip instead of every package zip in pkgbase. The unhinted TTF packages are the ones the README lists first for each variant.

```bash
paru -S ttf-maplemono
paru -S ttf-maplemono-nf-unhinted
paru -S ttf-maplemono-nf-cn-unhinted
```

If you would rather build from source, the repository ships a Dockerfile whose entrypoint runs the build script. The BUILD_ARGS environment variable is passed through to build.py, and the declared volume is /app/fonts.

```dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
VOLUME /app/fonts
ENV BUILD_ARGS=""
ENTRYPOINT ["sh", "-c", "python build.py $BUILD_ARGS"]
```

## Where the customization story is thinner than it looks

The README lists customization as a headline feature: enable or disable font features as you want, just make your own font. That is true in the sense that the build pipeline and config.json exist in the repository, but the README itself does not walk through editing config.json, nor does it document which keys control which feature, nor how to run build.py outside the Docker entrypoint. A reader who wants a custom build has to read the source tree to find out.

The CN version carries a more concrete trade-off that the README states plainly. It provides complete character set support for Chinese development environments, and the 2:1 alignment makes mixed-language display and Markdown tables tidy. In exchange, the spacing of Chinese characters is larger compared to other popular Chinese fonts, and the README links to a release note and an issue about it. It also states that the CN version has no variable format support. If you want both infinite weights and full CJK coverage, the documentation says you cannot have both in this release line.

## How Maple Mono differs from another popular coding font

A common comparison point is JetBrains Mono, which is also an open source monospace font aimed at developers. The difference in approach is where the design effort goes. JetBrains Mono is distributed as finished fonts from a vendor with a design team behind it. Maple Mono ships its sources and a Python build pipeline alongside the fonts, and the README treats rebuilding as a first-class use case via the Dockerfile and build.py. If your interest is in the font as a fixed artifact, that extra machinery is dead weight; if you want to change a glyph or a feature flag and rebuild, it is the reason to pick this project.

A second difference is the CJK story. Maple Mono's CN variant is built on Resource Han Rounded and explicitly targets a 2:1 Latin-to-CJK ratio, with the wider CJK spacing that follows from it. Fonts without a dedicated CJK variant push that problem onto fallback chains in the editor, where alignment is not guaranteed.

## Licence and the cost of keeping up

The repository is licensed OFL-1.1 and ships an OFL.txt file at the top level. The SIL Open Font License permits use, modification and redistribution of the font, including bundling it in applications, subject to its own conditions around renaming modified versions and the reserved font name. This is a summary of what the licence is, not legal advice; read OFL.txt in the repository before redistributing a modified build.

The upgrade cost is real because the project is mid-transition. The branch you would land on by default is described as a frozen snapshot of V7, while V8 is developed on the variable branch and the most recent releases are v8.0-beta.2 and v8.0-beta.1. Anyone pinning to V7 gets stability but not the newer fixes; anyone tracking V8 is tracking beta releases. The last push to the repository was on 2026-09-16, so the project is being worked on, but the branch layout means you have to decide which line you are following rather than just pulling the newest tag.

## Conclusion

Adopt Maple Mono if you want a rounded monospace face with smart ligatures, first-class Nerd-Font icons and a variable weight axis, and you are comfortable pulling from Releases or a package manager rather than a stable V8 tag. Do not adopt it if you need the CJK build with variable weights, since the README states the CN version has no variable format support, or if you want a frozen API to build against, because this branch is a snapshot of V7 and V8 lives on the variable branch. Before installing, check which package name matches the format you want (ttf, otf, unhinted, variable, NF, CN) on the Releases page for v7.9, and confirm the licence file OFL.txt ships with the archive you download.

## FAQ

### Is Maple Mono a Nerd Font?

The base Maple Mono package is not; the project publishes separate NF packages that the README describes as first-class Nerd-Font support, for example Maple-Mono-NF on Scoop and font-maple-mono-nf on Homebrew.

### What are the features of the Maple Mono font?

The README lists a variable format with a wide weight range and italic glyphs, round corners and redrawn glyphs for characters such as @ $ % & Q, a large set of smart ligatures, Nerd-Font icon support, and customization options that let you enable or disable font features.

### How do I install Maple Mono on Windows, macOS or Arch Linux?

On Windows, add the nerd-fonts bucket and run scoop install Maple-Mono or one of the NF and CN variants. On macOS and Linux, use the Homebrew casks such as font-maple-mono. On Arch, the README recommends the ArchLinuxCN packages such as ttf-maplemono, installed with paru.

### Does the CN version of Maple Mono support variable weights?

No. The README states that the CN version has no variable format support, so the variable weight axis is only available in the non-CJK builds.

### Which branch of Maple Mono should I use?

The README states that the v7 branch is frozen as a snapshot of V7, and that V8 with the latest features and bug fixes is on the variable branch. The most recent releases listed are v8.0-beta.2 and v8.0-beta.1, so the V8 line is still in beta.

## Sources

- [License: OFL-1.1](https://github.com/subframe7536/maple-font/blob/v7/LICENSE)
- [Project website](https://font.subf.dev)
- [README](https://github.com/subframe7536/maple-font/blob/v7/README.md)
- [Releases](https://github.com/subframe7536/maple-font/releases)
- [subframe7536/maple-font on GitHub](https://github.com/subframe7536/maple-font)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/subframe7536-maple-font
