# font2atlas > Free online tool that turns a font into a texture atlas for games, mods and VFX: a PNG or TGA atlas, a UV table, one image per symbol and a BMFont font (.fnt and .xml). Every setting can be given in the page link, so an AI agent or a script can prepare an atlas by building a URL. Site: https://font2atlas.everybodygonuts.com/ There is no HTTP API. The atlas is drawn by the page itself, in the browser of whoever opens the link, and nothing is uploaded to a server. So an agent works in one of two ways: - Build a link and give it to the user. The page opens with every setting already applied, and the user presses a download button. - If the agent drives a browser, open the link and press the button itself: `#save-png`, `#save-tga`, `#save-fnt` (BMFont ZIP), `#save-zip` (one image per symbol), `#save-uv` (UV table). ## Link parameters Every parameter is optional. One that is left out keeps its default, so a short link is enough. Put them in the query string: `https://font2atlas.everybodygonuts.com/?chars=0123456789&grid=4x4&size=256x256`. - `chars=TEXT`: the symbols, in atlas order (left to right, top row first). Default: `abcdefghijklmnopqrstuvwxyz`. Up to 512 symbols. - `font=NAME`: `inter` (default), `jetbrains` (JetBrains Mono), `plex` (IBM Plex Sans), `ptsans` (PT Sans), `pressstart` (Press Start 2P, a pixel font). `upload` asks the user for their own TTF, OTF or WOFF file: a font file cannot travel in a link. - `grid=COLSxROWS`: cells across and down, 1 to 64 each. Default: `8x4`. - `size=WIDTHxHEIGHT`: texture size in pixels, 16 to 4096 each. Default: `1024x512`. - `scale=NUMBER`: glyph size in its cell, 0.4 to 1.5. Default: `0.95`. - `color=HEX`: glyph colour, six hex digits without `#`. Default: `ffffff`. - `bg=HEX`: background colour. Without it the background is transparent (default). - `style=LETTERS`: any of `b` bold, `i` italic, `u` underline, `s` strikethrough, for example `style=bi`. - `align=baseline|center`: `baseline` (default) puts every cell on one writing line, so cells in a row read as text; `center` centres each symbol in its cell, for icons and single letters. - `outline=SIZE-HEX`: outline, size 1 to 32 px, for example `outline=4-000000`. Off without it. - `glow=SIZE-HEX`: outer glow, radius 1 to 48 px, for example `glow=14-ffffff`. Off without it. - `inner=SIZE-HEX`: inner glow, radius 1 to 48 px, for example `inner=6-ff7a3c`. Off without it. - `px=1`: pixel mode: no antialiasing, every pixel fully on or off, for pixel fonts and nearest filtering. Off without it. - `v=down|up`: direction of the v axis in the UV table. `down` (default): v = 0 at the top (DirectX, Unreal). `up`: v = 0 at the bottom (OpenGL, Unity, Godot). - `slice=SIZE-FORMAT`: the per-symbol images: SIZE is `32`, `64`, `128`, `256`, `512` (default) or `1024` px, FORMAT is `tga` (default) or `png`. For example `slice=128-png`. - `preset=NAME`: `lower` (a-z, 8x4, 1024x512), `upper` (A-Z, 8x4, 1024x512) or `digits` (0-9 and the multiplication sign, 4x4, 256x256). Applied first, so other parameters override it. - `lang=en|ru`: interface language. It changes no file: exported files are always in English. Sizes of the outline and glows are in atlas pixels. ### Encoding Percent-encode the value of `chars`. Most characters are safe as they are, but these are not: space `%20`, `+` `%2B` (a bare `+` turns into a space), `#` `%23`, `&` `%26`, `%` `%25`. Letters outside ASCII can be percent-encoded as UTF-8, for example Cyrillic `Ж` as `%D0%96`. ## Examples - Digits in a pixel font, for a score counter: https://font2atlas.everybodygonuts.com/?chars=0123456789&font=pressstart&grid=4x4&size=256x256&px=1 - Capital letters with a black outline: https://font2atlas.everybodygonuts.com/?preset=upper&outline=4-000000 - Every printable ASCII character for in-game text, then "Download BMFont": https://font2atlas.everybodygonuts.com/?chars=%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~&font=jetbrains&grid=16x8&size=1024x512 - Three glowing letters, each centred in its cell, for an effect texture: https://font2atlas.everybodygonuts.com/?chars=ABC&grid=3x1&size=768x256&align=center&color=ffe6a0&glow=16-ff7a3c - Russian capital letters on a black background, UV with v up: https://font2atlas.everybodygonuts.com/?chars=%D0%90%D0%91%D0%92%D0%93%D0%94%D0%95%D0%81%D0%96%D0%97%D0%98%D0%99%D0%9A%D0%9B%D0%9C%D0%9D%D0%9E%D0%9F%D0%A0%D0%A1%D0%A2%D0%A3%D0%A4%D0%A5%D0%A6%D0%A7%D0%A8%D0%A9%D0%AA%D0%AB%D0%AC%D0%AD%D0%AE%D0%AF&grid=8x5&size=1024x640&bg=000000&v=up&lang=ru ## What the files hold - Atlas: PNG, or 32-bit TGA. Whatever does not fit in a cell is cut at its edge, and transparent pixels take the colour of the nearest glyph, so filtering and mipmaps show no dark fringe. - UV table (`_uv.txt`): tab-separated, one line per symbol: `index char code file col row u0 v0 u1 v1`. Row 0 is the top row of the texture. The lines starting with `#` give the formula used. - BMFont (`_bmfont.zip`): `.fnt` in the AngelCode text format (PixiJS, Godot, libGDX, LOVE), the same font as `.xml` (Phaser), and its PNG. Kerning is included. - Slices (`_cells.zip`): one TGA or PNG per symbol, a square of the `slice` size. Files are named after the preset when the settings match one (`atlas_lowercase.png`), and `atlas` otherwise. ## When something is wrong Values out of range are shown as errors next to their fields, and the downloads stay off until they are fixed. More symbols than cells, or symbols missing from the font, are shown as a warning under the symbols box; the atlas is still made from what fits.