rocketsplash-formats 0.3.0

Shared data types and serialization formats for Rocketsplash TUI animations
Documentation
// <FILE>crates/rocketsplash-formats/src/provenance.rs</FILE>
// <DESC>Structured font license/provenance metadata carried by .rsf atlases</DESC>
// <VERS>VERSION: 1.0.0</VERS>
// <WCTX>Foundation crates 0.3.0 (RELEASE_PLAN §9.3 provenance fields)</WCTX>
// <CLOG>1.0.0: introduce FontProvenance; rides the FONT_ATLAS_VERSION 2 window so the schema is frozen before gt-design pins its 1.0.</CLOG>

use serde::{Deserialize, Serialize};

/// License and origin metadata for a font atlas derived from an upstream font.
///
/// A converted atlas is a modified/derivative work of its source font, so
/// Reserved-Font-Name rules (OFL 1.1, Bitstream Vera terms) can require a
/// renamed derivative. These fields let tooling verify compliance mechanically:
/// the asset-gallery CI gate asserts every shipped `.rsf` carries provenance
/// and bundles its license text (RELEASE_PLAN §9.3).
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct FontProvenance {
    /// Name of the source font this atlas was generated from (e.g. "DejaVu Sans").
    pub source_font: String,
    /// Upstream version of the source font, if known (e.g. "2.37").
    pub source_version: String,
    /// License identifier, SPDX where possible (e.g. "OFL-1.1", "Bitstream-Vera").
    pub license: String,
    /// Human-readable attribution line, suitable for direct display.
    pub attribution: String,
    /// True when the atlas uses a non-reserved derivative name per the
    /// source license's Reserved Font Name / renaming rules.
    pub renamed: bool,
}

// <FILE>crates/rocketsplash-formats/src/provenance.rs</FILE>
// <VERS>END OF VERSION: 1.0.0</VERS>