HUD icon hiding works via 1x1 transparent PNG overrides (client-side visual only) — matches vanilla’s real resource pack pack_format and file layout for the selected version. Font provider JSON matches the real schema; supply your own bitmap/TTF asset files alongside it.

How to Use the Custom Font Pack Maker

  1. Set your namespace and font name – together these determine the file path your finished JSON belongs at, shown live as assets/<namespace>/font/<name>.json.
  2. Add one or more providers, each with its own type: bitmap, ttf, space, legacy_unicode, or reference.
  3. Fill in the fields for each provider type – file paths, height/ascent for bitmaps, shift/size/oversample for TrueType fonts, or per-character advance widths for spacing overrides.
  4. Click Generate Font JSON to produce the finished provider document, then copy it into your resource pack at the shown path.
  5. Supply the actual texture/TTF/binary asset files referenced by each provider yourself, alongside the JSON – this tool only builds the provider schema, not a full packaged zip.

Font Provider Types Explained

A Minecraft font is a JSON document listing an ordered array of providers. Each provider type serves a different purpose, and a single font can combine several of them, layered in order:

  • bitmap – the classic type: a single texture file sliced into an equal grid, with a chars array where each string is one row of glyphs read left to right. You set the height (pixel height of the drawn glyph) and ascent (how far above the baseline the glyph sits) alongside the texture path.
  • ttf – loads an actual TrueType/OpenType font file, with shift (X/Y offset), size, and oversample (supersampling factor for sharper small text) controls, plus an optional skip list of characters this provider should not supply (so an earlier or later provider can override them).
  • space – no texture at all; just a lookup table of character: advance-width pairs, used to fine-tune horizontal spacing for specific characters (commonly private-use-area glyphs) without drawing anything.
  • legacy_unicode – the old pre-Unicode-provider mechanism: a sizes binary metadata file plus a template path pattern (with %s standing in for a page’s hex identifier) pointing at a set of per-page texture sheets.
  • reference – pulls in an entire other font’s provider list by its resource location id, letting you build on top of an existing font (including the vanilla minecraft:default) instead of starting from nothing.

Providers are checked in array order for each character that needs to be rendered – the first provider in the list that can supply a glyph for a given character wins, which is why skip and provider ordering matter when combining multiple providers in one font.

Once your font JSON is in place, apply it to text either per-component – by setting "font":"<namespace>:<font_name>" on a JSON text component – or globally, by naming the file using one of the three reserved ids Minecraft treats specially: minecraft:default, minecraft:uniform, or minecraft:alt, which replaces a built-in vanilla font outright everywhere it’s used.

Frequently Asked Questions

Does this tool package the actual font texture or TTF file for me?

No – it only generates the provider JSON schema (the “recipe” describing how the font is assembled). The bitmap PNG, TTF file, or legacy binary sheets referenced by the paths you enter must be created and placed by you at those exact resource locations inside your resource pack.

What’s the difference between a bitmap provider and a ttf provider?

A bitmap provider draws from a fixed-resolution image you slice into a glyph grid yourself – full control over pixel art, but not scalable. A ttf provider loads a real vector font file and rasterizes it at runtime with adjustable size/oversample, so it scales more cleanly but depends on an external font file’s design.

How do I replace Minecraft’s entire default font instead of using a custom font tag?

Name your font file’s resource location minecraft:default (i.e. place it at assets/minecraft/font/default.json) – Minecraft treats that id, along with minecraft:uniform and minecraft:alt, as reserved built-in fonts, and any resource pack overriding one of those ids replaces it everywhere in the UI without needing per-text font tags.

What does the space provider actually do if it has no texture?

It only supplies horizontal advance widths – how far the cursor moves after a given character – for characters you list, with no visual glyph of its own. It’s typically layered alongside a bitmap or ttf provider to fine-tune spacing for specific characters, especially custom private-use-area icons, without redrawing anything.

Related Tools