{rating} shows a score as a row of stars - or hearts - in inline SVG
(tags/_lib/rating.php). The whole icons up to the score are filled, the rest empty, and
a part of one is filled as far as the score goes: 3.75 fills three stars and three quarters
of the fourth.
The part is a nested <svg> as wide as the part - no
clipPath, so no id that two ratings on one page could share - measured over the
drawn icon, so 0.5 is exactly half. The whole is role="img", with the score in
words as its aria-label and <title>: 4.5 out of
5, or label.
The colours are --pad-rating-star, -heart and -empty
on .pad-rating, with light-dark() defaults written once per page;
the fill attributes carry the light ones for a reader without the style. A score that is no
number, a max that is no whole number from 1 to 20 or an unknown icon is an error under the
strict check. The tag only shows a score; to collect votes see {poll}.