Or name table entries are lossy, and - depending on the deployment Nearly-lossless (hinting information may change). Operations such as replacing outlines with component glyphs are Lossless compression is, for example, CFF subroutinization. Original representation", which can be lossless or lossy ![]() * compression - "encoding information using fewer bits than the * subsetting - to me, it really means "reduce the glyph set", nothingĮlse anything else beyond that is "not subsetting" Smaller" efforts into distinct components: Glyph names, it's difficult to track the changes :) ).Įven though the debate may sound a bit academic, I'd split the "make Purposes (when I want to check what exactly the subsetter did - without Subsetting is not the last step in the process, but also for comparison Understandably, preserving glyph names is primarily important if Yes, I realize that "my needs" combined with "browsers" is the key here. This piece of data so I'll drop it by default". It was more with a mindset of "browsers don't need > Obviously, pyftsubset is written with a mindset of being used at the > behavior of the tool "conservative" rather than "aggressive". > optimizations on which you deem necessary, but please make the default > There might be a general "-optimize-web" switch which turns all the extra > or convenience feature, but PLEASE as opt in. Sure, the tool can offer this functionality as a bonus > that, and for many developers, the subsetting step may not at all be the best > name table or change the post table to format 3, I have tons other ways to do > haystack - "where did it go wrong?", they'll ask. > not realize that it has happened, and may be looking for a needle in a When in a toolchain, other people may actually > to find out that apart from subsetting, the tool has changed things in my font > incorporate the tool into a toolchain and actually do some work with it only Otherwise, other people will experience what I have experienced. Please please change the commandline options to be opt in rather than opt > So at this point, my plea to Behdad would be: My expectation of commandline tools is "by default do the right thing". > "if I don't touch something, I expect it to stay the same". > Because the general expectation, especially with commandline tools, is that > better option would be "-remove-kern-table", which would drop it when > But even if there was only a choice between keeping and dropping the table, a > Do not let the user wonder what the "other", unspecified state does. > That's what I consider a much better commandline UX. The default value (if option is not specified) should > truncate the list at 10920 pairs (so they fit in one "kern" subtable) and the > pairs with unencoded glyphs, sort the list by descending absolute value, > "drop" would remove it and "GPOS" would expand the "GPOS" kerning, eliminate > which takes several values as parameters: "keep" would keep it as it is, ![]() > So a better approach to handle that would be to have an option -kern-table > would actually automatically expand and subset the "GPOS" kerning and write > what does the tool do when the option is not specified? One might think that > when it's specified, its purpose is to keep the "kern" table as it is. > Imagine an option in an imaginary tool called -keep-kern-table. > lack of clarity, because the user does not easily understand the "other" > Another problem with the general tone of "-keep-something" type of options is > Otherwise, we may end up with a lot of frustrated users. Table instead, which explains why they are OK. The TransType WOFF files has a glyf (i.e. So it seems to be a bug in pyftsubset causing it to output emptyīlueValues, which OTS does not like causing it to reject the font. Which is indeed the case since the font has: Is about empty operand of some operators, including the BlueValues, Checking the referenced source file line, shows that the error So it seems to not like something about the PrivateDict of the CFF ![]() ot-sanatize (from Google's OpenType Sanitizer used by both Chrome andįirefox) fails to sanitize the pyftsubset fonts, when built withĮRROR at src/cff.cc:383 (bool ::ProcessGeneric(ots::OpenTypeFile*, uint32_t, ots::OTSStream*, const uint8_t*, size_t, const std::vector&, ots::Buffer&))
0 Comments
Leave a Reply. |