/LightMeter

A tool for calculating gray levels at any point in a glyph.

Primary LanguagePythonBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

LightMeter

A tool for RoboFont for calculating gray levels at any point in a glyph.

LightMeter Screenshot

Drag the tool over parts of a glyph to see the gray levels. The number in the blue box is a percentage.

  • Airy disk blurring is caused by diffraction in the eye. It is independent of focus, other factors also contribute, these are not part of this tool.
  • This blurring is small, but still typographically significant.
  • This code uses its own convolution kernel. It does not generate or process a bitmap.
  • Some tools for calculating the diameter of the Airy disk are in scaleTools.py
  • For each measurement the tool has to do a fair number of calculations. Works fine on a Mid 2014 MacBook Pro, but might be slower on older machines. Increase the chunkSize in the source if necessary.

Example

Suppose we are looking at 8 pt type from 40 cm, the angular size for the em is 24.26' arcminutes. See on sizecalc.com. Also suppose the em for this font is 1000 units.

Pupilsize (mm)Airy disc diameter (arcminutes)(upm * angular size Airy diameter) / angular size em (em units)
8.20.65827.13
14.494185.28

Airy disk diameter data from Review of Basic Principles in Review of Basic Principles in Optics, Wavefront and Wavefront Error by Austin Roorda, Ph.D. University of California, Berkeley. http://roorda.vision.berkeley.edu.

So what does it mean?

These numbers can be an indication about the physical limits of vision. As these calculations seem to show, letterforms at reading size and distance are at a scale where this kind of blurring is significant. This tool might assist thinking about the letterforms and what they should do. What's the weight in a stem, really? What happens in a counter when the radius changes? How dark is this margin? Etc.

Controls

  • arrow up: increase diameter
  • arrow down: decrease diameter
  • command + arrow up: increase grid size
  • command + arrow dow: decrease grid size
  • c: clear trail
  • t: toggle trail
  • p: toggle grid
  • i: invert

Install

To do

  • wire up sliders for eye distance, typesize and pupil size.
  • add support for non-circular kernels.