Adds a second audience-specific config alongside the individual product
sheet, plus several fixes to the shared template and build.
datasheet-universities.yaml: written for a department buying for a cohort
rather than an individual. Leads on per-student cost with a worked class
example, carries testimonials from Murmann and Pretl, and answers the
procurement and academic-calendar questions an individual buyer never asks.
US institution list, education@tinytapeout.com as the contact.
Template gains optional quote band, footer contact block, and conditional
eyebrow / doc ref / photo caption so both sheets share one template. The
hero photo now derives its height from the text column instead of a fixed
44mm, so the two columns always end level whatever the copy length.
Header bars carry the chip-layout texture from the tt-datasheet-artwork
repo, renormalised from its native ~7% alpha and rebuilt as black traces:
they darken the bar, so contrast with the white type goes up rather than
down. Bar colour moves from #040371 to THEME_SKY_BLUE #0c66ab, where the
texture is actually legible; the config key is renamed navy -> brand to
match.
Font subset rebuilt from the full Archivo to include U+03A9 — page 2 has
used "< 500 Ω" since the first build and was silently falling back to a
system face. build.py now warns about any character the embedded font
cannot draw, and validates HTML in the config for unbalanced tags and
malformed hrefs, both of which had shipped unnoticed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
User strings were used as-is in certain parts since they were taken directly from `info.yaml`, but this could sometimes cause the datasheet build to fail since they've found a way (intentionally or not) to escape the content box that they were in.
This commit attempts to address this issue by:
- Sanitising user input using regex
- Using Typst's `str()` function instead of content boxes where possible
- Clarifying syntax in certain sections
Hopefully these changes will remove (or at least reduce) the chances of someone breaking the build.
Add new pinouts for SKY130, IHP SG13G2 and GF180mcuD.
Valid keys for `show_pinouts` can now be easily seen in the `pinout_map` dictionary:
- `caravel`
- `openframe`
- `openframe_sky130`
- `customframe_ihp_sg13g2`
- `customframe_gf180mcud`
The pinout chapter in the datasheet has also been reworked: the content now exists directly in the typst template instead of being an external file. This is to make use of the `pinout_map` and to allow for easier modification of the content.
This change also allows the page to make use of the `callout` function.
This was caused by creating a page before first checking whether there was any content for that page beforehand, so it would result in a rogue white page with no content.
Previously with the 2cm bottom margin, the documentation was cutting off
the page number about half way, so I increase the bottom margin from 2
to 3cm.