Proposed OS/2 table updates
mihill at microsoft.com
mihill at microsoft.com
Fri May 16 19:31:14 CEST 2014
Hello,
Microsoft would like to propose an update to the OS/2 table to add support for optical size ranges. Some are already aware of the work we’ve been doing in this area. We’ve already implemented these new fields privately in the new Sitka font that shipped with Windows 8.1 and we’re very happy with the result.
Here are the fields we’d like to propose:
usLowerOpticalPointSize
Format: two-byte USHORT
Units: TWIPs
Description: This field is used for fonts with multiple optical styles.
This value is the lower value of the size range for which this font has been designed.
The units for this field are TWIPs (one-twentieth of a point, or 1440 per inch). The
value is inclusive—meaning that that font was designed to work best at this point
size through, but not including, the point size indicated by usUpperOpticalPointSize.
When used with other optical fonts that set usLowerOpticalPointSize and
usUpperOpticalPointSize, it would be expected that another font has this same value as
this entry in the usUpperOpticalPointSize field, unless this font is designed for the
lowest size range. The smallest font in an optical size set should set this value to 0.
When working across multiple optical fonts, there should be no intentional gaps or
overlaps in the ranges. usLowerOpticalPointSize must be less than
usUpperOpticalPointSize. The maximum valid value is 0xFFFE.
For fonts that were not designed for multiple optical styles, this field should be set to
0 (zero) and the corresponding usUpperOpticalPointSize set to 0xFFFF.
usUpperOpticalPointSize
Format: two-byte USHORT
Units: TWIPs
Description: This field is used for fonts with multiple optical styles.
This value is the upper value of the size range for which this font has been designed.
The units for this field are TWIPs (one-twentieth of a point, or 1440 per inch). The
value is exclusive—meaning that that font was designed to work best below this point
size down to the usLowerOpticalPointSize threshold. When used with other optical fonts
that set usLowerOpticalPointSize and usUpperOpticalPointSize, it would be expected that
another font has this same value as this entry in the usLowerOpticalPointSize field, unless
this font is designed for the highest size range. The largest font in an optical size set should
set this value to 0xFFFF, which is interpreted as infinity. When working across multiple
optical fonts, there should be no intentional or overlaps left in the ranges.
usUpperOpticalPointSize must be greater than usLowerOpticalPointSize. The minimum valid
value for this field is 2 (two). The largest possible inclusive point size represented by this
field is 3276.65 points, any higher values would be represented as infinity.
For fonts that were not designed for multiple optical styles, this field should be set to 0xFFFF
and the corresponding usLowerOpticalPointSize set to 0 (zero).
The decision to add these additional metrics to the OS/2 table went through several evolutions. Our early plans were to implement the changes through TrueType instructions. We also considered using the OpenType Layout SIZE feature, but decided against these for a myriad of reasons. Ultimately we settled on the new fields in the OS/2 table. We’d like to update the version number on the OS/2 table if these are added.
The choice of using TWIPs for measurement is embedded somewhat in Windows history. For the OS/2 table we preferred not using a fixed point notation. Although the SIZE feature used tenths of a point, TWIPs had been used in Windows GDI and OS/2 as a scaling option since the mid-80's.
As always, we welcome feedback and discussion on this.
Michelle Perham
Microsoft Typography Group
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.aau.at/pipermail/mpeg-otspec/attachments/20140516/b99fd54f/attachment.html>
More information about the mpeg-otspec
mailing list