The OS/2 table for the "Gabriola" font, has the bit WWS turned on, in its fsSelection field. This bit WWS, what does it mean ?

Belloc's picture

In the Open Type spec one can read :

"If bit 8 is set in OS/2 table v. 4, then ‘name’ strings for family and subfamily are provided that are consistent with a weight/width/slope family model without requiring the use of ‘name’ IDs 21 or 22."

The 'name' table for the "Gabriola" doesn't have the name ID's 21 and 22. The font "Arial" also doesn't have these name ID's, but it doesn't have the bit WWS set, in the OS/2 table. What's the difference between "Gabriola" and "Arial", regarding this bit ?

As a matter of fact, I just found out that, among the ~190 fonts used by MS Word, the font "Gabriola" is the only one that has this bit (WWS) set.

John Hudson's picture

Arial is an old font, whose OS/2 and name table settings predate the bit 8 and IDs 21 and 22 settings. Since it is an MS core font, there may be compatibility concerns in updating such settings in the font, and MS also have the option of providing special handling for it in their apps if necessary to make it behave correctly in DWrite environments. Remember, the WWS settings in the OS/2 and name tables are designed to improve processing times by giving the DWrite (previously WPF) system explicit information that it otherwise has to produce via heuristics.

When I was building Gabriola, which is a single style display type, I had to ask MS where in the DWrite font environment such a font should be classified. After some thought, they determined that a single-font 'family' fitted within the weight/width/slope family model, hence the bit 8 setting in Gabriola.

The bit 8 setting indicates to DWrite that a font is a member of a family that conforms to the weight/width/slope model, i.e. that each member of the family is differentiated from others only with regard to these three properties.

Belloc's picture

John,

I have realized in the 'name' table that you were the font designer for Gabriola. Now reading what you wrote above I can see what WWS stands for (weight/width/slope). Could you elaborate a little bit more on this : "Remember, the WWS settings in the OS/2 and name tables are designed to improve processing times by giving the WWS system explicit information that it otherwise has to produce via heuristics."

I have just observed you edited your post. Let me read the link you provided, and I'll come back if necessary.

Thanks.

Belloc's picture

John,

Thanks again for the link. I had never heard about DirectWire, but it seems to be something to delve into.

Belloc's picture

John,

Is there any special reason for the field usFirstCharIndex be null, for the Gabriola, Cambria and Cambria Math fonts, in the OS/2 table, instead of 0x0020 ?

John Hudson's picture

0x0020 is the word space character. In many fonts, esp CFF OpenType fonts following Adobe's practice, this will be the lowest character code in the font, and hence will be the entry for the OS/2 usFirstCharIndex field. In fonts that follow Microsoft's recommendations, the second glyph in the font will be /NULL/ which will be encoded at 0x0000, which is then the lowest character code in the font. I make all my fonts following the MS recommendations for the first four glyphs (which in turn is based on Apple's original TrueType spec), even CSS fonts, since that means I can maintain a single source independent of output format; obviously I make an exception to this practice when I am making fonts for Adobe.

Belloc's picture

Perfect !

Tks

Syndicate content Syndicate content