Files
j.foucher 6f62082dc4 feat(child-theme): scaffold asterion-bricks v0.1.0
Initial child theme structure inheriting from Bricks parent. Token-driven,
RGPD-native, mobile-first foundation ready for component and template work.

What's in this commit
- style.css: WP theme metadata (Template: bricks, v0.1.0)
- functions.php: enqueue cascade tokens -> utilities -> components,
  defer-loaded main.js, font preload, theme support, image sizes
  (av-hero 2400x1350, av-card 800x600, av-thumb 400x300), Gutenberg
  default styles dequeued
- theme.json: Gutenberg color/typo palette mirroring tokens
- assets/css/tokens.css: full design system per Design Handoff section 2
  (brand colors, neutrals, semantics, type scale + line-heights, 8pt
  spacing, radii, shadows, z-index, motion, prefers-reduced-motion)
- assets/css/utilities.css: modern reset + .av-container, .av-skip-link,
  .av-sr-only, .av-stack, .av-section helpers, opinionated heading scale
- assets/css/components.css: index of planned components + buttons
  (5 variants x 4 sizes per Design Handoff section 3.1) and links
- assets/js/main.js: vanilla skeleton with header scroll, IntersectionObserver
  reveal, count-up, mobile drawer; respects prefers-reduced-motion
- inc/cpt.php: register_post_type case_study (slug /customers/) + scenario
  (slug /scenarios/) + shared 'industry' taxonomy
- inc/seo.php: Organization JSON-LD on home; placeholders for Product,
  Article, FAQPage, BreadcrumbList
- assets/fonts/: Inter Variable + Italic WOFF2 self-hosted (RGPD; no
  Google Fonts CDN). Inter Display @font-face commented — Inter 4+ uses
  opsz axis from the same file.

Out of scope (intentionally deferred)
- Component fills: cards, forms, navigation, alerts, modals, tabs (placeholders)
- Page templates: home and beyond
- Bricks JSON template exports
- Schema.org Product / Article / FAQPage / BreadcrumbList implementations

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 11:49:10 +02:00

2.3 KiB

Self-hosted Inter fonts

Self-hosted to comply with GDPR. Loading fonts from Google Fonts CDN sends each visitor's IP address to Google — explicitly ruled illegal by a German court in 2022 (LG München I, 20 January 2022, file no. 3 O 17493/20). For an institutional B2G site addressing French ministries and EU security forces, Google Fonts is a non-starter.

Files expected here

File Purpose Required
Inter-Variable.woff2 Body + UI font (variable axis: weight 100-900) Yes
Inter-Variable-Italic.woff2 Italic variant Yes
InterDisplay-Variable.woff2 Optimized for display sizes (titles, hero) 🟡 Recommended

Where to download

Official source : https://rsms.me/inter

  1. Visit https://github.com/rsms/inter/releases/latest
  2. Download the latest Inter-X.Y.zip.
  3. Inside the ZIP, locate the web/ folder.
  4. Copy Inter-Variable.woff2 and Inter-Variable-Italic.woff2 into this directory.
  5. For InterDisplay-Variable.woff2, look in extras/web/ if present in the release, or use the same Inter Variable file (Inter 4+ merged Display into the optical-size axis).

Alternative via npm (if you already have a node toolchain) :

npm install @fontsource-variable/inter
cp node_modules/@fontsource-variable/inter/files/inter-latin-wght-normal.woff2 ./Inter-Variable.woff2
cp node_modules/@fontsource-variable/inter/files/inter-latin-wght-italic.woff2 ./Inter-Variable-Italic.woff2

License

SIL Open Font License 1.1. Free to use, modify, and redistribute, including in commercial websites. Attribution not required but appreciated.

After dropping the WOFF2 here

Nothing else to do. The @font-face declarations in ../css/tokens.css reference these filenames directly. The <link rel="preload"> in functions.php (wp_head action) starts fetching them on page load.

If a file is missing, the page silently falls back to the system stack (-apple-system, Segoe UI, Roboto, etc.) without any user-visible error.