Added icon font Lucide

This commit is contained in:
Zachary Levy
2026-08-11 23:00:37 -07:00
parent 83d11f5d99
commit 53036cbf74
3 changed files with 2101 additions and 4 deletions
+54 -4
View File
@@ -167,13 +167,15 @@ Type scale is based on a 1.25 modular ratio. Minimum body size: 14px (web), 12pt
## ICONOGRAPHY
**Primary set:** Lucide Icons (`https://unpkg.com/lucide@latest/dist/umd/lucide.min.js`)
- Stroke-based, 24px grid, 1.5px stroke weight by default
- Matches the precise, geometric character of the design system
**Primary set:** Lucide Icons
- Source font: `fonts/lucide/lucide.ttf`
- Icon-name/codepoint map: `fonts/lucide/codepoints.json`
- The current font workflow uses the Lucide TTF as its only source; it does not use SVGs
- Lucide provides one regular face with its upstream 2px icon geometry
- Scale to 16px (compact), 20px (default), 24px (prominent)
- Color: inherit from text context — no separate icon colors unless semantic (red for error, etc.)
**Substitution flag:** No custom icon font was provided. Lucide is used as the nearest available match. If Cybersteel has a proprietary icon set, replace Lucide references in `ui_kits/` and update this section.
**Export status:** The pinned Lucide TTF and codepoint map are present. The application-specific subset exporter is not implemented yet.
**Supplementary unicode glyphs (Art Deco ornament):**
- `◆` `◇` — diamond separator
@@ -184,6 +186,50 @@ Type scale is based on a 1.25 modular ratio. Minimum body size: 14px (web), 12pt
**Never use emoji in product UI.**
## ICON FONT EXPORT
The pinned Lucide font inputs are under `./fonts/lucide/`. This directory intentionally contains only:
- `lucide.ttf` — the canonical base font.
- `codepoints.json` — the Lucide icon-name to private-use codepoint map.
The TTF is the correct source format for the exporter: it works in native applications and can produce TTF, WOFF, WOFF2, and other delivery outputs. WOFF2 is a delivery format, not the archival or transformation source.
Lucide ships one regular font face. Its font weight does not control icon stroke width. The current workflow does not generate weight variants; subsetting the premade font preserves Lucide's regular 2px appearance.
### Create a subset directly
`pyftsubset` removes unselected glyphs from the Lucide TTF. Pass the selected Unicode codepoints with `--unicodes`.
Example using three Lucide glyphs:
```sh
mkdir -p build
pyftsubset ./fonts/lucide/lucide.ttf \
--unicodes=U+E0F5,U+E151,U+E193 \
--output-file=build/cybersteel-icons.ttf \
--layout-features="*"
```
Generate WOFF2 from the same source and selection:
```sh
pyftsubset ./fonts/lucide/lucide.ttf \
--unicodes=U+E0F5,U+E151,U+E193 \
--output-file=build/cybersteel-icons.woff2 \
--flavor=woff2 \
--layout-features="*"
```
Generate WOFF instead with `--flavor=woff` and a `.woff` output path. Keep the original Lucide private-use codepoints. `pyftsubset` retains the required `.notdef` glyph and removes unselected icon glyphs.
The current Lucide font is one regular face. Subsetting removes unused icons but does not change stroke width or create light/bold variants. Do not request synthetic bold for the icon font.
For web delivery, emit one `@font-face` declaration and CSS classes only for selected icons. Keep Lucide codepoints stable unless there is a specific reason to remap them. Keep the ISC license and the MIT notice for Feather-derived icons with redistributed output.
Official sources: [Lucide static assets](https://lucide.dev/guide/packages/lucide-static), [Lucide icon font guide](https://lucide.dev/guide/static/font), [Lucide license](https://lucide.dev/license), and [release 1.31.0](https://github.com/lucide-icons/lucide/releases/tag/1.31.0).
---
## FILE INDEX
@@ -193,6 +239,10 @@ README.md ← This file
SKILL.md ← Agent skill definition
styles.css ← All CSS custom properties (colors, type, spacing, effects)
fonts/lucide/
lucide.ttf ← Canonical Lucide font source
codepoints.json ← Icon-name to codepoint map
assets/
texture-scanline.svg ← Scanline texture overlay
File diff suppressed because it is too large Load Diff
Binary file not shown.