[subset] Add --prune-codepage-ranges

This commit is contained in:
Khaled Hosny 2023-11-11 01:31:49 +02:00
parent be8ec35934
commit 28735a6d0a
3 changed files with 17 additions and 3 deletions

View File

@ -407,6 +407,10 @@ Other font-specific options
*not* be switched on if an intersection is found. [default]
--no-prune-unicode-ranges
Don't change the 'OS/2 ulUnicodeRange*' bits.
--prune-codepage-ranges
Update the 'OS/2 ulCodePageRange*' bits after subsetting. [default]
--no-prune-codepage-ranges
Don't change the 'OS/2 ulCodePageRange*' bits.
--recalc-average-width
Update the 'OS/2 xAvgCharWidth' field after subsetting.
--no-recalc-average-width
@ -3086,6 +3090,7 @@ class Options(object):
self.recalc_bounds = False # Recalculate font bounding boxes
self.recalc_timestamp = False # Recalculate font modified timestamp
self.prune_unicode_ranges = True # Clear unused 'ulUnicodeRange' bits
self.prune_codepage_ranges = True # Clear unused 'ulCodePageRange' bits
self.recalc_average_width = False # update 'xAvgCharWidth'
self.recalc_max_context = False # update 'usMaxContext'
self.canonical_order = None # Order tables as recommended
@ -3450,6 +3455,15 @@ class Subsetter(object):
log.info(
"%s Unicode ranges pruned: %s", tag, sorted(new_uniranges)
)
if self.options.prune_codepage_ranges:
old_codepages = font[tag].getCodePageRanges()
new_codepages = font[tag].recalcCodePageRanges(font, pruneOnly=True)
if old_codepages != new_codepages:
log.info(
"%s CodePage ranges pruned: %s",
tag,
sorted(new_codepages),
)
if self.options.recalc_average_width:
old_avg_width = font[tag].xAvgCharWidth
new_avg_width = font[tag].recalcAvgCharWidth(font)

View File

@ -98,7 +98,7 @@
<sTypoLineGap value="0"/>
<usWinAscent value="1160"/>
<usWinDescent value="288"/>
<ulCodePageRange1 value="01100000 00101110 00000001 00000111"/>
<ulCodePageRange1 value="00000000 00000000 00000000 00000001"/>
<ulCodePageRange2 value="00000000 00000000 00000000 00000000"/>
<sxHeight value="543"/>
<sCapHeight value="733"/>

View File

@ -117,8 +117,8 @@
<sTypoLineGap value="0"/>
<usWinAscent value="977"/>
<usWinDescent value="272"/>
<ulCodePageRange1 value="00100000 00000000 00000001 00011111"/>
<ulCodePageRange2 value="11000100 00000000 00000000 00000000"/>
<ulCodePageRange1 value="00000000 00000000 00000000 00000001"/>
<ulCodePageRange2 value="00000000 00000000 00000000 00000000"/>
<sxHeight value="530"/>
<sCapHeight value="735"/>
<usDefaultChar value="0"/>