Removal of Tables by Default

I noticed that on the Options, Font tab that the following tables are removed by default:

LTSH VDMX hdmx, and that by default hdmx is compressed on saving fonts. Obviously the table cannot be compressed if it has been removed. Does Font Creator recreate these tables on saving, or are they obsolete?

hdmx = Horizontal device metrics
hmtx = Horizontal metrics

Font Creator doesn’t recreate these tables. To regenerate LTSH, VDMX and hdmx you could use a utility from Microsoft called CacheTT, located at:
http://www.microsoft.com/typography/tools/tools.htm

These tables contain cached data that might slightly improve performance, as the rasterizer can use those values. Without these tables the rasterizer has to calculate the values. Although I’ve never done extensive testing, I think we’re talking about milliseconds here.

Thanks for that information. The only table that had been stripped from the fonts I was editing was the hdmx table.

Using the Cachett utility I was able to replace just that table with the command line:

cachett -thdmx

I had to set the font header flag Bit4 “Instructions may alter advance width” in the font to make it work. This flag was not set in the original font either, which makes me wonder, “If the flag was not set, would the original font be able to make use of the hdmx table, even though it was included in the font?”

The “original” fonts I’m using seem to have been ported from the Macintosh Platform (because they used 1000 funits/em), and edited in Fontographer.

Milliseconds probably don’t matter any more these days with fast graphics cards and very fast processors. When these tables were invented, presumably they served a useful purpose, otherwise why would MS have gone to the trouble of adding them to Truetype specification?

Since I didn’t know the purpose of these tables, I was wary of removing them. It seems that they are no longer useful. Still,

I’m not sure but it is possible the rasterizer ignores the table when that particular bit is not set, but I doubt that. Each new version of Windows has a different font rasterizer, so it might be dependant on the Windows version you are running.

I don’t think unhinted fonts profit from the generated hdmx table.

Erwin, given that a fresh installation of FC has the option to remove these three tables switched on by default, can you clarify why this is so? Are these tables obsolete or such? (You didn’t answer that question from Bhikkhu.)

The reason I ask is I use FC to edit TTF fonts produced by other open-source projects, and I don’t want to be inadvertently deleting any tables they had created.

You have pointed to the CacheTT utility. Do I then understand that these are merely caches (like Firefox’s browsing cache) and the information therein is completely regeneratable from the rest of the font?

Thanks for your patience with my inexperience.

P.S.: I am also curious, as an aside, to know why hdmx alone of the three is spelt with all small letters! I do see at http://www.microsoft.com/typography/otspec/otff.htm that some tables are in all smalls and some in all capitals. Is it just another Microsoft idiosyncrasy?

Without instructions a font scales linearly. The hdmx table is not necessary at all unless instructions are used that change this behavior. Same goes for the VDMX table. LTSH improves the performance of a font, but with today’s processors this is no longer noticeable.

So basically these tables are not needed, unless your font has specific instructions that cause the font to scale non-linearly.

If you make changes to font outlines, you have to regenerate these tables, as they may have become outdated.

Correct.

Fonts that have been made for Windows Vista and Windows 7 no longer include these tables. For example Calibri and Cambria don’t have them .Times New Roman and Arial still do include them though, probably for compatibility reasons. We recommend to not include them.

A long time ago (probably in1992) it was specified, table tag names consisting of all lower case were reserved for Apple’s use.