Draw the image-map region under review, in the space its coords use
An <area> is one clickable region of an image map, but fetch-images.mjs archives
the parent <img usemap>, because that is the one file the browser downloads. So
all four image-map items reached human review as a whole national map against
alt text naming one region. fi-5153 was a full US forecast chart against
alt="Northeast Michigan". Nothing was wrong with the data; the reviewer could
not see what the text referred to.
The validation tool now outlines the region on the map and says the same thing
in words, because an outline is worth nothing to someone who cannot see it: "one
clickable region of an image map ... a 20-point outline in the bottom right of
it, spanning x 639 to 666 and y 399 to 432 of the map's 800 by 500 coordinate
space".
The first version of that outline put Northeast Michigan over North Dakota. An
<area>'s coords are CSS pixels of the map as its own page rendered it, and
weather.gov/forecastmaps puts width="370" on a map whose file is 512 pixels
wide, so measuring against the archived bytes was a third too far right. That is
the class of silent error the overlay exists to catch, found by the overlay on
its first real item.
harvest.mjs now records the owner <img>'s stated size as image_coord_space, and
the overlay's viewBox uses it, so the browser scales the outline and no
arithmetic is needed in the tool. It is null when the markup states no integer
width and height, which is an admission rather than a guess: a stylesheet-scaled
map cannot be detected from markup, and null means the archived file's own pixel
space is the best available assumption. validate.mjs requires the field and
requires it null on anything that is not an area. Backfilled for the four
existing items from a fresh fetch of the same four pages.
review.md gains the matching exception: judge an area from its coords read
against image_coord_space, not from the picture, and do not drop one for
describing only part of what you can see, because that is what an <area> is.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>