Character encoding (Generation V-present)

Beginning with the Generation V games, the core series Pokémon games use UTF-16 as the standard character encoding to store text data.

Character set

The games only support the UCS-2 subset of the full Unicode character set. Code points outside of the Basic Multilingual Plane (BMP) are incorrectly rendered as two separate characters (?? or depending on the font's fallback character), except in Pokémon Brilliant Diamond and Shining Pearl, where the game freezes instead. The blocks and code points of the characters that are included in the main fonts of each game are described in the tables below.

Pokémon Black, White, Black 2, and White 2

In the Generation V games, the games continue to use pixel fonts as in previous generations; a smaller font is used for nicknames in battle. All of the characters included are present in at least one of the following: the Generation IV encoding, JIS X 0201, JIS X 0208, or KS X 1001.

Pokémon X, Y, Omega Ruby, and Alpha Sapphire

In the Generation VI games, the games switched to using rasterized fonts instead of a pixel font for the main font. There are two otherwise identical copies of the main font: one that includes Hangul, and one that includes kanji. The appropriate font is selected when the game renders each character, falling back to the Nintendo 3DS system font for any characters that are not included. The small font used for nicknames in battle does not include kanji. Although all languages use the same font, games played in Western languages display all text scaled to 78.125% (0.5/0.64) compared to the width of the same text in games played in Japanese or Korean.

Pokémon Sun, Moon, Ultra Moon, and Ultra Sun

In the Generation VII games for the Nintendo 3DS, there are three versions of the main font: one using Japanese glyphs, one using Traditional Chinese glyphs, and one using Simplified Chinese glyphs. The version used depends solely on the language the game is played in, with games played in Western languages and Korean using the font with Japanese glyphs. The small font used for nicknames in battle does not include kanji or hanzi apart from the characters used in the names of unnicknamed Pokémon from games played in Chinese.

Ranges highlighted in yellow are only present in the Traditional Chinese version of the main font.

Pokémon: Let's Go, Pikachu! and Let's Go, Eevee! onwards

In the Generation VII, VIII, and IX games for the Nintendo Switch, the games switched to using outline fonts instead of rasterized fonts for the main fonts. The primary font used depends on the language the game is played in, with the appropriate font being dynamically selected based on the language of the string. The games use the Nintendo Switch system fonts for the Korean and Chinese fonts, rather than bundling the font files with the game (except in Pokémon Brilliant Diamond and Shining Pearl, where they are also bundled with the game). A total of 42,134 characters are supported in at least one of the four main fonts.

Japanese

The font FOT-RodinNTLG Pro DB is used for Japanese text. It uses the kana characters from Type Labo N Medium with the other characters from FOT-Rodin Pro DB. It includes all 15,444 glyphs in the Adobe-Japan1-4 character collection. However, as the games only support characters in the BMP, only the following Unicode characters are supported:

English, French, German, Italian, and Spanish

The font FOT-UD Kakugo C80 Pro DB is used for English, French, German, Italian, and Spanish text. It includes all 15,444 glyphs in the Adobe-Japan1-4 character collection. However, as the games only support characters in the BMP, only the following Unicode characters are supported:

Korean

The font UD Shin Go Hangul Regular is used for Korean text. It supports the following Unicode characters:

Simplified Chinese

The font UD Shin Go Simplified Chinese Regular is used for Simplified Chinese text. It supports the following Unicode characters:

Traditional Chinese

The font AR UD JingXiHei B5-DB is used for Traditional Chinese text. It supports the following Unicode characters:

Additional characters

A font internally known as beluga_font, or_font, or ori_font is used for several Pokémon-specific characters. It supports the following Unicode characters:

Nonstandard characters

Pokémon Black, White, Black 2, and White 2

The main font and the small font used for nicknames in battle display the following characters in a nonstandard manner. Note that the fullwidth forms used in Japanese games for 19 of the characters below (×, ÷, , , , , , , , , , , , , , , , , ) are mapped to the standard Unicode codepoints of these characters.

The main font also displays the following characters in a nonstandard manner; these are unused duplicates of the characters from U+2460 to U+2466. Note that although these characters are nonconsecutive in Unicode, they are consecutive characters (0x224A-0x222E) in JIS X 0208.

Pokémon X, Y, Omega Ruby, Alpha Sapphire, Sun, Moon, Ultra Sun, and Ultra Moon

The special characters mapped to the U+2460..U+2487 range in the Generation V games are now mapped to the U+E07F..U+E0A8 range. Due to a bug, the main font in Pokémon Sun, Moon, Ultra Sun, and Ultra Moon display three of the face characters incorrectly; they are displayed correctly in the small font used for nicknames in battle and the font that was used on the Pokémon Global Link.

In Pokémon Sun, Moon, Ultra Sun, and Ultra Moon, due to Han unification, the characters used in the names of unnicknamed Pokémon from games played in Chinese are encoded separately in the Private Use Area to ensure they display consistently regardless of the language the game is played in.

Pokémon: Let's Go, Pikachu! and Let's Go, Eevee! onwards

The face characters, arrows, and sleeping symbol present since Pokémon Diamond and Pearl are no longer supported. These characters are replaced with spaces when a Pokémon with them in its nickname or the name of its Original Trainer is transferred to Pokémon HOME.

In Pokémon Brilliant Diamond and Shining Pearl, the following characters are displayed as special characters in a fixed color:

System characters

The Nintendo DS, Nintendo DSi, Wii, Nintendo 3DS, Wii U, and Nintendo Switch include several additional characters in the system font in the Private Use Area. Of the core series Pokémon games, only the Nintendo 3DS titles are programmed to use the font, supporting the U+E000..U+E07E range.

In Pokémon X, Y, Omega Ruby, and Alpha Sapphire, the game will fall back to the system font for these characters, but they are unused in regular gameplay. In Pokémon Sun, Moon, Ultra Sun, and Ultra Moon, these characters are included in the game's main font, but only five of these characters are used ( ,  ,  ,  ,  ), and only if the games are played in English. In Pokémon Bank, the character   is used in all languages.

Control characters

  This section is incomplete.
Please feel free to edit this section to add missing information and complete it.
Reason: Details on particular variables/functions
  • 0x0000 (0xFFFF in Generation V) is a terminator, marking the ends of strings.
  • 0x000A (0xFFFE in Generation V) is a line break.
  • 0x0010 (0xF000 in Generation V) is an escape character for functions and variables. It is followed by a 16-bit integer indicating the index of the function to call, a 16-bit integer indicating the number of arguments to the function, and lastly the specified number of arguments.
  • 0xF100 is an escape character that indicates that the string is compressed, using 9 bits per character instead of 16 bits per character.BWB2W2

0x0010/0xF000 variables

  • 0x0100-0x01DD: prints a variable

0x0010/0xF000 functions

  • 0x0200-0x0209: prints a number
  • 0x1000-0x1900: grammar
  • 0xBD00-0xBD06: unknown
  • 0xBDFF: marks dummied out text
  • 0xBE00 and 0xBE01 both mark a prompt for the player to press a button to continue the dialogue. However, they will print the new line of dialogue differently: 0xBE00 will scroll the previous dialogue up one line before printing the next line, while 0xBE01 will clear the dialogue box entirely.
  • 0xBE02: pause for a period of time
  • 0xBE04: unknown
  • 0xBE05: unknown
  • 0xFF00: change font color
  • 0xFF01: displays ruby text


Data structure in the Pokémon games
Generation I Pokémon speciesPokémonPoké MartCharacter encodingSave
Generation II Pokémon speciesPokémonTrainerCharacter encoding (Korean) • Save
Generation III Pokémon species (Pokémon evolutionPokédexType chart)
Pokémon (substructures) • MoveContestContest moveItem
Trainer TowerBattle FrontierCharacter encodingSave
Generation IV PokémonSaveCharacter encoding
Generation V-present Character encoding
TCG GB and GB2 Character encoding


  This data structure article is part of Project Games, a Bulbapedia project that aims to write comprehensive articles on the Pokémon games.