# colorLib.builder: Build COLR/CPAL tables from scratch

colorLib.builder: Build COLR/CPAL tables from scratch

fontTools.colorLib.builder.populateCOLRv0(table: COLR, colorGlyphsV0: Dict[str, Sequence[Tuple[str, int]]], glyphMap: Mapping[str, int] | None = None)

  Build v0 color layers and add to existing COLR table.

  Parameters:

    - table – a raw `otTables.COLR()` object (not ttLib’s `table_C_O_L_R_`).

    - colorGlyphsV0 – map of base glyph names to lists of (layer glyph names, color palette index) tuples. Can be empty.

    - glyphMap – a map from glyph names to glyph indices, as returned from `TTFont.getReverseGlyphMap()`, to optionally sort base records by GID.

fontTools.colorLib.builder.buildCOLR(colorGlyphs: Dict[str, Sequence[int | Mapping[str, Any] | Paint | Tuple[str, int | Mapping[str, Any] | Paint | Tuple[str, _PaintInput]]] | int | Mapping[str, Any] | Paint | Tuple[str, int | Mapping[str, Any] | Paint | Tuple[str, _PaintInput]]], version: int | None = None, *, glyphMap: Mapping[str, int] | None = None, varStore: VarStore | None = None, varIndexMap: DeltaSetIndexMap | None = None, clipBoxes: Dict[str, Tuple[int, int, int, int, int] | Tuple[int, int, int, int] | ClipBox] | None = None, allowLayerReuse: bool = True) → table_C_O_L_R_

  Build COLR table from color layers mapping.

  Parameters:

    - colorGlyphs – map of base glyph name to, either list of (layer glyph name, color palette index) tuples for COLRv0; or a single `Paint` (dict) or list of `Paint` for COLRv1.

    - version – the version of COLR table. If None, the version is determined by the presence of COLRv1 paints or variation data (varStore), which require version 1; otherwise, if all base glyphs use only simple color layers, version 0 is used.

    - glyphMap – a map from glyph names to glyph indices, as returned from TTFont.getReverseGlyphMap(), to optionally sort base records by GID.

    - varStore – Optional ItemVarationStore for deltas associated with v1 layer.

    - varIndexMap – Optional DeltaSetIndexMap for deltas associated with v1 layer.

    - clipBoxes – Optional map of base glyph name to clip box 4- or 5-tuples: (xMin, yMin, xMax, yMax) or (xMin, yMin, xMax, yMax, varIndexBase).

  Returns:

    A new COLR table.

fontTools.colorLib.builder.buildCPAL(palettes: Sequence[Sequence[Tuple[float, float, float, float]]], paletteTypes: Sequence[ColorPaletteType] | None = None, paletteLabels: Sequence[None | str | Dict[str, str]] | None = None, paletteEntryLabels: Sequence[None | str | Dict[str, str]] | None = None, nameTable: table__n_a_m_e | None = None) → table_C_P_A_L_

  Build CPAL table from list of color palettes.

  Parameters:

    - palettes – list of lists of colors encoded as tuples of (R, G, B, A) floats in the range [0..1].

    - paletteTypes – optional list of ColorPaletteType, one for each palette.

    - paletteLabels – optional list of palette labels. Each lable can be either: None (no label), a string (for for default English labels), or a localized string (as a dict keyed with BCP47 language codes).

    - paletteEntryLabels – optional list of palette entry labels, one for each palette entry (see paletteLabels).

    - nameTable – optional name table where to store palette and palette entry labels. Required if either paletteLabels or paletteEntryLabels is set.

  Returns:

    A new CPAL v0 or v1 table, if custom palette types or labels are specified.