Interface Typography on Real Product Screens
- Pixels per degree of visual angle
- px/deg
- Result
- Minimum readable font size
- pt
- Result
- Viewing distance
- 50 cm
- You entered
To make interface typography hold up on real product screens, you must design for the actual rendering environment—device pixel density, viewing distance, lighting, and user context—not just for the design mockup. This means setting type sizes, line heights, and contrast with physical screen constraints in mind, and testing on real hardware before launch.
Formula
The key metric is pixels per degree (px/deg), which tells you how many pixels fit into one degree of visual angle at a given viewing distance. The formula is:
px_per_deg = PPI × (viewing_distance_cm × 0.017455) / 2.54
Where:
- PPI = pixels per inch of the screen (calculated from resolution and physical size).
- viewing_distance_cm = typical distance from the user’s eyes to the screen (e.g., 50 cm for a laptop, 30 cm for a phone).
- 0.017455 = conversion factor from degrees to radians (π/180).
- 2.54 = centimeters per inch.
Once you have px/deg, you can estimate the minimum readable font size in points (pt) for a target visual angle (typically 0.2° to 0.3° for body text):
min_pt = px_per_deg × (target_angle_deg / 60) × (2.54 / 96) × 72
Here, target_angle_deg is the desired visual angle (e.g., 0.25°), and the factor (2.54/96)×72 converts pixels to points (1 pt = 1/72 inch, 1 inch = 96 CSS px).
Worked Example
Using the default values from the calculator (viewing distance = 50 cm, screen diagonal = 13 inches, resolution = 2560 px, width = 29 cm):
- Calculate PPI: PPI = 2560 / (29 / 2.54) = 2560 / 11.417 = 224.2 ppi
- Calculate px/deg: px_per_deg = 224.2 × (50 × 0.017455) / 2.54 = 224.2 × 0.8728 / 2.54 = 195.7 / 2.54 = 77.1 px/deg
- For a target visual angle of 0.25° (15 arcminutes), the minimum readable size in pixels is 77.1 × 0.25 = 19.3 px.
- Convert to points: 19.3 px × (2.54/96) × 72 = 19.3 × 0.026458 × 72 = 19.3 × 1.905 = 36.8 pt (that’s huge because 0.25° is a large angle; typical body text uses 0.2° to 0.3°).
For a more realistic target of 0.2° (12 arcminutes), the minimum size would be 77.1 × 0.2 = 15.4 px, which is about 11.5 pt. That matches common recommendations for laptop body text (11–12 pt).
Why Real Screens Differ from Design Mockups
Design tools like Figma or Sketch show type at 100% zoom on a design canvas, but the actual product screen has a specific pixel density, physical size, and viewing distance. A 16px font on a 13-inch laptop at 50 cm looks different from the same 16px on a 27-inch monitor at 70 cm. The perceived size depends on the visual angle, not just the pixel count.
For example, a 14px font on a 5.5-inch phone (held at 30 cm) has a visual angle of about 0.3°, which is comfortable. The same 14px on a 24-inch desktop monitor (viewed at 60 cm) has a visual angle of only 0.15°, which is too small for most users. That’s why responsive design must adjust type sizes based on viewing distance and screen size, not just breakpoints.
How to Choose Type Sizes for Real Screens
Follow these steps to ensure your typography holds up:
- Determine the primary viewing distance for each device class: phones ~30 cm, tablets ~40 cm, laptops ~50 cm, desktops ~60–70 cm, TVs ~200–300 cm.
- Calculate the minimum readable size using the formula above for a target visual angle of 0.2° (small but readable) to 0.3° (comfortable).
- Set your body text size to at least that minimum, and then scale headings proportionally (e.g., 1.25×, 1.5×, 2×).
- Test on real devices at typical distances. Walk around with the device, simulate real tasks, and ask users if the text is comfortable.
- Adjust for accessibility: allow users to increase font size up to 200% without breaking layout, and ensure contrast ratios meet WCAG AA (at least 4.5:1 for body text).
Common Problems and How to Avoid Them
- Too small on high-DPI screens: On a 4K laptop, a 12px font might be physically tiny because the pixel density is high. Use CSS pixels (which are already scaled) but also consider physical size—test on the actual screen.
- Line length too long or short: Optimal line length is 45–75 characters per line. On wide desktop screens, constrain the content width to around 60–80ch.
- Line height too tight: For body text, use a line-height of 1.4–1.6 times the font size. On high-DPI screens, tight line heights can make text look cramped.
- Contrast issues in bright light: On mobile screens outdoors, text needs higher contrast. Use dark text on light backgrounds or vice versa, and avoid low-contrast grays.
- Ignoring user zoom: Users can zoom in on desktop and mobile, but if your layout breaks at 200% zoom, that’s a problem. Test at 200% zoom in the browser.
Comparison: CSS Pixels vs. Physical Pixels
CSS pixels are a unit of measurement that approximates a “reference pixel” on a screen. On most devices, 1 CSS pixel equals 1 physical pixel at 96 DPI, but on high-DPI screens, 1 CSS pixel may equal 2 or 3 physical pixels. This means a 16px CSS font is rendered with 32 or 48 physical pixels on a Retina display, making it look crisp but not necessarily larger. The physical size of the text depends on the screen’s actual size and resolution.
For example, a 16px font on a 5-inch phone with a 1080p screen (440 PPI) is physically about 0.09 cm tall. The same 16px font on a 24-inch desktop monitor with a 1080p screen (92 PPI) is physically about 0.44 cm tall. That’s why you need to adjust sizes based on viewing distance—the phone is held closer, so the smaller physical size still subtends a similar visual angle.
Frequently Asked Questions
What is the minimum font size for mobile screens?
For mobile devices held at 30 cm, a minimum of 16px CSS (equivalent to about 12pt) is recommended for body text. That gives a visual angle of about 0.3°, which is comfortable for most users. Some guidelines suggest 14px as a minimum, but 16px is safer for readability and accessibility.
How do I calculate the right line height?
A good rule of thumb is to use a line height of 1.4 to 1.6 times the font size for body text. For example, if your font size is 16px, set line-height to 1.5 (24px). This provides enough vertical spacing for the eye to track lines without jumping. For headings, you can use a tighter line height (1.1–1.3) because they are shorter.
Why does my text look blurry on some screens?
Blurry text is usually caused by subpixel rendering issues or scaling. On Windows, ClearType can cause blurriness if the font is not optimized for the display. On high-DPI screens, make sure your app is DPI-aware and uses the correct scaling. Also, avoid using non-integer pixel sizes (e.g., 15.5px) as they can cause anti-aliasing artifacts.
Should I use rem or px for font sizes?
Use rem units for font sizes because they are relative to the root element’s font size, which makes it easier to scale the entire interface for accessibility. For example, setting the root font size to 16px and using 1rem for body text allows users to change the root size in their browser settings, and all text scales proportionally. Px units are fixed and do not respond to user preferences.
How does contrast ratio affect typography?
Contrast ratio measures the difference between text and background colors. WCAG 2.1 requires a contrast ratio of at least 4.5:1 for normal text and 3:1 for large text (≥18pt or 14pt bold). Low contrast makes text hard to read, especially on screens with glare or for users with low vision. Use a contrast checker to verify your color choices.
What is the ideal line length for readability?
For body text, aim for 45–75 characters per line, including spaces. On desktop, this often translates to a content width of 60–80ch (where ch is the width of the character “0”). On mobile, the line length is naturally shorter due to screen width, but you should avoid lines that are too short (under 30 characters) as they cause excessive line breaks.
Related
Formula used
in t | Viewing distance | cm | 50 | 0 in d | Screen diagonal | inches | 13 | 0 in r | Screen resolution (horizontal) | px | 2560 | 0 in w | Screen width | cm | 29 | 0 out ppi | Pixels per inch | ppi | r / (w / 2.54) | 0 out px_per_deg | Pixels per degree of visual angle | px/deg | ppi * (t * 0.017455) / 2.54 | 1 out min_pt | Minimum readable font size | pt | px_per_deg * (1 / 60) * (2.54 / 96) * 72 | 1
Each line is one input (in, sel, list) or one result (out: label, unit, formula, decimals). How the calculators work
Method: the standard formula for this calculation, rounded as each result states. See how the calculators work or report an error.