Opened 2 months ago

Closed 2 months ago

#31881 closed defect (fixed)

Enabling bundled fonts does not work anymore on Android

Reported by: gk Owned by: tbb-team
Priority: Medium Milestone:
Component: Applications/Tor Browser Version:
Severity: Normal Keywords: tbb-rbm, ff68-esr, tbb-9.0-must-alpha, TorBrowserTeam201910R
Cc: boklm, sisbell Actual Points:
Parent ID: #30324 Points: 0.5
Reviewer: Sponsor:

Description

With the switch to ESR 68 --enable-bundled-fonts is not available anymore for mobile. We should figure out what happened and what we should use instead (if anything).

Child Tickets

Change History (4)

comment:1 Changed 2 months ago by sysrqb

Keywords: TorBrowserTeam201909R added; TorBrowserTeam201909 removed
Status: newneeds_review

Similar to #31880, --enable-bundled-fonts is restricted to browser: https://searchfox.org/mozilla-esr68/source/toolkit/moz.configure#1323

It seems bundled-fonts was always desktop-only, configure simply didn't error when targeting Android before FF64. Bug 1491419 moved this from old-configure.in into moz.configure. We can see old-configure.in before this change described it as "Enable support for bundled fonts on desktop platforms" (and now I notice it says this in toolkit/moz.configure, too).

This feature was originally added in bug 998844 and this was limited to desktop builds because Fennec already shipped with bundled fonts: https://bugzilla.mozilla.org/show_bug.cgi?id=998844#c15.

It seems like we should take note of comment 8:

This is already possible on Android and Firefox OS, where font files in the "font"
sub-dir of a profile are loaded on startup:
http://dxr.mozilla.org/mozilla-central/source/gfx/thebes/gfxFT2FontList.cpp#1266

gfxFT2FontList::FindFontsInOmnijar is a slightly more helpful function (from FF32). This was implemented in Bug 878674.

This is the current location: https://searchfox.org/mozilla-esr68/source/gfx/thebes/gfxFT2FontList.cpp#1079

  static const char* sJarSearchPaths[] = {
      "res/fonts/*.ttf$",
  };
  RefPtr<nsZipArchive> reader = Omnijar::GetReader(Omnijar::Type::GRE);
  for (unsigned i = 0; i < ArrayLength(sJarSearchPaths); i++) {
    nsZipFind* find;
    if (NS_SUCCEEDED(reader->FindInit(sJarSearchPaths[i], &find))) {
      const char* path;
      uint16_t len;
      while (NS_SUCCEEDED(find->FindNext(&path, &len))) {
        nsCString entryName(path, len);
        AppendFacesFromOmnijarEntry(reader, entryName, aCache, jarChanged);
      }
      delete find;
    }
  }

comment:2 Changed 2 months ago by gk

Looks good. Could you file a follow-up ticket to investigate the font fingerprinting defense approach outlined above and make it blocking #18097? Feel free to close this ticket then, thanks!

comment:3 Changed 2 months ago by pili

Keywords: TorBrowserTeam201910R added; TorBrowserTeam201909R removed

We're now in October, moving September outstanding reviews to October

comment:4 in reply to:  1 Changed 2 months ago by sysrqb

Resolution: fixed
Status: needs_reviewclosed

Done. #31917

Note: See TracTickets for help on using tickets.