Formato de projeto .focale
ZIP, manifesto versão 1 e armazenamento exato de rasters.
Verificado no código da aplicação em 5 de outubro de 2026. Focale está em desenvolvimento ativo; comandos e pacotes podem variar por compilação.
Estrutura do arquivo
ZIP padrão, sem encriptação ou ofuscação. manifest.json é obrigatório; preview.png é opcional, com lado máximo de 512 píxeis.
Rasters, máscaras, canais, perfis ICC, origens colocadas, documentos aninhados e padrões têm diretórios distintos. Os nomes codificam identificadores opacos, não caminhos.
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/….fptileManifesto versionado
A etiqueta raiz é focale e a escrita atual usa versão 1. Versões posteriores não suportadas são rejeitadas.
Guarda geometria, cor, profundidade, perfis e árvore de camadas, com caminhos, guias, canais, fatias, composições, animação e variáveis opcionais. O exemplo é um excerto, não um projeto completo.
{
"format": "focale",
"version": 1,
"document": {
"width": 1920,
"height": 1080,
"dpi": 96,
"colorMode": "rgb",
"bitsPerChannel": 8
}
}PNG e .fcraster
RGB8 sRGB pode usar PNG. RGB8 com perfil e outros modos ou profundidades usam .fcraster. Os píxeis são pré-multiplicados; os transparentes têm amostras de processo nulas.
A versão 1 tem cabeçalho de 32 bytes, inteiros little-endian e amostras intercaladas seguidas de alfa por píxel. A escrita comprime com zlib.
| Posição | Bytes | Campo |
|---|---|---|
| 0 | 8 | Assinatura ASCII FCRASTER |
| 8 | 2 | Versão: 1 |
| 10 | 1 | Índice: RGB, CMYK, Grayscale, Lab, Indexed, Bitmap, Duotone, Multichannel |
| 11 | 1 | Bits por canal: 1, 8, 16 ou 32 |
| 12 | 1 | Canais: 2, 4 ou 5 |
| 13 | 1 | Indicadores pré-multiplicado, little-endian, zlib; valor atual 0x07 |
| 14 | 2 | Tamanho do cabeçalho: 32 |
| 16 | 4 | Largura |
| 20 | 4 | Altura |
| 24 | 8 | Comprimento canónico descodificado |
Mosaicos independentes
Um raster dividido pode usar descritor JSON .fctiles com dimensões, formato, retângulos e referências.
Cobrem a imagem por linhas sem lacunas ou sobreposição; cada eixo até 4096 píxeis. Os dados são deduplicados em objects/raster/N.fcraster e ficam dentro do ZIP do utilizador.
Modos e profundidades
| Modo | Profundidade |
|---|---|
| RGB, Escala de cinzentos | 8, 16, 32 bits |
| CMYK, Lab, Multicanal | 8, 16 bits |
| Indexado, Duotónico | 8 bits |
| Bitmap | 1 bit |
Validação e portabilidade
Limites atuais: ZIP 1 GiB, 10 000 entradas, manifesto 16 MiB, 512 MiB por entrada. Rasters descodificados têm limites próprios. Nomes duplicados, dados obrigatórios ausentes e amostras incompatíveis são rejeitados.
Fontes incorporadas viajam com o projeto; fontes ligadas podem precisar do caminho original. Tipos de letra não são incorporados. Inspeciona cópias e consulta a especificação completa.
Dados fora do projeto
Histórico completo Anular, disposição, atalhos e catálogos locais são estado da aplicação, não sessão portátil.
A recuperação pode usar um armazém de objetos adjacente partilhado. É distinto de um .focale de utilizador autónomo.
Referências completas dos formatos
Transfere especificações Markdown completas em inglês, com esquemas, validação e compatibilidade.