The FreeType Project - Bugs: bug #59016, Compatible Widths โ...
You are not allowed to post comments on this tracker with your current authentication level.
bug #59016: Compatible Widths โ implementation
Submitter: | - <_194785> | ||
Submitted: | Wed 26 Aug 2020 02:51:16 PM UTC | ||
Severity: | 3 - Normal | Item Group: | Wishlist |
Status: | None | Privacy: | Public |
Assigned to: | None | Open/Closed: | Open |
Planned Release: | None |
No files currently attached
Depends on the following items: None found
Items that depend on this one: None found
Carbon-Copy List
There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.
No changes have been made to this item
Powered by Savane 3.13-d3ae.
Corresponding source code
Scale each point coordinates? No. Compatible widths is more clever, the way it preserves stem weights.
In subpixel hinting, where horizontal rounding is instead rounded to 1รท16, it might be known that the minimum distance in instructions is reduced to half its value in standard TrueType rendering. So when a font has a horizontal weight of 0.3 pixels and gets rounded with a minimum distance of a pixel to 1 pixel, the subpixel hinting will round to 0.5 pixels, not 1, not 0.3125. These instructions where a minimum distance is there, are specifically the horizontal instructions that compatible widths does not stretch. The remaining horizontal links are stretched by the right factor, therefore the result of compatible widths is preserved stem weights but stretched distances between them.
The next thing of compatible widths is the font hacks. When the font enables ClearType mode deltas become enabled. That's why the Windows XP version of Microsoft Tahoma is distinctly different from the Windows 98 version in ClearType rendering. What the renderer has to do is to then apply the proper deltas (but not all deltas at will) to make the proper compatible widths outline. The font hacks are not in the renderer but they are passively applied by the renderer, like any instruction.