A rotated frame has two useful rectangles
Allowing rotation lets the packer store a frame ninety degrees clockwise when that orientation helps a placement. The character itself should still appear upright after loading. The atlas JSON therefore includes a rotation flag and logical unrotated width and height, while the detailed manifest also exposes the actual physical rectangle in the PNG.
For a rotated frame, those physical dimensions are swapped. A custom importer that cuts the logical width and height directly from the image will read the wrong pixels. It must use the physical rectangle, undo the clockwise storage rotation and then apply the recorded trim offset within the original source canvas.
Use the engine convention you verified
The shared JSON supports non-rotated Phaser JSONHash atlases and PixiJS spritesheets. Turn packing rotation off for Phaser; rotated atlases target PixiJS. Source dimensions, sprite-source offsets and centered anchors remain explicit. A different loader may use another rotation sign, a different pivot convention or dimensions with another meaning, even when its file is also called an atlas JSON.
The manifest is intended to make those distinctions inspectable rather than conceal them. Compare its packedFrame, frame, sourceSize and spriteSourceSize fields when writing an adapter. Test with an asymmetric rectangular sprite that has distinct colors at its corners; a square or symmetrical image can hide an orientation mistake.
Keep order separate from packing position
Rectangle packing sorts and moves images to find space, so left-to-right position in the atlas is not the animation sequence. The exported default animation explicitly lists frame names in the chosen order. Renaming or reordering a frame rebuilds the matching metadata, and the workspace animation uses that same sequence.
The FPS setting is uniform for the sequence. The loading notes show how to apply it in the target engines; this tool does not encode sound, per-frame events or an entire game animation state machine. After importing, inspect a complete loop, pause on individual frames and check the origin alignment before replacing an existing production asset.