ecomfe / fontmin

Minify font seamlessly
http://ecomfe.github.io/fontmin
MIT License
5.74k stars 315 forks source link

Fix unique glyph codes check in getSubsetText #92

Closed Moustachos closed 3 years ago

Moustachos commented 3 years ago

Don't use getUniqText() for glyphs subset, check for codes uniqueness in string2unicodes() instead.

getUniqueText() process passed string as a regular one. In some cases it doesn't handle unicode properly and will remove code points parts when several code points share the same numeric parts.

Ultimately, it will result in wrong code points being pushed to output.

In some cases, the glyphs count will match, not the codes themselves (tested and confirmed with FontAwesome's Duotone font variation).

Fix UTF-16 glyphs subset (and probably others), tested and confirmed with FontAwesome's Duotone font variation where glyphs code points look like this: \10f6ae (https://fontawesome.com/v5.15/icons/acorn?style=duotone).

Keeping getUniqText() method for backward compatibility / third party packages relying on it.

junmer commented 3 years ago

@Moustachos thank you 😄 bump fontmin@0.9.9

Moustachos commented 3 years ago

Nice :D