subframe7536/maple-font
Fork: 99 Star: 6446 (更新于 2025-01-19 00:51:47)
license: OFL-1.1
Language: Python .
[Try V7!] Maple Mono: Open source monospace font with round corner, ligatures and Nerd-Font for IDE and command line. 带连字和控制台图标的圆角等宽字体,中英文宽度完美2:1
最后发布版本: v7.0-beta34 ( 2025-01-05 21:43:06)
[!note]
When will V7 become stable?
It is almost stable now.
As a side project during my weekends, I will release a new beta version to fix the bugs reported or encountered in my daily coding within 1-2 weeks, and do some work on the new website and build tools.
If everything goes well, the stable version will be released later this year.
Maple Mono
Maple Mono is an open source monospace font focused on smoothing your coding flow.
I create it to enhance my working experience, and hope that it can be useful to others.
V7 is a completely remade version, providing variable font, redesigning more than half of the glyphs and offering smarter ligatures. You can checkout V6 here
Features
- ✨ Variable - Infinity font weights with fine-grained italic glyphs.
- ☁️ Smooth - Round corner, brand-new glyph of
@ $ % & Q ->
and cursivef i j k l x y
in italic style. - 💪 Useful - Large amount of smart ligatures, see in
features/
- 🎨 Icon - First-Class Nerd-Font support, make your terminal more vivid.
- 🔨 Customize - Enable or disable font features as you want, just make your own font.
Simpified Chinese, Traditional Chinese and Japanese
The CN version contails the glyphs of simplified and traditional Chinese, and Japanese, which are not as normal as most CN fonts. The CJK glyphs' spacing is much looser for better metric alignment, see details in release notes and this issue.
ScreenShots
Download
You can download all the font archives from Releases.
Arch Linux
paru -S ttf-maple-beta
Naming FAQ
Features
-
Ligature: Default version with ligatures (
Maple Mono
) -
No-Ligature: Default version without ligatures (
Maple Mono NL
) -
Normal-Ligature:
--normal
preset with ligatures (Maple Mono Normal
) -
Normal-No-Ligature:
--normal
preset without ligatures (Maple Mono Normal NL
)
Format and Glyph Set
- Variable: Minimal version, smoothly change font weight by variable
- TTF: Minimal version, ttf format [Recommend!]
- OTF: Minimal version, otf format
- WOFF2: Minimal version, woff2 format, for small size on web pages
-
NF: Nerd-Font patched version, add icons for terminal (With
-NF
suffix) -
CN: Chinese version, embed with Chinese and Japanese glyphs (With
-CN
suffix) -
NF-CN: Full version, embed with icons, Chinese and Japanese glyphs (With
-NF-CN
suffix)
Font Hint
-
Hinted font is used for low resolution screen to have better render effect. From my experience, if your screen resolution is lower or equal than 1080P, it is recommended to use "hinted font". Using "unhinted font" will lead to misalignment or uneven thickness on your text.
- In this case, you can choose
MapleMono-TTF-AutoHint
/MapleMono-NF
/MapleMono-NF-CN
, etc.
- In this case, you can choose
-
Unhinted font is used for high resolution screen (e.g. for MacBook). Using "hinted font" will blur your text or make it looks weird.
- In this case, you can choose
MapleMono-OTF
/MapleMono-TTF
/MapleMono-NF-unhinted
/MapleMono-NF-CN-unhinted
, etc.
- In this case, you can choose
- Why there exists
-AutoHint
and-unhinted
suffix?- for backward compatibility, I keep the original naming scheme.
-AutoHint
is only used forTTF
format.
- for backward compatibility, I keep the original naming scheme.
CDN
Maple Mono
Maple Mono CN
Custom Build
The config.json
file is used to configure the build process. Checkout the schema or document for more details.
There also have some command line options for customizing the build process. Cli options have higher priority than options in config.json
.
Use Github Actions
You can use Github Actions to build the font.
- Fork the repo
- (Optional) Change the content in
config.json
- Go to Actions tab
- Click on
Custom Build
menu item on the left - Click on
Run workflow
button with options setup - Wait for the build to finish
- Download the font archives from Releases
Use Docker
git clone https://github.com/subframe7536/maple-font --depth 1 -b variable
docker build -t maple-font .
docker run -v "$(pwd)/fonts:/app/fonts" -e BUILD_ARGS="--normal" maple-font
Local Build
Clone the repo and run on your local machine. Make sure you have python3
and pip
installed
git clone https://github.com/subframe7536/maple-font --depth 1 -b variable
pip install -r requirements.txt
python build.py
- For
Ubuntu
orDebian
, maybepython-is-python3
is needed as well
If you have trouble installing the dependencies, just create a new GitHub Codespace and run the commands there
Custom Nerd-Font
For custom font-patcher
args, font-forge
(and maybe python3-fontforge
as well) is required.
Maybe you should also change "nerd_font.extra_args"
in config.json
Preset
Add --normal
flag in build.py
for common config, make the font just like JetBrains Mono
(with slashed zero).
Font Feature Freeze
There are three kind of options for feature freeze:
-
enable
: Move ligature rules tocalt
, which will enable the features without setting upcvXX
/ssXX
/zero
in font features config, just as default ligatures -
disable
: Remove the features incvXX
/ssXX
/zero
, which will no longer effect, even if you enable it manually -
ignore
: Do nothing
Load Custom Feature File
Run build.py
with --apply-fea-file
flag, the feature file from source/features/{regular,italic}.fea
will be applied into variable font. You can modify it to change all features, e.g. remove some ligatures in calt
.
Chinese version
Run python build.py --cn
, the CN base fonts (about 130 MB) will download from GitHub.
If you want to build CN base fonts from variable (about 35 MB), setup "cn.use_static_base_font": false
in config.json and BE PATIENT, instantiation will take about 40-50 minutes.
GitHub Mirror
The build script will auto download neccessory assets from GitHub. If you have trouble downloading, please setup github_mirror
in config.json or $GITHUB
to your environment variable. (Target URL will be https://{github_mirror}/<user>/<repo>/releases/download/{tag}/{file}
), or just download the target .zip
file and put it in the same directory as build.py
.
Build Script Usage
usage: build.py [-h] [-v] [-d] [--debug] [-n] [--feat FEAT] [--apply-fea-file]
[--hinted | --no-hinted] [--liga | --no-liga] [--cn-narrow]
[--nerd-font | --no-nerd-font] [--cn | --no-cn] [--cn-both] [--ttf-only]
[--cache] [--cn-rebuild] [--archive]
✨ Builder and optimizer for Maple Mono
options:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-d, --dry Output config and exit
--debug Add `Debug` suffix to family name, skip optimization
Feature Options:
-n, --normal Use normal preset, just like `JetBrains Mono` with slashed zero
--feat FEAT Freeze font features, splited by `,` (e.g. `--feat
zero,cv01,ss07,ss08`). No effect on variable format
--apply-fea-file Load feature file from `source/features/{regular,italic}.fea` to
variable font
--hinted Use hinted font as base font
--no-hinted Use unhinted font as base font
--liga Preserve all the ligatures
--no-liga Remove all the ligatures
--cn-narrow Make CN characters narrow (experimental)
Build Options:
--nerd-font Build Nerd-Font version
--no-nerd-font Do not build Nerd-Font version
--cn Build Chinese version
--no-cn Do not build Chinese version
--cn-both Build both `Maple Mono CN` and `Maple Mono NF CN`. Nerd-Font version
must be enabled
--ttf-only Only build unhinted TTF format
--cache Reuse font cache of TTF, OTF and Woff2 formats
--cn-rebuild Reinstantiate CN base font
--archive Build font archives with config and license. If has `--cache` flag,
only archive Nerd-Font and CN formats
Credit
- JetBrains Mono
- Roboto Mono
- Fira Code
- Victor Mono
- Commit Mono
- Code Sample
- Nerd Font
- Font Freeze
- Font Viewer
- Monolisa
- Recursive
License
SIL Open Font License 1.1
最近版本更新:(数据更新于 2025-01-19 00:51:06)
2025-01-05 21:43:06 v7.0-beta34
2024-12-29 11:48:18 v7.0-beta33
2024-12-14 19:59:02 v7.0-beta32
2024-12-08 15:03:24 v7.0-beta31
2024-12-03 18:01:36 cn-base
2024-11-23 20:23:38 v7.0-beta30
2024-10-27 20:22:38 v7.0-beta29
2024-10-13 19:47:04 v7.0-beta28
2024-10-08 10:22:40 v7.0-beta28.1
2024-10-01 15:15:33 v7.0-beta27
主题(topics):
coding-font, font, ligatures, monospace, monospace-font, opentype, programming-font, programming-ligatures, typeface, typography, variable-font, variable-fonts
subframe7536/maple-font同语言 Python最近更新仓库
2025-01-18 21:26:31 sunnypilot/sunnypilot
2025-01-17 23:34:10 Skyvern-AI/skyvern
2025-01-17 19:49:33 ultralytics/ultralytics
2025-01-17 19:12:03 XiaoMi/ha_xiaomi_home
2025-01-17 08:27:45 comfyanonymous/ComfyUI
2025-01-17 04:56:19 QuivrHQ/MegaParse