skribble_icons_material 0.3.1
skribble_icons_material: ^0.3.1 copied to clipboard
Hand-drawn Material icon catalog for skribble. Ships the full roughened Flutter Material icon set as precomputed geometry.
skribble_icons_material #
Hand-drawn versions of the full Flutter Material icon set.
Ships the source geometry for all 8,600+ Material icon codepoints. At render time WiredIcon wavers each silhouette with the theme's roughness and honours weight, growing or shrinking the shapes evenly, so WiredIcon(icon: Icons.search, weight: 300) draws a lighter hand-drawn magnifier.
This catalog used to live inside the core skribble package. It moved here so that apps which do not render Material icons no longer download it — skribble dropped from roughly 31 MiB compressed to about 1.5 MiB.
Installation #
dart pub add skribble_icons_material
To pull in every skribble icon set at once, use skribble_icons instead.
Usage #
Register the catalog once during startup so WiredIcon draws hand-drawn shapes instead of the Material font glyph:
import 'package:skribble_icons_material/skribble_icons_material.dart';
void main() {
registerSkribbleMaterialIcons();
runApp(const MyApp());
}
Then either resolve an IconData:
WiredIcon(icon: Icons.search, size: 32)
or look up an identifier directly, which needs no registration:
final data = lookupMaterialRoughIconByIdentifier('search');
Why registration is explicit #
WiredIcon lives in the core skribble package, which must not depend on an icon set. It resolves IconData through a catalog that a set registers at startup. Without a registration it falls back to Flutter's ordinary Icon, so forgetting the call degrades to a plain glyph rather than crashing.
Exports #
| Export | Type | Description |
|---|---|---|
registerSkribbleMaterialIcons |
void Function() |
Installs the catalog for WiredIcon. |
lookupMaterialRoughIconByIdentifier |
WiredSvgIconData? Function |
Geometry for a Material identifier. |
kMaterialRoughIcons |
Map<int, WiredSvgIconData> |
Geometry keyed by codepoint. |
kMaterialRoughIconsCodePoints |
Map<String, int> |
Identifiers to codepoints, including aliases. |
kMaterialRoughIconsFontFamily |
String |
Family name of the generated icon font. |
lookupMaterialRoughIconsIconData |
IconData? Function |
Font-backed IconData for an identifier. |
WiredBrandIcon (GitHub, Dart, Flutter, and Figma marks) ships in the core skribble package, because it is project branding rather than an icon set.
Regenerating #
The catalog comes from the Flutter SDK's own icon declarations, resolved against upstream Material SVG packages. Regenerating needs Deno and a Chromium binary, which the pipeline drives through svg2roughjs:
melos run rough-icons # rough SVG output only
melos run rough-icons-font # SVG + TTF font + Dart helpers
melos run rough-icons-baseline # refresh the unresolved-codepoint baseline
melos run rough-icons-ci-check # the same regression gates CI enforces
See docs/rough-icon-pipeline.md for the full option list, the supplemental manifest used for upstream gaps, and the unresolved-regression gates.
Attribution #
Material icon artwork is Apache-2.0, copyright Google LLC. The generated font and geometry are derivatives and retain that license.
License #
skribble is licensed under the root repository's LICENSE. The icon artwork in this package is Apache-2.0.
Provenance #
This catalog is generated, never hand-edited. The table records exactly what it was built from. Bumping a value means editing tool/asset_sources.txt in the same commit as the regenerated catalog.
| Field | Value |
|---|---|
| Icon declarations | Flutter SDK 3.47.0 (material/icons.dart) |
| Outline SVGs | @material-design-icons/svg |
| Symbol SVGs | @material-symbols/svg-400 |
| Brand fallback | simple-icons |
| Upstream gaps | packages/skribble/tool/examples/material_rough_icons.supplemental.manifest.json |
| Regression baseline | packages/skribble/tool/examples/material_rough_icons.unresolved-baseline.json |
| Rough engine | svg2roughjs via Deno, seed 1337 + codepoint |
| License | Apache-2.0 |
| Generator | melos run rough-icons-font |
| Registry | tool/asset_sources.txt |
Generation is deterministic: rebuilding from the same source bytes reproduces this catalog byte for byte. CI re-derives every catalog and fails on any diff, so an upstream change can never land silently.