Optical sizes and how to use them (luaTeX, possibly XeTeX)

In general, size feature refers to:

Tag: 'size'

Friendly name: Optical size

Function: This feature stores two kinds of information about the optical size of the font: design size (the point size for which the font is optimized) and size range (the range of point sizes which the font can serve well), as well as other information which helps applications use the size range. The design size is useful for determining proper tracking behavior.

You can access this information for example with fontforge. Here is an example for Source Code Pro:

enter image description here

Design size indicates the size which the font designer had in mind as they made the fonts (here 10pt). Size range is available when the font comes with real optical sizes, usually indicated with Capt, Subh, Disp in the name of the fonts files.

For Source Code Pro and your example Adobe Caslon Pro, it means that you get the best results when you use the font at design size, and from a technical point of view, you will not have any problems up- and down-scaling the font to any size you want.


The fontfeature "size" is used as information about design size, recommended range of sizes, and subfamily ID, which is shared for all font files in given family with various optical sizes. This parameter is read-only. An application can read it and do implement an intelligence based on such information. For example automatically selection of the font file given by the desired size selected by user.

You can cd to texmf/fonts/opentype/public/lm and do these experiments:

otfinfo -z lmroman10-regular.otf
design size 10 pt, size range (9.5 pt, 11 pt], subfamily ID 1, subfamily name Regular
otfinfo -z lmroman12-regular.otf
design size 12 pt, size range (11 pt, 14 pt], subfamily ID 1, subfamily name Regular
otfinfo -z lmroman9-regular.otf
design size 9 pt, size range (8.5 pt, 9.5 pt], subfamily ID 1, subfamily name Regular

Of course, you can do geometrical scaling of arbitrary font to arbitrary size, but there are only recommended values of size range.

If you have only one font file per each variant in the font family, then only geometrical scaling is possible. No more "optical sizes" are available.

The "size" fontfeature is documented here.