Le format de projet .focale
Structure ZIP, manifeste version 1, rasters exacts et données portables du document.
Documentation vérifiée dans les sources de l’application le 5 octobre 2026. Focale évolue activement ; les commandes et paquets disponibles peuvent varier selon le build.
Organisation de l’archive
Un fichier .focale est une archive ZIP standard, sans chiffrement ni obfuscation. manifest.json est obligatoire ; preview.png est une vignette facultative dont le plus grand côté ne dépasse pas 512 pixels.
Rasters, masques, canaux, profils ICC incorporés, sources placées, documents imbriqués et motifs importés ont des répertoires distincts. Les noms encodent des identifiants opaques et ne sont pas interprétés comme des chemins.
project.focale
├── manifest.json
├── preview.png
├── profiles/document.icc
├── profiles/raster/….icc
├── raster/….png | .fcraster | .fctiles
├── masks/….png | .fctiles
├── channels/….png | .fctiles
├── objects/raster/N.fcraster
├── placed/….bin
├── placed_documents/….focale
└── patterns/….fptileUn manifeste versionné
L’étiquette racine est focale et l’écriture actuelle utilise la version 1. Le lecteur refuse une version plus récente non prise en charge plutôt que d’en deviner le sens.
Le manifeste contient géométrie, mode colorimétrique, profondeur, profils et arbre de calques, ainsi que les éventuels tracés, repères, canaux, tranches, compositions, animations et variables. L’exemple ci-dessous est un extrait, pas un projet complet chargeable.
{
"format": "focale",
"version": 1,
"document": {
"width": 1920,
"height": 1080,
"dpi": 96,
"colorMode": "rgb",
"bitsPerChannel": 8
}
}PNG et entrées exactes .fcraster
Les rasters de données RVB8 sRGB peuvent utiliser PNG. Le RVB8 avec profil et les autres modes ou profondeurs utilisent .fcraster pour conserver les échantillons et leur précision. Les pixels sont prémultipliés ; les pixels entièrement transparents ont des composantes nulles.
La version 1 de .fcraster commence par un en-tête de 32 octets. Les entiers sont en little-endian ; chaque pixel contient ses composantes puis l’alpha. L’écriture actuelle compresse cette charge avec zlib.
| Position | Octets | Champ |
|---|---|---|
| 0 | 8 | Signature ASCII FCRASTER |
| 8 | 2 | Version du conteneur : 1 |
| 10 | 1 | Indice de mode : RGB, CMYK, Grayscale, Lab, Indexed, Bitmap, Duotone, Multichannel |
| 11 | 1 | Bits par canal : 1, 8, 16 ou 32 |
| 12 | 1 | Nombre de canaux entrelacés : 2, 4 ou 5 |
| 13 | 1 | Drapeaux : prémultiplication, little-endian, zlib ; écriture actuelle 0x07 |
| 14 | 2 | Taille de l’en-tête : 32 |
| 16 | 4 | Largeur |
| 20 | 4 | Hauteur |
| 24 | 8 | Longueur canonique décodée en octets |
Tuiles raster indépendantes
Un raster à plusieurs tuiles peut utiliser un descripteur JSON .fctiles à la place d’une entrée PNG ou .fcraster unique. Il décrit les dimensions, le format natif, les rectangles des tuiles et leurs références.
Les tuiles couvrent l’image sans trou ni chevauchement, dans l’ordre des lignes. Chaque axe est limité à 4096 pixels. Les charges exactes sont dédupliquées sous objects/raster/N.fcraster ; un projet utilisateur garde ses objets dans le ZIP.
Modes et profondeurs
| Mode | Profondeurs prises en charge |
|---|---|
| RVB, Niveaux de gris | 8, 16, 32 bits |
| CMJN, Lab, Multicanal | 8, 16 bits |
| Couleurs indexées, Bichromie | 8 bits |
| Bitmap | 1 bit |
Validation et portabilité
Les lecteurs et écrivains actuels limitent le ZIP à 1 Gio, 10 000 entrées, un manifeste de 16 Mio et 512 Mio par entrée. Les rasters décodés ont aussi leurs limites de géométrie et de mémoire. Les noms possédés en double, données obligatoires absentes et échantillons incompatibles sont refusés.
Les sources incorporées voyagent avec le projet ; les sources liées peuvent nécessiter leur chemin d’origine. Les polices ne sont pas incorporées. Inspectez une copie et consultez la référence complète avant d’écrire un lecteur.
Ce que le projet ne contient pas
L’historique complet des commandes Annuler, la disposition de l’interface, les raccourcis et les catalogues locaux de préréglages sont des données de l’application. Ils ne constituent pas une session intégrée au projet portable.
Les points de récupération peuvent utiliser un stockage d’objets partagé adjacent. Ce sont des données gérées par l’application, à distinguer d’un fichier .focale utilisateur autonome.
Références complètes des formats
Téléchargez les spécifications Markdown complètes en anglais : schémas, règles de validation et détails de compatibilité.