JMSFX Icon Generator
Build military symbols to NATO APP-6, Edition E - the symbols used to represent units, equipment, installations and activities on a military map - and export them as SVG.
APP-6E is related to, but formally distinct from, the US MIL-STD-2525D. This site follows the NATO standard.
Browse
Browse walks the symbol sets as a tree, from each set down through its entities, entity types and sub-types. Use it to find out what exists, and what a given symbol looks like, without composing anything.
Generate
Generate composes one symbol. Choose a symbol set, then narrow it by entity, entity type and sub-type, and add sector one and two modifiers and an amplifier. The preview updates as you go, and Export SVG saves what you see.
Every icon is drawn on a standard 612 x 792 canvas, with each part occupying its own region of it - which is what lets the pieces line up. Exported files keep that canvas, so a symbol composed here sits correctly alongside any other.
On the desktop
Icon Creator does the same job as a desktop application, with the full set of amplifier controls alongside the icon and no round trip to the server for each change. It is a free download for Windows, macOS and Linux.
Straight from a URL
The pages above are a thin layer over a plain HTTP API, which is often the easier way to use this - a symbol can be
referenced directly from a document, a wiki or a script. Every response is image/svg+xml.
/Air/symbol the bare frame
/Air/symbol/entity/MILITARY narrowed to an entity
/Air/symbol/FIXED_WING to an entity type
/Air/symbol/FIXED_WING/BOMBER to a sub-type
/Air/symbol?sectorOneMod=FIGHTER with a modifier
The leading segment is the symbol set - /Air, /LandUnits, /SeaSurface and so on,
23 in all. Note that the path takes an element's name, such as FIXED_WING, rather than its numeric
identifier. Sector modifiers and amplifiers are query parameters: sectorOneMod, sectorTwoMod,
amplifier.
Companion paths list what a symbol set actually offers, which is how you find those names -
/Air/entity/list, /Air/entityType/MILITARY/list,
/Air/entitySubType/FIXED_WING/list, /Air/modifier/one, /Air/amplifier. They return
JSON, and an empty list simply means that set has none of that kind - Air has no amplifiers, for instance. The
Generate page is built on exactly these calls, so its network traffic is a working example.
The library
Underneath is a JavaFX implementation of APP-6E that renders symbols as ordinary scene graph nodes. It is open source, along with foxglove, the SVG rendering library it is built on - both at github.com/ctggames.