[lucida] Scaling the Lucida font

Bruno Voisin bvoisin at icloud.com
Wed May 4 14:07:46 CEST 2022


> On 4 May 2022, at 09:09, R Martinez <rm.tech at mac.com> wrote:
> 
> I am puzzled by the scaling command. I’ve never seen a font scaled.
> ---------------------------
> % Slightly reduce size.
> \defaultfontfeatures{Scale=.92}
> --------------------------
> My question is:
> 
> 1. Is it necessary to scale the font? If so, why? And if scaling is needed, what are the scaling rules? 
> 2. Is this common with Lucida? Lucida only?

Hi Raul,


Regarding question 1:

>From lcdplain.tex, which is Lucida's plain TeX support file by Y&Y (the creators <https://tug.org/yandy/> in the early 1990s of the original TeX distribution of the Type 1 fonts):

	% LucidaBright has larger x-height and cap-height than CM, so it is
	% desirable to use a somewhat smaller font size (95%), as is done here.
	% Also, since smaller sizes are derived by scaling, it is better to
	% increase the relative size of super/sub-scripts a bit, as shown here.

	% set up the basic set of fonts needed - for additional ones see later

	% plain CM uses:  5,   6,   7,   8,   9,   10,  11,   12,   14,   18
	% plain LB uses:  5.2, 6.1, 6.9, 7.8, 8.6,  9.5, 10.4, 11.2, 12.9, 16.4

The file is copyrighted, so unfortunately I cannot attach it here. It may be found in the Extras folder of

	http://mirrors.ctan.org/systems/mac/oztex/oztex52.sit

When the lucidabr LaTeX support package was created, it kept the scaling, applying it to size ranges instead of the discrete sizes used by plain TeX. You have three options:

- nolucidascale: no scaling at all

- lucidascale:

	below 5.5:		* 1.04	(5 -> 5.2)
	between 5.5 and 6.5:	* 1.02	(6 -> 6.12)
	between 6.5 and 7.5:	* 0.99	(7 -> 6.93)
	between 7.5 and 8.5:	* 0.97	(8 -> 7.76)
	between 8.5 and 9.5:	* 0.96	(9 -> 8.64)
	between 9.5 and 10.:	* 0.95	(10 -> 9.5)
	between 10.5 and 11.5:	* 0.94	(11 -> 10.34)
	between 11.5 and 13:	* 0.93	(12 -> 11.16)
	between 13 and 15.5:	* 0.92	(14 -> 12.88)
	between 15.5 and 18.5:	* 0.91	(18 -> 16.38)
	between 18.5 and 22.5:	* 0.90	(20 -> 18)
	between 22.5:		* 0.89	(25 -> 22.25)

- lucidasmallscale:

 	below 5.5:		* 0.98	(5 -> 4.9)
	between 5.5 and 6.5:	* 0.96	(6 -> 5.76)
	between 6.5 and 7.5:	* 0.94	(7 -> 6.58)
	between 7.5 and 8.5:	* 0.92	(8 -> 7.36)
	between 8.5 and 9.5:	* 0.91	(9 -> 8.19)
	between 9.5 and 10.5:	* 0.90	(10 -> 9)
	between 10.5 and 11.5:	* 0.89	(11 -> 9.79)
	between 11.5 and 13:	* 0.88	(12 -> 10.56)
	between 13 and 15.5:	* 0.87	(14 -> 12.18)
	between 15.5 and 18.5:	* 0.86	(18 -> 15.48)
	between 18.5 and 22.5:	* 0.85	(20 -> 17)
	above 22.5:		* 0.84	(25 -> 21)

I don't know the precise rules if any. A possibility is that lucidascale makes text in Lucida the same length as Computer Modern, and lucidasmallscale the same as Times. (To be tested, I don't have the time right now.)

The commercial support package lucimatx from PCTeX offers a "scale=" option for linear scaling in addition to the nonlinear scaling options above, and mentions using \linespread to adjust the line spacing if need be. See §3 of the free version of the documentation at

	https://pctex.com/files/managed/b/bf/lucimatxAbbrev.pdf

By combining SizeFeatures, Size and Scale in fontspec it should be possible to reproduce the nonlinear scalings with the OpenType fonts. (I'm not enough of a font expert to appreciate the differences in the output.)

I generally use lucidasmallscale with the Type 1 fonts and \defaultfontfeatures{Scale=.9} with the OpenType fonts. The lucidaot doc uses \defaultfontfeatures{Scale=.92}.


Regarding question 2:

Scaling fonts is not uncommon. This is a possibility offered by outline fonts.

The first widespread package that used it, to my knowledge, is helvetic from the PSNFSS package, allowing (among other things) Computer Modern to be replaced by Times/Helvetica/Courier when these became available in TeX. The fonts weren't designed to be used together, so Helvetica required a bit of rescaling to blend well with the other two. The "scaled=" option of helvetic allows a rescaling factor to be specified, and just "scaled" selects 0.95 by default. See "texdoc psnfssx".

The same option now appears in other packages, as in lucimatx with name "scale" or in tgheros (for TeX Gyre Heros).

fontspec takes things a step further for OpenType fonts, by allowing to specify as Scale not only a given scale factor but also MathUppercase or MatchLowercase, to match the height of the uppercase or lowercase letters of the main font.


Good luck with your font experiments,

Bruno Voisin




More information about the lucida mailing list.