SkillAgentSearch skills...

Cozette

A bitmap programming font optimized for coziness 💜

Install / Use

/learn @the-moonwitch/Cozette

README

Cozette

GitHub release (latest by date) AUR version GitHub Workflow Status GitHub All Releases GitHub license

Cozette

A bitmap programming font optimized for coziness.

Cozette in Nvim

Contents

About Cozette

Cozette is a 6x13px (bounding box; average 5px character width, 3px descent, 10px ascent, 8px cap height) bitmap font based on [Dina], which itself is based on [Proggy]. It's also heavily inspired by [Creep]. I absolutely adore Creep, and was using it up until I got a higher-DPI screen for which it was slightly too small. That prompted me to make the bitmap font I always wished existed: Cozette; a small-but-not-tiny bitmap font with great coverage of all the glyphs you might encounter in the terminal:

glyphs in Cozette

I'm intentionally putting the emphasis on "you" - although Cozette already has all the glyphs I've seen in my CLI tools so far, you might find it's missing a glyph you wish it had. If that's the case, please [file an issue]! It's an important goal for Cozette to be a useful bitmap alternative to [Nerd Fonts].

A nicer character map that includes the codepoints can be found at [the bottom of this README]!

Installation

[You can get Cozette over at the Releases tab]!

Variants and Sizes

Cozette is distributed in three main variants: normal and hi-dpi (upscaled 2x) bitmaps (.bdf, .otb, .psf, and .fnt), and vectors (.ttf).

Font scaling varies wildly from system to system, and sometimes even from program to program and font format to format. On my system (Linux), cozette.otb looks right at 13pts; cozette_hidpi.otb looks right at 26pts and downscales quite elegantly to 10pts; CozetteVector doesn't look right at any size (technically, it will look right specifically at 9.4pts on a 100dpi screen on Linux, but pixel-perfect bitmap fonts are a massive headache, treated differently by every OS, that I'm not quite sure how to solve)

Bitmap fonts are, effectively, just that - bitmaps. They scale terribly, but look nice and sharp (and pixel-perfect) at one specific point size. Vector fonts scale well, but in this case, might look ugly at smaller point sizes because of antialiasing issues and the like.

<h3>NOTE:</h3> The vector formats (`CozetteVector`) are provided as a compatibility feature. Rendering of vectorized bitmap-like fonts is <em>terrible</em> on virtually all operating systems.

If Cozette looks awful on your system, you probably have a vector version. <em>Please</em> use the bitmap formats (.otb) if you can.

Issues with vector formats will almost certainly <em>not</em> be fixed or addressed; Cozette is a bitmap font first and foremost, and building a bitmap font that builds from a single source and looks good both in its intended, bitmap font as well as as the auto-vectorized format, on every OS, seems to be an unsolved problem.

Linux

The preferred format is .otb (for bitmaps) or .ttf (for CozetteVector). To install the font, just throw it in your fonts directory (you probably want to follow your distro's instructions). On Ubuntu you might need to [specifically enable bitmap fonts].

If you're on Void, [ifreund] made a Void package for the .otb! Install it using XBPS:

$ sudo xbps-install font-cozette

If you're on Arch, [ifreund] made [an AUR package] for the .otb! Install it using your AUR helper of choice:

$ yay -S cozette-otb

Or, if you're not using an AUR helper:

$ git clone https://aur.archlinux.org/cozette-otb.git
$ cd cozette-otb
$ makepkg -si

Mac

Download the .dfont and install it with Font Book .app. Both the bitmap Cozette.dfont and the vector CozetteVector.dfont should work.

Windows

Grab CozetteVector.ttf. If you want to get the bitmap versions to work, [follow the instructions from here].

FreeBSD

[laxul] made a [port] for the .otb!

  • pkg: pkg install cozette
  • ports: cd /usr/ports/x11-fonts/cozette; make install clean

Other BSD / Solaris / Haiku / Other

You know what you're doing.

Notes on specific applications

Dmenu

dmenu (and reportedly some other applications, like urxvt) seems slightly fucky when it comes to dealing with font spacing. I cannot tell if this is an issue with Cozette specifically or with the font rendering in those applications, but they seem to pull the font spacing from your system's default monospace font for whatever reason. If setting Cozette as your system default is not an option (I don't recommend it, a lot of applications have problems with bitmap fonts), try using Cozette-<size> as the font name, ie. Cozette-8.

VSCode, general GUI applications

VSCode and a lot of other GUI applications don't support bitmap fonts, so you will want to use CozetteVector there. In applications that do support bitmap fonts, you will want to use the normal, bitmap Cozette (unless it's too small for you, in which case, CozetteVector scales better).

VSCode Letter Spacing

Sometimes the font might render without proper space betweening the characters (font size set to 13):

vscode-before-letterspacing

To fix this you need to set (in your settings):

  • terminal.integrated.letterSpacing to 1

vscode-settings-fix-incorrect-letterspacing

After that your terminal should look like this (font size set to 13):

vscode-after-letterspacing

Note: VSCode also provides the option editor.letterSpacing which adjusts the spacing for the file editor.

Kitty

4e554c4c made an AUR package for kitty patched to support bitmap fonts.

if you like bitmap fonts, kitty is not for you.

According to its author, kitty doesn't, and never will, support bitmap fonts.

If you really want to get Cozette working, you can try the AUR package mentioned above, or apply the patch there yourself.

If that doesn't work, you can try the trick from here; if you explicitly set Cozette(Vector)'s spacing to 100, and scalable to true in fontconfig, kitty should accept it.

You can also make Cozette work flawlessly by uninstalling kitty and using a terminal emulator for which not rendering fonts isn't a design principle - I cannot recommend alacritty enough. it's excellent, has worked flawlessly for me for quite some time, and both configuring and getting bitmap fonts to work in it is a breeze.

(The support was discussed in the-moonwitch/Cozette#18. Many thanks to all the participants there, especially to to Luflosi, who brought up flipping the allow_bitmapped_fonts flag in their fork, and to 4e554c4c, who made the AUR package.)

Roadmap

Check the [CHANGELOG] for the latest news!

Here's where Cozette is so far, in the rough order the features are going to be implemented:

  • [x] ASCII
  • [x] Powerline
  • [x] Build scripts to handle exporting
  • [x] Box-drawing (mostly)
  • [x] Braille
  • [x] Cyrillic!
  • [x] IPA glyphs!
  • [x] APL glyphs (based on the list from APL386)!
  • [x] Uiua glyphs!
  • [x] BQN glyphs!
  • [x] Fullwidth kana!
  • [ ] Nerdfonts:
    • [x] nf-pom-*
    • [x] nf-seti-*
    • [ ] nf-dev-* (partial)
    • [ ] nf-weather-*
  • [x] Glyph map generation (so I don't have to keep characters.png up to date)
  • [x] "True" TTF version
    • [x] Windows support
  • [x] Full [vim-airline] and [bufferline.nvim] support!
  • [x] Full [ranger_devicons] support!
  • [x] [starship] supported out of the box!
  • [x] Full [powerlevel10k] support! (if it doesn't work, try setting POWERLEVEL9K_MODE to nerdfont-complete)
  • [x] All glyphs used by maturin and many other CLI tools!
  • [x] Charmap including the code points (to make it easier for users to report issues/request additions)
  • [x] Codepoints ab

Related Skills

View on GitHub
GitHub Stars3.5k
CategoryDevelopment
Updated8h ago
Forks58

Languages

Python

Security Score

100/100

Audited on Apr 1, 2026

No findings