fix(tombstone): ship the real PP Mori Bold Italic face - #258
Conversation
The tombstone title is bold italic over a regular-weight artist line, but only PPMori-Regular shipped in public/fonts, so Chromium synthesized both the weight and the slant. Synthesized bold italic is visibly wrong at 24px on a 1080p wall. Ship PPMori-BoldItalic (weight 700, italic angle -11.5) as woff2 + woff and declare it as a second @font-face. Converted from the licensed PPMori-BoldItalic.ttf already committed in ff-app assets/fonts/PPMori — no new asset was needed. Bold Italic, not SemiBold Italic as #256 proposed: ff-app's pubspec.yaml maps PPMori-BoldItalic.ttf to weight 700 + style italic, and artwork_credit.dart styles every artist/title pair as w400/normal over w700/italic. Shipping the same face keeps a title looking identical on the wall and in the app. Also corrected the comment above titleStyle. It cited Figma node 3811-14395 as specifying bold italic; that node's text styles are all PP Mori 400 and the tombstone frames carry no italic. The real justification is app consistency, which is verifiable in the code, so the comment now points there instead. Closes #256
feralfile-bot
left a comment
There was a problem hiding this comment.
Reviewers: 1 (approve: 0, comment: 1, request-changes: 0).
Missing tests / verification
- The handoff lacks the repository-required
npm run verifyevidence. The reported typecheck, targeted tombstone tests, and production build are useful, but they do not demonstrate the required changed-file lint and full unit-test path. Please run and reportnpm run verifybefore merge.
No other supported code-level findings remained after re-review.
|
Verified in a real player render, so the "not verified on a wall" line in the description is now only half true. Method: built this branch, served the static export, drove headless Chromium at 1280×720 through the same The real face lands. The title carries about 4% more ink than the synthesized one (0.1384 vs 0.1329 dark-pixel coverage over the title line), and the letterforms differ where a drawn italic differs from a sheared roman — visible in the Worth being honest about the size of the win: at 3× the difference is obvious, but at wall distance this will read as "properly set" rather than as a fix anyone would point at. It is still the right change — the app renders titles in this exact face, and synthesized bold italic is the kind of thing that looks subtly cheap without the viewer knowing why. Also confirmed in the same run: the artist line stays regular weight against the bold-italic title, and the curator line keeps its Still not verified on physical hardware. FF1-KKJW7J95 is on the network but refuses SSH on 22 — only its API port 1111 is listening — so the bundle could not be sideloaded from here. |
Closes #256. Small enough to ride 1.0.22 with #255.
What was wrong
The tombstone renders its title bold italic over a regular-weight artist line, but
public/fontsshipped onlyPPMori-Regularwith a single@font-faceat weight 400. Chromium synthesized both the weight and the slant, which is visibly wrong at 24px on a 1080p wall.The asset was never the blocker
#256 says this "needs the licensed asset from B&F/design." It doesn't.
PPMori-BoldItalic.ttfhas been committed in ff-app atassets/fonts/PPMori/since the app's first UI commit in February. I converted that file to woff2 + woff and added the second@font-face. Nothing was requested from anyone.The face verifies as what we want it to be:
usWeightClass700, italic angle -11.5°, italic bit set infsSelection.Bold Italic, not SemiBold Italic
#256's title asks for SemiBold Italic. Bold is the right one, because the test that matters is consistency with the rest of the product rather than the issue title:
pubspec.yamlmapsPPMori-BoldItalic.ttfto weight 700 + style italic.lib/widgets/artwork_credit.dart— the shared artist/title credit widget — styles the artistw400/normal and the titlew700/italic.lib/widgets/now_displaying_bar/display_item.dartdoes the same for the now-displaying bar.TombstoneOverlayalready asked for exactly700+ italic, so the CSS was right and only the face was missing. Shipping Bold Italic means an artwork title renders as the same face on the wall and in the app. SemiBold would have made the wall quietly different from every other place we show a title.Comment correction
The comment above
titleStylesaid the bold italic was "per the design detail sheet (node 3811-14395 states)." I pulled that node and the wholeTombstone 1.0canvas: every text style there is PP Mori 400, both tombstone frames use one shared style for the artist and title lines, and nothing on the canvas is italic. So the citation was wrong even though the styling is right. The comment now points at the app-consistency reason, which is verifiable in code rather than in a frame that says otherwise.Worth a separate look with B&F at some point: the frames specify 12px and no weight distinction, while we ship 16px-at-720 with a bold italic title. Both deviations are deliberate and defensible — the type size for TV viewing distance, the weight for app consistency — but the design file currently disagrees with the build on both, and only the size deviation was ever flagged.
Verification
tsc --noEmitclean, the 6 existing tombstone tests pass,npm run buildsucceeds, and both font files land in the static export atout/fonts/PP_Mori/.Not verified on a wall yet. The thing to look at on a device is whether the real Bold Italic reads better than the synthesized one at viewing distance, and whether 700 is now too heavy next to the 400 artist line at 16px-at-720 — synthesized bold is usually lighter than a true bold face, so the contrast between the two lines will increase slightly.