Platform support
What each official viewer and SDK does with a .oim file today. All of them pass the conformance vectors in @oim-media/spec, so a feature marked ✅ renders or behaves the same everywhere. A feature marked ❌ is skipped: the file still opens and the rest of it renders.
| Feature | Web <oim-player> | Desktop viewer | Flutter oim_flutter | Rust oim |
|---|---|---|---|---|
Read the file (tEXt/zTXt chunk) | ✅ | ✅ | ✅ | ✅ |
| Signature verification (ECDSA P-256) | ✅ | ✅ | ✅ | ✅ |
| Image seal (altered file refused) | ✅ | ✅ | ✅ | ✅ |
| Re-edit permission | ✅ | ✅ | ✅ | ✅ |
| Text in several languages | ✅ | ✅ | ✅ | text only |
| Language selector | ✅ | ✅ | ✅ (language + oimLanguages) | — |
| Shapes, SVG paths and geo drawings | ✅ | ✅ | ✅ | — |
| Image layers (crop, fit, flip) | ✅ | ✅ | ✅ | — |
| Text style (weight, spacing, line height, case) | ✅ | ✅ | ✅ | — |
| Text runs and marks | ✅ | ✅ | ✅ (highlights as a plain background) | — |
| Embedded fonts | ✅ | ✅ | ✅ (WOFF; WOFF2 from before 1.27.0 paints the platform font) | — |
| Named palettes and colour roles | ✅ | ✅ | ✅ | — |
| Dynamic colours (dark mode) | ✅ | ✅ | ✅ | — |
| Shadow, blur and blend mode | ✅ | ✅ | ✅ | — |
| Media filters | ✅ | ✅ | ✅ | — |
| Gradient fills | ✅ | ✅ | ✅ | — |
| Pattern layers | ✅ | ✅ | ✅ | — |
| Grain | ✅ | ✅ | ✅ | — |
| Masks | ✅ | ✅ | ✅ | — |
| Parallax and scene loop | ✅ | ✅ | ✅ | — |
| Keyframe animation | ✅ | ✅ | ✅ | — |
| Loop and hover presets | ✅ | ✅ | ✅ (not glow) | — |
| Text animations and entrances | ✅ | ✅ | ✅ | — |
| Actions and states (click, hover, reveal, play) | ✅ | ✅ | ✅ | — |
| Lottie layers | ✅ | ✅ | ✅ (allowLottie) | — |
- Web
<oim-player>is the reference implementation, fromcdn.oim.mediaor the npm package@oim-media/player-oim. - Desktop viewer (Windows, macOS, Linux) wraps the web player, so it supports the same features.
- Flutter
oim_flutterrenders natively on Android, iOS, desktop and web. It is installed from git until it reaches pub.dev. - Rust
oimreads, verifies and resolves text. It does not render; use it on servers and in pipelines.
Videos (.ovm) play only in the web <ovm-player>.