![]() |
VOOZH | about |
Fonts are used for rendering text in Minecraft. Several fonts are used in the game; the primary font used is known as either Mojangles or Minecraft Seven.
Multiple fonts can be defined and referenced with resource packs.
In Java Edition, there are 4 default fonts.
In Bedrock Edition, there are 6 default fonts. In the chat settings, the font for all text in chat messages (including closed captions) can be changed between Mojangles and Noto Sans.
In Legacy Console Edition, there are 2 default fonts.
Some sources, like the Minecraft website, contains different fonts in different pages.
Bold text is rendered by drawing each character twice: once at its normal position and again one pixel to the right. This technique creates the appearance of thicker, bolder text without modifying the font itself.
The text on the experience bar is bright green Mojangles with a black outline in Java Edition. This is done by drawing the text in black (
#000000) offset by one scaled unit in each orthogonal direction, then drawing the text in green (
#80FF20) at the original position.
In most places text is rendered, a shadow appears beneath every character.
This shadow is a copy of the character's glyph, with the red, green, and blue values divided by 4 and positioned 12.5% south-east of the character, relative to its spacing.
Regardless of the resolution of the character's texture, the shadow is always moved by 12.5%.
In the default font (assets/minecraft/textures/font/ascii.png), the shadow position is moved 1 pixel down and to the right.
For pixels where the glyph overlaps with the shadow, the above glyph's channels have 1 subtracted from them. For example, in areas where a white (#FFFFFF) glyph's pixel overlaps a shadow's, the white pixel becomes #FEFEFE.
Glow ink sac applied on a sign causes a character to create eight copies of itself in all eight directions. This results in the font appearing to have a thick outline. Glowing text always renders with an emissive texture, so it appears bright in darkness. The text takes priority over the outline; outlines appear below a character's pixels if they conflict. However, it is a rendering effect that does not actually emit any light. The player can use a black ink sac on the sign to remove the glow.
In a sign's block data, [NBT Compound / JSON Object] front_text or [NBT Compound / JSON Object] back_text's [Boolean] has_glowing_text controls whether the text glows.
Minecraft has included textures for a number of emojis. The earliest emoji textures were for ☺☻. Since 1.15, this support has expanded. Emojis are monochromatic and behave just as any other character. The game does not support modifiers, such as skin tone, joining, or emoji presentation. The skin tone modifiers U+1F3FB..U+1F3FF 🏻 🏼 🏽 🏾 🏿 do not apply colored skin tones to their applicable emojis, and instead show tones as their Unifont glyphs. Joining multiple emojis via U+200D ZERO WIDTH JOINER to create 1 single emoji is not supported; multi-sequence emoji such as 👨👩👧 instead show as 👨👩👧 with dotted boxes showing ZWJ between them. Variation selectors, which control presentation, are displayed as dotted boxes with VSnumber.
For characters supported in the default font, as opposed to the fallback fonts, see Mojangles#Emoji.
Bedrock Edition does not support any character above U+FFFF, which includes many modern emoji. It does not include any textures for emojis below that either; only those provided by GNU Unifont below U+FFFF are included and visible.
Instead of emojis in font files, Bedrock Edition has several hard-coded Private Use Unicode symbols that it automatically converts to emoji-like symbols in any font, which can also be entered with a shortcode (:heart:). These are used in in-game texts including How to Play and controller hints, but can also be used by the player anywhere where normal letters can, such as in signs, books, item names, chat, etc. Emojis are not supported by Ore UI menu screens.[1][2]
There exist 2 Private Use Area sheets: glyph_E0.png glyph_E1.png. E0 contains glyphs for control icons, such as 👁 A button
and 👁 +Control Pad right
. E1 contains glyphs for miscellaneous icons, including the minecoin and Agent icon. E0 characters are categorized in emoticons.json.[3]
| Name | Shortcode | Character | Unicode | Preview |
|---|---|---|---|---|
| Wooden Pickaxe | :wood_pickaxe:
|
| U+E108 | 👁 Image |
| Wooden Sword | :wood_sword:
|
| U+E109 | 👁 Image |
| Crafting Table | :crafting_table:
|
| U+E10A | 👁 Image |
| Furnace | :furnace:
|
| U+E10B | 👁 Image |
| Name | Shortcode | Character | Unicode | Preview |
|---|---|---|---|---|
| Armor | :armor:
|
| U+E101 | 👁 Image |
| Crosshair | :tip_crosshair:
|
| U+E017 | 👁 Image |
| Food | :shank:
|
| U+E100 | 👁 Image |
| Heart | :heart:
|
| U+E10C | 👁 Image |
| Name | Shortcode | Character | Unicode | Preview |
|---|---|---|---|---|
| Minecoin | :minecoin:
|
| U+E102 | 👁 Image |
| Token | :minecoin:
|
| U+E105 | 👁 Image |
:minecoin: and :token: will display the Minecoin emoji.| Name | Shortcode | Character | Unicode | Preview |
|---|---|---|---|---|
| Craftable Toggle On | :craftable_toggle_on:
|
| U+E0A0 | 👁 Image |
| Craftable Toggle Off | :craftable_toggle_off:
|
| U+E0A1 | 👁 Image |
| Name | Shortcode | Character | Unicode | Preview |
|---|---|---|---|---|
| Mouse Left Button | :mouse_left_button:
|
| U+E060 | 👁 Image |
| Mouse Right Button | :mouse_right_button:
|
| U+E061 | 👁 Image |
| Mouse Middle Button | :mouse_middle_button:
|
| U+E062 | 👁 Image |
| Mouse Button | :mouse_button:
|
| U+E063 | 👁 Image |
| Light Mouse Left Button | :light_mouse_left_button:
|
| U+E070 | 👁 Image |
| Light Mouse Right Button | :light_mouse_right_button:
|
| U+E071 | 👁 Image |
| Light Mouse Middle Button | :light_mouse_middle_button:
|
| U+E072 | 👁 Image |
| Light Mouse Button | :light_mouse_button:
|
| U+E073 | 👁 Image |
| Name | Shortcode | Character | Unicode | Preview |
|---|---|---|---|---|
| Forward | :touch_forward:
|
| U+E080 | 👁 Image |
| Left | :touch_left:
|
| U+E081 | 👁 Image |
| Back | :touch_back:
|
| U+E082 | 👁 Image |
| Right | :touch_right:
|
| U+E083 | 👁 Image |
| Jump | :touch_jump:
|
| U+E084 | 👁 Image |
| Sneak | :touch_sneak:
|
| U+E085 | 👁 Image |
| Emote | ? | | U+E089 | 👁 Image |
| Chat | :touch_chat:
|
| U+E08A | 👁 Image |
| Pause | ? | | U+E08B | 👁 Image |
| Sprint (Double Tap) | :touch_sprint_double_tap:
|
| U+E064 | 👁 Image |
| Jump | :tip_virtual_button_jump:
|
| U+E014 | 👁 Image |
| Attack | :tip_virtual_button_action_attack_or_destroy:
|
| U+E015 | 👁 Image |
| Joystick | :tip_virtual_joystick:
|
| U+E016 | 👁 Image |
| Joystick Forward | :touch_virtual_joystick_forward:
|
| U+E08C | 👁 Image |
| Joystick Left | :touch_virtual_joystick_left:
|
| U+E08D | 👁 Image |
| Joystick Back | :touch_virtual_joystick_back:
|
| U+E08E | 👁 Image |
| Joystick Right | :touch_virtual_joystick_right:
|
| U+E08F | 👁 Image |
| Place | :tip_virtual_button_action_build_or_use:
|
| U+E018 | 👁 Image |
| Sneak | :tip_virtual_button_sneak:
|
| U+E019 | 👁 Image |
| Sprint | :tip_virtual_button_sprint:
|
| U+E01A | 👁 Image |
| Fly Up | :tip_virtual_button_fly_up:
|
| U+E01B | 👁 Image |
| Fly Down | :tip_virtual_button_fly_down:
|
| U+E01C | 👁 Image |
| Dismount | :tip_virtual_button_dismount:
|
| U+E01D | 👁 Image |
| Fly Up | :touch_fly_up:
|
| U+E086 | 👁 Image |
| Fly Down | :touch_fly_down:
|
| U+E087 | 👁 Image |
| Stop Flying | :touch_stop_flying:
|
| U+E088 | 👁 Image |
| Small Sneak | :tip_touch_sneak:
|
| U+E05A | 👁 Image |
| Small Jump | :tip_touch_jump:
|
| U+E059 | 👁 Image |
| Small Inventory | :tip_touch_inventory:
|
| U+E05B | 👁 Image |
| Small Fly Up | :tip_touch_fly_up:
|
| U+E05C | 👁 Image |
| Small Fly Down | :tip_touch_fly_down:
|
| U+E05D | 👁 Image |
| Small Up Arrow | :tip_touch_forward:
|
| U+E055 | 👁 Image |
| Small Left Arrow | :tip_touch_left:
|
| U+E056 | 👁 Image |
| Small Down Arrow | :tip_touch_back:
|
| U+E057 | 👁 Image |
| Small Right Arrow | :tip_touch_right:
|
| U+E058 | 👁 Image |
| Name | Shortcode | Character | Unicode | Preview |
|---|---|---|---|---|
| Left Stick Up | :ps4_left_stick_up:
|
| U+E0D0 | 👁 Image |
| Left Stick Left | :ps4_left_stick_left:
|
| U+E0D1 | 👁 Image |
| Left Stick Down | :ps4_left_stick_down:
|
| U+E0D2 | 👁 Image |
| Left Stick Right | :ps4_left_stick_right:
|
| U+E0D3 | 👁 Image |
| Right Stick Up | :ps4_right_stick_up:
|
| U+E0D0 | (/assets/images/text/emojis/controller/right_stick_up.png) |
| Right Stick Left | :ps4_right_stick_left:
|
| U+E0D1 | (/assets/images/text/emojis/controller/right_stick_left.png) |
| Right Stick Down | :ps4_right_stick_down:
|
| U+E0D2 | (/assets/images/text/emojis/controller/right_stick_down.png) |
| Right Stick Right | :ps4_right_stick_right:
|
| U+E0D3 | (/assets/images/text/emojis/controller/right_stick_right.png) |
| Name | Shortcode | Character | Unicode | Preview |
|---|---|---|---|---|
| A | :switch_face_button_down:
|
| U+E040 | 👁 Image |
| B | :switch_face_button_right:
|
| U+E041 | 👁 Image |
| X | :switch_face_button_left:
|
| U+E042 | 👁 Image |
| Y | :switch_face_button_up:
|
| U+E043 | 👁 Image |
| Left Bumper | :switch_bumper_left:
|
| U+E044 | 👁 Image |
| Right Bumper | :switch_bumper_right:
|
| U+E045 | 👁 Image |
| Left Trigger | :switch_trigger_left:
|
| U+E046 | 👁 Image |
| Right Trigger | :switch_trigger_right:
|
| U+E047 | 👁 Image |
| - | :switch_select:
|
| U+E048 | 👁 Image |
| + | :switch_start:
|
| U+E049 | 👁 Image |
| Left Stick | :switch_stick_left:
|
| U+E04A | 👁 Image |
| Right Stick | :switch_stick_right:
|
| U+E04B | 👁 Image |
| D-pad Up | :switch_dpad_up:
|
| U+E04C | 👁 Image |
| D-pad Left | :switch_dpad_left:
|
| U+E04D | 👁 Image |
| D-pad Down | :switch_dpad_down:
|
| U+E04E | 👁 Image |
| D-pad Right | :switch_dpad_right:
|
| U+E04F | 👁 Image |
| Name | Shortcode | Character | Unicode | Preview |
|---|---|---|---|---|
| Cross | :ps4_face_button_down:
|
| U+E020 | 👁 Image |
| Circle | :ps4_face_button_right:
|
| U+E021 | 👁 Image |
| Square | :ps4_face_button_left:
|
| U+E022 | 👁 Image |
| Triangle | :ps4_face_button_up:
|
| U+E023 | 👁 Image |
| Left Bumper | :ps4_bumper_left:
|
| U+E024 | 👁 Image |
| Right Bumper | :ps4_bumper_right:
|
| U+E025 | 👁 Image |
| Left Trigger | :ps4_trigger_left:
|
| U+E026 | 👁 Image |
| Right Trigger | :ps4_trigger_right:
|
| U+E027 | 👁 Image |
| Touch Pad | :ps4_select:
|
| U+E028 | 👁 Image |
| Options/Share | :ps4_start:
|
| U+E029 | 👁 Image |
| Left Stick | :ps4_stick_left:
|
| U+E02A | 👁 Image |
| Right Stick | :ps4_stick_right:
|
| U+E02B | 👁 Image |
| D-pad Up | :ps4_dpad_up:
|
| U+E02C | 👁 Image |
| D-pad Left | :ps4_dpad_left:
|
| U+E02D | 👁 Image |
| D-pad Down | :ps4_dpad_down:
|
| U+E02E | 👁 Image |
| D-pad Right | :ps4_dpad_right:
|
| U+E02F | 👁 Image |
| Name | Character | Unicode | Preview |
|---|---|---|---|
| 0 | | U+E0E0 |  |
| B | | U+E0E2 |  |
| A | | U+E0E1 |  |
| Y | | U+E0EA |  |
| X | | U+E0E9 |  |
| Left Grip | | U+E0E3 |  |
| Right Grip | | U+E0E4 |  |
| Left Trigger | | U+E0E7 |  |
| Right Trigger | | U+E0E8 |  |
| Left Stick | | U+E0E5 |  |
| Right Stick | | U+E0E6 |  |
| Name | Character | Unicode | Preview |
|---|---|---|---|
| Menu | | U+E0C2 |  |
| Windows | | U+E0CD |  |
| Left Touchpad | | U+E0C5 |  |
| Left Horizontal Touchpad | | U+E0C6 |  |
| Left Vertical Touchpad | | U+E0C7 |  |
| Right Touchpad | | U+E0C8 |  |
| Right Horizontal Touchpad | | U+E0C9 |  |
| Right Vertical Touchpad | | U+E0CA |  |
| Left Trigger | | U+E0CB |  |
| Right Trigger | | U+E0CC |  |
| Left Grab | | U+E0C0 |  |
| Right Grab | | U+E0C1 |  |
| Left Stick | | U+E0C3 |  |
| Right Stick | | U+E0C4 |  |
| Name | Shortcode | Character | Unicode | Preview |
|---|---|---|---|---|
| A | :xbox_face_button_down:
|
| U+E000 | 👁 Image |
| B | :xbox_face_button_right:
|
| U+E001 | 👁 Image |
| X | :xbox_face_button_left:
|
| U+E002 | 👁 Image |
| Y | :xbox_face_button_up:
|
| U+E003 | 👁 Image |
| Left Bumper | :xbox_bumper_left:
|
| U+E004 | 👁 Image |
| Right Bumper | :xbox_bumper_right:
|
| U+E005 | 👁 Image |
| Left Trigger | :xbox_trigger_left:
|
| U+E006 | 👁 Image |
| Right Trigger | :xbox_trigger_right:
|
| U+E007 | 👁 Image |
| Select | :xbox_select:
|
| U+E008 | 👁 Image |
| Start | :xbox_start:
|
| U+E009 | 👁 Image |
| Left Stick | :xbox_stick_left:
|
| U+E00A | 👁 Image |
| Right Stick | :xbox_stick_right:
|
| U+E00B | 👁 Image |
| D-Pad Up | :xbox_dpad_up:
|
| U+E00C | 👁 Image |
| D-Pad Left | :xbox_dpad_left:
|
| U+E00D | 👁 Image |
| D-Pad Down | :xbox_dpad_down:
|
| U+E00E | 👁 Image |
| D-Pad Right | :xbox_dpad_right:
|
| U+E00F | 👁 Image |
| Name | Shortcode | Character | Unicode | Preview |
|---|---|---|---|---|
| Non-Breaking Space | :nbsp:
|
| U+E0FF | |
| Agent | :code_builder_button:
|
| U+E103 |  |
| Immersive Reader | :immersive_reader_button:
|
| U+E104 |  |
| Hollow Star | :hollow_star:
|
| U+E106 |  |
| Solid Star | :solid_star:
|
| U+E107 |  |
| Camera | :camera:
|
| U+E10D |  |
In Java Edition, there are 2 characters that are accessible only through technical means:
In Bedrock Edition, a character with no texture data appears as a blank space. The U+FFFD � REPLACEMENT CHARACTER shown belongs to GNU Unifont.
A font is constructed from a list of providers, sources that provide characters to use. Different providers use different formats and methods of constructing characters. The default font uses all except for ttf.
A font file uses the following format:
The bitmap provider defines simple bitmap glyphs – glyphs from textures.
bitmap.UTF-16 codepoints encoded in UTF-8 sequences can be used by use of surrogate pairs. To convert a character into a surrogate pair, one can use the following equations, where C is the codepoint in decimal:
((C − 65536) − (C % 1024)) ÷ 1024 + 55296(C % 1024) + 56320When the length of either chars or its strings is not a divisor of the resource's dimensions, it can result in an unexpected division of glyphs. The Unicode escape \u0000 can be used to add padding in the list. Padding acts as a "dummy character", so that the glyph data at that corresponding position in the file is not assigned a character.
The space provider defines the width of a character's glyph.
space.0xF0 0x9F 0x94 0xA5). Although it is intended to be used for whitespace characters (characters that have "WSpace=Y" in Unicode), it can be used for any character, as long as there is no prior definition of that character's glyph.
By default, the game has two widths defined:
The ttf provider embeds already-compiled TrueType and OpenType fonts.[b] The font files added using this method are stripped from any font properties other than the glyphs themselves (like kerning or ligatures).
ttf..ttf. Path is relative to the /assets/<namespace>/font/ directory.The unihex provider is a replacement for the Legacy Unicode provider. It uses the GNU Unifont .hex format. It references a ZIP archive that contains a number of .hex files.
unihex..hex file at the root of the archive. Subdirectories are not walked through and filenames with an extension different from .hex are ignored. Filenames must follow normal file resource name rules.
<codepoint>:<data>. <codepoint> is the Unicode codepoint, without the U+ or 0x. It must have four, five, or six digits. The <data> is a hexadecimal number that encodes the glyph data. Glyphs are always sixteen pixels high. Glyphs can be eight, sixteen, 24, or 32 pixels wide.[c]from and to must be one character.left and right must be between 0 and 32, inclusive.The reference provider serves one purpose: to include another provider only once. It can be used to include providers from other fonts in other resource packs.
Referenced providers are guaranteed to be loaded only once, no matter how many times they are included.
reference.The legacy_unicode provider is similar to the bitmap provider in that it loads glyphs from only textures. This format is deprecated, and is prioritized only when the "Force Unicode Font" option is turned on. It acts as a "fallback" for glyphs that no other provider has defined a texture for.
legacy_unicode.%s must be included in this field. %s is replaced with every valid page number, in hexadecimal.glyph_sizes.bin; this is its default name.Templates, specified by the template field, are name-based, and are all PNG files. Each template file must have equal width and height. The template numbering scheme works based off of the Unicode BMP. The number used is equal to a BMP codepoint's high byte.[d][e] These template textures are called "pages". Template page "22" must cover characters U+2200 to U+22FF. Page numbers go from 00 to FF. Characters beyond U+FFFF cannot be changed through this provider. By default, each glyph is 16×16 pixels wide, so each individual template page is 256×256 pixels (16 glyphs on each line, 16 lines). Its default textures are an outdated version of GNU Unifont.[4]
The file referenced by the sizes field must have the following format. Each character width is one byte large. The high nibble[f] records the starting position, while the lower nibble records the ending position in the 16×16 glyph grid. For this reason, the file must be 0xFFFF bytes long (65535 in decimal).
A specific character's width is determined by finding its codepoints byte. The character 'A' has a codepoint of U+0041, so byte offset 0x41 (65 in decimal) would be addressed. A square character occupying the entire grid (pixel width #1 [0, 0x0] through #16 [15, 0xF]) would have a value of 0x0F (15 in decimal).
Widths cannot extend past 16 pixels, and characters whose codepoints are greater than U+FFFF are not handled. Some codepoints are invalid on their own. These are the surrogate pairs; they are used to encode codepoints higher than U+FFFF in UTF-16. This means that the template pages D8, D9, DA, DB, DC, DD, DE, and DF are invalid and cannot be used.
| Java Edition Classic | |||||||
|---|---|---|---|---|---|---|---|
| 0.0.2a | Added text to the game, and the default font as a result. | ||||||
| This font was originally used in Legend of the Chambered. | |||||||
| Java Edition Beta | |||||||
| 1.1 | The font.txt file was accidentally removed from client.jar, resulting in all in-game text being invisible. | ||||||
| 1.1_01 | Readded the font.txt file, which made in-game text display properly again. | ||||||
| Java Edition | |||||||
| 1.1 | 11w49a | Added GNU Unifont to fully support multi-languages. | |||||
| 1.5 | 13w09a | The font texture is now able to be changed in a resource pack. | |||||
| Added support for glyph resolutions above 16×16. | |||||||
| 1.6.2 | reupload | Fixed distorted font when HD font is used.[5] | |||||
| 1.13 | pre6 | Fonts are now saved as TrueType font files. | |||||
| pre7 | Reverted TrueType font. | ||||||
| Retroactively removed TrueType font file from pre-6. | |||||||
| 1.16 | 20w17a | Raw JSON text format now has a font key, which defines the font to use for that component. Default is minecraft:default.
| |||||
Added the unihex provider.[verify]
| |||||||
| The full range of Unicode is now supported in font definitions.[verify] | |||||||
| Pre-release 7 | The chars field of the bitmap provider can now specify UTF-16 codepoints. | ||||||
| 1.19 | 22w11a | Added the space provider.
| |||||
| Rendering of the space glyph is no longer hardcoded; it needs to be declared manually in the font. | |||||||
| 1.20 | 23w17a | Removed the legacy_unicode provider.
| |||||
Added the unihex provider.
| |||||||
Added the reference provider. | |||||||
| 1.20.5 | 24w06a | Added font variant filters to font providers. | |||||
| 1.21.4 | Pre-Release 1 | GNU Unifont updated to version 16.0.01. | |||||
| 1.21.6 | 25w18a | GNU Unifont updated to version 16.0.03. | |||||
| Added previously omitted Unifont glyphs for Private Use Areas. | |||||||
Unihex Font Provider: Field size_overrides is now optional (defaults to empty list). | |||||||
| 1.21.11 | 25w41a | uniform font has been updated to use Unifont 17.0.01. | |||||
| Pocket Edition Alpha | |||||||
|---|---|---|---|---|---|---|---|
| v0.1.0 | Added the default ASCII font called default.png. | ||||||
| v0.11.0 | build 1 | Added GNU Unifont to fully support multi-languages. | |||||
| Legacy Console Edition | |||||||
|---|---|---|---|---|---|---|---|
| Xbox 360 | Xbox One | PS3 | PS4 | PS Vita | Wii U | Switch | |
| TU0 | CU1 | 1.00 | 1.00 | 1.00 | Patch 1 | 1.0.1 | Added text to the game, and the default font as a result. |
| TU1 | Updated the font with a clearer version. | ||||||
Issues relating to "Font" are maintained on the bug tracker. Issues should be reported and viewed there.
unihex provider also includes a [NBT List / JSON Array] __ranges field in the [NBT Compound / JSON Object] entries of [NBT List / JSON Array] size_overrides. It is a list of strings, being the Unicode block names of the applying range.len(data) // 4.
0xABCD is 0xAB.
0xF3 would be padded to 0x00F3: page 00. Likewise, 0xFAE is 0x0FAE: page 0F.