Huge lag spike when activating a UI.Text GameObject.

Basically I activate (using SetActive(true)) a UI.Text GameObject when the player touches a book. When this happens the first time I get a huge performance hit visible in the profiler:
Canvas.SendWillRenderCanvases() (46.4%) : Font.CacheFontForText (8.4%)!

Why? Can I avoid this?

It might be because the canvas your text is on has pixel perfect checked. Pixel perfect can cause performance issues in some cases.

Check font settings of the text you use on your UI.Text.

Having insanely high ‘Font size’ increases the generated font texture and that might yield to what’s happening to you. Check the character set as well.

I usually go with
Font size : 64
Rendering mode : smooth
Character : ASCII default set