- Move SceneGraph-to-NodeChange conversion, text payload assembly, and blob encoding into @open-pencil/fig\n- Inject core glyph outline lookup through an explicit runtime service\n- Centralize neutral font naming in scene-graph and retain core IO/runtime orchestration
42 lines
1.7 KiB
Markdown
42 lines
1.7 KiB
Markdown
# @open-pencil/fig
|
|
|
|
`.fig` file-format package for OpenPencil.
|
|
|
|
The package owns the outer `.fig` archive boundary and is the staged home for Figma-specific
|
|
SceneGraph conversion policy. Production SceneGraph read/write remains available through
|
|
`@open-pencil/core/io` while conversion modules move behind this package's public API.
|
|
|
|
Current ownership:
|
|
|
|
- Complete `.fig` archive parsing through `parseFigBuffer()`
|
|
- `.fig` archive assembly through `writeFigArchive()`
|
|
- Canvas payload and image resource handling
|
|
- `readFigContainer()` / `writeFigContainer()` helpers for raw `fig-kiwi` payloads
|
|
- `.fig` source and archive result types
|
|
- NodeChange-to-SceneGraph property conversion, including styles, plugin metadata, text, paint, vector, and font policy, through `@open-pencil/fig/node-change`
|
|
- Component-property, symbol-override, derived-symbol-data, and instance synchronization policy through `@open-pencil/fig/instance-overrides`
|
|
- Effective raw-metadata precedence and invalidation over SceneGraph's format-neutral edited-field tracking
|
|
- SceneGraph-to-`NodeChange` export conversion with an explicit glyph-outline runtime service
|
|
- Package-local archive, conversion, instance, export, and dist smoke tests
|
|
|
|
Planned ownership:
|
|
|
|
- Oracle-backed `.fig` fixtures
|
|
|
|
Non-goals:
|
|
|
|
- Generic Kiwi schema/runtime internals — use `@open-pencil/kiwi`
|
|
- Format-neutral IO registration, export targeting, CanvasKit thumbnails, or browser workers — use
|
|
`@open-pencil/core/io`
|
|
- Editor actions, renderer behavior, Vue/app UI, CLI formatting, or MCP transport
|
|
|
|
This follows the existing `@open-pencil/pen` pattern: a format package owns its source model/parser
|
|
and SceneGraph policy, while core registers it in the shared IO system.
|
|
|
|
## Checks
|
|
|
|
```sh
|
|
cd packages/fig
|
|
bun run check
|
|
```
|