What makes Glyphs generate vhea & vmtx tables?

What makes Glyphs generate vhea & vmtx tables?
I have them in the Italics of a family, while in the Romans they aren’t being generated.

1 Like

If all glyphs share the same vertical height, vhea and vmtx table will not be generated.

On the other hand, set one glyph for different value, Glyphs will generate both tables.

1 Like

Thank you! But what’s the vertical height of a glyph anyway?

At the bottom left of font panel, click the buttom to switch to vertical metric, and you can see the glyph’s vertical height value (1000 usually, sometimes 1024, depend on the metrics) .


Thank you again, chingru!
So how can I find the glyphs that are not default vertical height? I only found layer.vertWidth which is default for all

Run this in macro to find the glyph without default vertical height:

string = ""
for gly in Glyphs.font.glyphs:
	if gly.layers[0].vertWidth != None:
		print(gly.name, gly.layers[0].vertWidth)
		string += "/" + gly.name

My way to generate both table:

  1. Select all glyphs to set to the same vertical height, for example, 1000.
  2. Randomly set whichever glyph for 1001.
  3. Export the font.
  4. Dump tables. (via fontTool TTX or any tool you used)
    — (option) —
  5. Find that glyph in vmtx table, change height from 1001 to 1000.
  6. Compile .ttx back to font

Many thanks, chingru! Indeed it works, even though it didn’t work when I tried it …
What I found out is that you also can find it in list view. But when I changed it to match the others’ values, it didn’t work, only when I deleted the wrong entry.
Anyway, it did the trick! :pray:

There is also a “Export vmtx Table” custom parameter that forces the export of the table even if there are no manually set values.