User:Dbaron/Readability

From MozillaWiki
Jump to: navigation, search

The Fennec readability project can be broken down into the following engineering tasks:

  1. Implement back end code for font size inflation
  2. Implement hooks for front end to change inflation factors (more complex if only some content should be scaled by double-tap)
  3. Implement front end code to change inflation factors on double-tap and for re-panning to correct position for double-tap zoom
  4. Tweaking the various configuration parameters (two sets, one for the double-tapped sizes and one for non-double-tapped sizes) to produce the best experience

Font size inflation

bug 627842, owner: dbaron

Design tasks to do:

  • figure out what the right configuration parameters are (min desired font size (what units?) vs. desired minimum ratio of font size to screen width)
  • figure out what layout invariants need to change in order to have different font sizes pre-reflow and during reflow (e.g., stuff with text runs)
  • work through performance implications of what needs to be done, and figure out what needs caching
  • figure out the right thresholds for triggering font size inflation

Development tasks to do:

  • ensure that all callers that need the font size inflation are either within reflow or safely outside of reflow, or cache the font size inflation during reflow if we're going to end up needing it during reflow of siblings/ancestors (though we might need to do this anyway)
  • do reflow and painting using the inflated font sizes
  • ensure we mark things dirty when the inflation thresholds are crossed (e.g., if there are text size thresholds)
  • implement -moz-text-size-adjust (like -webkit-text-size-adjust and -ms-text-size-adjust)
  • make sure all relevant preferences are not synced between devices (since they're device-specific)

Front end changes to handle position maintenance

no bug, no owner

Tweaking of configuration parameters

no bug, no owner

Issues

Madhava's proposal for doing additional font zooming on double tap has the problem that it creates weird modality issues for the user with double-tap vs. multitouch zooming. It's also weird in that it implies we have two different "minimum readable font size" parameters, but the user can't change either and can't zoom text past the second while keeping it wrapped.

I think an approach of combining one level of font inflation with line wrapping (for multitouch and double-tap zoom) would make more sense, since it allows the user to choose the desired text size (though, when it's larger than our inflation preference, with extra white spaces).