we should always use 16px, for all font types. and we should have functional page zoom (like opera; mozilla bug 4821) which should be a font zoom, like now, until about 150% (and down to about 75%) then be a proper zoom and we need two places to set it. A default, in the prefs panel and a temporary override which resets to the default on leaving a domain and that's it. now, next to the default setting widget, you have a preview pane which shows you the xx-small to xx-large text sizes at that zoom with a picture to show if it is zooming it or not and you have hidden prefs to control when you start doing real zoom and stop doing pure font zoom (either as two limits, or as a fraction which you use in both directions) the minimum font size pref would be set in pixels but would set the minimum AFTER any zoom (including full page zoom). The menu for the temporary override zoom could look like: | : | | ' .------------------------------. | Page Zoom (120%) > | Smaller Ctrl - | | . | Larger Ctrl + | | : +------------------------------+ | 50% | | 75% | | 90% | | 100% (Original Size) | | 120% (User Default) Ctrl 0 | | 150% | | 200% | +------------------------------+ | Other (300%)... | | Set current as default | `------------------------------' The pref pane for fonts could look like this: | ,== Font size ===================================. | | Default zoom: -========V===================+ | | | 25 100 150 200 250 300 | | | Minimum font size: [ 9 |v] pixels | | | | | | Preview: | | | xx-small abcdefghijklmnopqrstuvwxyz 12 ####### | | | small Many Web sites will look like th #IMAGE# | | | medium This is the default font size t ####### | | | large abcdefghijklmnopqrstuvwxyz 1234567890 AB | | | xx-large abcdefghijklmnopqrstuvwxyz 1234567890 | | `------------------------------------------------' | | [X] Allow authors to specify fonts. | | > Default font: [_Times New Roman____________|v] ...where > is a disclosure triangle expanding to: |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | v Default fonts: | ,== Font families for [ Western text |v] ====. | | serif: [_Times New Roman___________|v] | | | sans-serif: [_Arial_____________________|v] | | | monospace: [_Courier_New_______________|v] | | | fantasy: [_(no_fonts_available)______|v] | | | cursive: [_Comic_Sans________________|v] | | | By default use ( ) sans-serif (o) serif | | `---------------------------------------------' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Setting the short version automatically sets the "By default use" pref and fills in the relevant field, overriding all the languages with the specified default. It would, however, remember what the last actual defaults were, so that if it was changed from a serif to a sans-serif, the previous value would be filled back in. Note that the drop downs only show fonts that are of the relevant types. For example, serif fonts don't appear under the sans-serif option. Similarly, the "default" pref (undisclosed version) shows all serif and sans-serif fonts. The internal model for the way this would affect font-size in CSS would be: stylesheet cascade | \|/ specified value <-----------------------. | | \|/ | computed value ------------------> inheritance | +---------------------------------------------. | | \|/ | font zoom | | | +-------------------+---------. | | | | | \|/ | calculation separate minimum | of 'em', 'ex', font zoom font-size | '%', and ratios and minimum calculation | used in other font-size | | properties calculation \|/ | | for absolute font-size-adjust height of | line-heights | font box | | \|/ | | | used value \|/ \|/ | | inline box model <----------' | | \|/ \|/ +-----------------------------------------------------------+ | f u l l p a g e z o o m | +-----------------------------------------------------------+ | | \|/ \|/ font rasterising layout rendering \ / \ / _\| |/_ final rendering