Article

Pictures with Words

Pictures with Words Demo Manifest

A living sandbox for photo-forward shortcodes: hero, masonry, spreads, and filmstrips. See how Hugo powers responsive, EXIF-aware layouts without dependencies.

Reading progress 0%
hero-1.jpg

Pictures with Words

Pictures with Words Demo Manifest

How to assemble image-heavy stories with Hugo’s resource pipeline, responsive AVIF/WebP/JPEG outputs, and EXIF-aware overlays.

Image rail Tap a frame to jump to that section
Progress 0%
Jump to

Flow options

<pw-masonry> Dense walls
<pw-spread> Diptychs/triptychs
<pw-filmstrip> Scrolling reels
<pw-hero> Full-bleed openers

Shortcodes remain available below; tap any gallery to open the lightbox.

Welcome to the playground for the new Pictures with Words experience. Everything on this page runs on Hugo’s resource pipeline—no external image CDN, just smart resizing, AVIF/WebP fallbacks, and the image metadata already shipped in this repo.

Quick recipe

  1. Drop your photos into this page bundle alongside index.md.
  2. Use the pw-* shortcodes to choose the flow you want.
  3. Keep writing Markdown as usual; Hugo handles responsive sources, EXIF overlays, and lightbox hooks.

Masonry wall

Use pw-masonry when you want density without losing the individual feel of each frame. Everything in the masonry/ subfolder is pulled automatically.

masonry/masonry-1.jpg
masonry/masonry-1.jpg
masonry/masonry-2.jpg
masonry/masonry-2.jpg
masonry/masonry-3.jpg
masonry/masonry-3.jpg
masonry/masonry-4.jpg
masonry/masonry-4.jpg
masonry/masonry-5.jpg
masonry/masonry-5.jpg
masonry/masonry-6.jpg
masonry/masonry-6.jpg

Staggered spread (diptych / triptych)

pw-spread handles small curated sets—good for breaks between text sections or to compare frames.

spread-1.jpg
spread-1.jpg
spread-2.jpg
spread-2.jpg
spread-3.jpg
spread-3.jpg
A staggered trio for mid-story emphasis.

Single image callout

When you just need one photo with a caption, the default Markdown figure works great.

Glacier sunrise framed by clouds

Photo Information

Technical
Dimensions:2000×1332px
Colors:5 extracted

Scrolling filmstrip

For contact-sheet vibes or lightweight BTS sequences, pw-filmstrip creates a horizontal reel with snap points and lightbox-ready sources.

filmstrip/filmstrip-1.jpg
filmstrip/filmstrip-1.jpg
filmstrip/filmstrip-2.jpg
filmstrip/filmstrip-2.jpg
filmstrip/filmstrip-3.jpg
filmstrip/filmstrip-3.jpg
filmstrip/filmstrip-4.jpg
filmstrip/filmstrip-4.jpg

Drag or scroll horizontally; each frame is AVIF/WebP with JPEG fallback.

Swipe to explore

Full-bleed image test

Sometimes you want to break the column. Use pw-bleed to stretch a bundle image across the viewport.

Full-bleed valley panorama
Full-bleed panorama pulled from the same bundle—no CDN required.

Paragraph rhythm check

The layout is meant for essays as much as galleries. Here’s a quick body-text run to validate spacing, drop caps, and inline elements.

First paragraph triggers the drop cap and uses balanced line length to sit alongside the image rail. A short opening sentence tees up the pacing without overwhelming the reader.

Subsequent paragraphs should feel steady and readable. Mix in bold statements, light emphasis, and a sprinkle of inline code to prove the typographic system holds up. Blockquotes stay within the text column while images can float wide when asked.

Photography is writing with light. Good tooling just keeps you in flow.

Shortcode Parameter Reference

pw-hero

ParamValuesDefaultDescription
srcfilenameImage filename from page bundle
focal_pointCSS position50% 50%Object-position for art direction
scrimauto | custom | noneautoOverlay gradient mode
contrastauto | light | darkautoText color override
letterboxtrue | falsefalseConstrain max-height
metadatashow | hide | minimalshowEXIF overlay visibility
creditsstringAttribution text

pw-masonry

ParamValuesDefaultDescription
pathfolder pathSubfolder to match images from
colsnumber3Column count
gapCSS length1remGutter between items
backgroundCSS valueSection background color/gradient
metadatashow | hide | minimalshowEXIF overlay visibility
spacingCSS varDesign token for custom gap
creditsstringAttribution text

pw-spread

ParamValuesDefaultDescription
imagescomma listFilenames: a.jpg,b.jpg,c.jpg
layoutdiptych | triptych | staggerautoLayout variant
gapCSS length2.4remGutter between items
overlappercentage12%Stagger offset
backgroundCSS valueSection background
scrimauto | custom | noneautoOverlay mode
metadatashow | hide | minimalshowEXIF overlay visibility
creditsstringAttribution text

pw-filmstrip

ParamValuesDefaultDescription
pathfolder pathSubfolder to match images from
heightCSS length420pxRail height
gapCSS length1.4remGutter between frames
backgroundCSS valueSection background
metadatashow | hide | minimalshowEXIF overlay visibility
spacingCSS varDesign token for custom gap

pw-bleed

ParamValuesDefaultDescription
srcfilenameImage filename from page bundle
altstringAlt text
maxheightnumber760Max height in pixels
scrimauto | custom | noneautoOverlay mode
metadatashow | hide | minimalshowEXIF overlay visibility
creditsstringAttribution text

Deep Linking

Images support deep linking via URL hash. Each image gets a unique ID in the format #pw-{slug}-{index}:

  • Opening the lightbox updates the URL hash
  • Direct links scroll to and open the image: /pictures-with-words/demo-manifest/#pw-demo-manifest-3
  • Share buttons in lightbox copy the deep link URL

A print button appears on PW pages. Toggle contact sheet mode for a 4-column grid layout ideal for proofing. Print styles hide navigation elements and optimize page breaks.

Tips

  • Want a different opener? Swap hero.src in front matter or drop a {{< pw-hero src="..." >}} inside the content.
  • Full-bleed sections are already allowed—pair them with short captions and keep your prose tight.
  • The rail on the left summarizes available blocks so you don’t need to memorize syntax.
  • Use metadata="hide" for cleaner galleries, metadata="minimal" for compact EXIF display.