Skip to content

fix(tombstone): ship the real PP Mori Bold Italic face - #258

Merged
moskovich merged 1 commit into
mainfrom
fix/3452-ship-real-bold-italic-face
Jul 29, 2026
Merged

fix(tombstone): ship the real PP Mori Bold Italic face#258
moskovich merged 1 commit into
mainfrom
fix/3452-ship-real-bold-italic-face

Conversation

@moskovich

Copy link
Copy Markdown
Contributor

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/fonts shipped only PPMori-Regular with a single @font-face at 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.ttf has been committed in ff-app at assets/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: usWeightClass 700, italic angle -11.5°, italic bit set in fsSelection.

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:

  • ff-app pubspec.yaml maps PPMori-BoldItalic.ttf to weight 700 + style italic.
  • ff-app lib/widgets/artwork_credit.dart — the shared artist/title credit widget — styles the artist w400/normal and the title w700/italic.
  • ff-app lib/widgets/now_displaying_bar/display_item.dart does the same for the now-displaying bar.

TombstoneOverlay already asked for exactly 700 + 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 titleStyle said the bold italic was "per the design detail sheet (node 3811-14395 states)." I pulled that node and the whole Tombstone 1.0 canvas: 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 --noEmit clean, the 6 existing tombstone tests pass, npm run build succeeds, and both font files land in the static export at out/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.

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 feralfile-bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewers: 1 (approve: 0, comment: 1, request-changes: 0).

Missing tests / verification

  • The handoff lacks the repository-required npm run verify evidence. 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 report npm run verify before merge.

No other supported code-level findings remained after re-review.

@moskovich

Copy link
Copy Markdown
Contributor Author

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 window.handleCDPRequest contract feral-controld uses — a displayPlaylist cast with inline metadata for artist and title, over a deliberately pale artwork. Same script run against main for the before. Screenshots compared at 3×.

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 f, the y descender and the a.

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 #A0A0A0 gray.

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.

@moskovich
moskovich merged commit 0eff773 into main Jul 29, 2026
6 checks passed
@moskovich
moskovich deleted the fix/3452-ship-real-bold-italic-face branch July 29, 2026 03:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

tombstone: ship PP Mori SemiBold Italic — title bold-italic is browser-synthesized

2 participants