Merge pull request #3268 from qxliu76/bug_fix

fix the order of prune_unused_regions
This commit is contained in:
Cosimo Lupo 2023-09-05 19:20:39 +01:00 committed by GitHub
commit 02784f3806
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 46 additions and 218 deletions

View File

@ -633,9 +633,6 @@ def VarStore_optimize(self, use_NO_VARIATION_INDEX=True, quantization=1):
for k, v in front_mapping.items(): for k, v in front_mapping.items():
varidx_map[k] = back_mapping[v] if v is not None else NO_VARIATION_INDEX varidx_map[k] = back_mapping[v] if v is not None else NO_VARIATION_INDEX
# Remove unused regions.
self.prune_regions()
# Recalculate things and go home. # Recalculate things and go home.
self.VarRegionList.RegionCount = len(self.VarRegionList.Region) self.VarRegionList.RegionCount = len(self.VarRegionList.Region)
self.VarDataCount = len(self.VarData) self.VarDataCount = len(self.VarData)
@ -643,6 +640,9 @@ def VarStore_optimize(self, use_NO_VARIATION_INDEX=True, quantization=1):
data.ItemCount = len(data.Item) data.ItemCount = len(data.Item)
data.optimize() data.optimize()
# Remove unused regions.
self.prune_regions()
return varidx_map return varidx_map

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="3.17"> <ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="4.42">
<GDEF> <GDEF>
<Version value="0x00010003"/> <Version value="0x00010003"/>
@ -17,7 +17,7 @@
<Format value="1"/> <Format value="1"/>
<VarRegionList> <VarRegionList>
<!-- RegionAxisCount=2 --> <!-- RegionAxisCount=2 -->
<!-- RegionCount=5 --> <!-- RegionCount=2 -->
<Region index="0"> <Region index="0">
<VarRegionAxis index="0"> <VarRegionAxis index="0">
<StartCoord value="-1.0"/> <StartCoord value="-1.0"/>
@ -42,58 +42,29 @@
<EndCoord value="0.0"/> <EndCoord value="0.0"/>
</VarRegionAxis> </VarRegionAxis>
</Region> </Region>
<Region index="2">
<VarRegionAxis index="0">
<StartCoord value="0.0"/>
<PeakCoord value="0.0"/>
<EndCoord value="0.0"/>
</VarRegionAxis>
<VarRegionAxis index="1">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
<Region index="3">
<VarRegionAxis index="0">
<StartCoord value="-1.0"/>
<PeakCoord value="-1.0"/>
<EndCoord value="0.0"/>
</VarRegionAxis>
<VarRegionAxis index="1">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
<Region index="4">
<VarRegionAxis index="0">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
<VarRegionAxis index="1">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
</VarRegionList> </VarRegionList>
<!-- VarDataCount=1 --> <!-- VarDataCount=1 -->
<VarData index="0"> <VarData index="0">
<!-- ItemCount=6 --> <!-- ItemCount=5 -->
<NumShorts value="0"/> <NumShorts value="0"/>
<!-- VarRegionCount=2 --> <!-- VarRegionCount=2 -->
<VarRegionIndex index="0" value="0"/> <VarRegionIndex index="0" value="0"/>
<VarRegionIndex index="1" value="1"/> <VarRegionIndex index="1" value="1"/>
<Item index="0" value="[0, 0]"/> <Item index="0" value="[-10, 17]"/>
<Item index="1" value="[14, -28]"/> <Item index="1" value="[-7, 63]"/>
<Item index="2" value="[-10, 17]"/> <Item index="2" value="[-3, 32]"/>
<Item index="3" value="[-3, 32]"/> <Item index="3" value="[0, 0]"/>
<Item index="4" value="[-7, 63]"/> <Item index="4" value="[14, -28]"/>
<Item index="5" value="[-7, 63]"/>
</VarData> </VarData>
</VarStore> </VarStore>
<AdvWidthMap>
<Map glyph=".notdef" outer="0" inner="3"/>
<Map glyph="uni0020" outer="0" inner="4"/>
<Map glyph="uni0024" outer="0" inner="1"/>
<Map glyph="uni0024.nostroke" outer="0" inner="1"/>
<Map glyph="uni0041" outer="0" inner="0"/>
<Map glyph="uni0061" outer="0" inner="2"/>
</AdvWidthMap>
</HVAR> </HVAR>
<MVAR> <MVAR>
@ -105,7 +76,7 @@
<Format value="1"/> <Format value="1"/>
<VarRegionList> <VarRegionList>
<!-- RegionAxisCount=2 --> <!-- RegionAxisCount=2 -->
<!-- RegionCount=5 --> <!-- RegionCount=2 -->
<Region index="0"> <Region index="0">
<VarRegionAxis index="0"> <VarRegionAxis index="0">
<StartCoord value="-1.0"/> <StartCoord value="-1.0"/>
@ -130,42 +101,6 @@
<EndCoord value="0.0"/> <EndCoord value="0.0"/>
</VarRegionAxis> </VarRegionAxis>
</Region> </Region>
<Region index="2">
<VarRegionAxis index="0">
<StartCoord value="0.0"/>
<PeakCoord value="0.0"/>
<EndCoord value="0.0"/>
</VarRegionAxis>
<VarRegionAxis index="1">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
<Region index="3">
<VarRegionAxis index="0">
<StartCoord value="-1.0"/>
<PeakCoord value="-1.0"/>
<EndCoord value="0.0"/>
</VarRegionAxis>
<VarRegionAxis index="1">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
<Region index="4">
<VarRegionAxis index="0">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
<VarRegionAxis index="1">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
</VarRegionList> </VarRegionList>
<!-- VarDataCount=1 --> <!-- VarDataCount=1 -->
<VarData index="0"> <VarData index="0">

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="3.19"> <ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="4.42">
<GlyphOrder> <GlyphOrder>
<!-- The 'id' attribute is only for humans; it is ignored when parsed. --> <!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
@ -629,7 +629,7 @@
<Format value="1"/> <Format value="1"/>
<VarRegionList> <VarRegionList>
<!-- RegionAxisCount=2 --> <!-- RegionAxisCount=2 -->
<!-- RegionCount=5 --> <!-- RegionCount=2 -->
<Region index="0"> <Region index="0">
<VarRegionAxis index="0"> <VarRegionAxis index="0">
<StartCoord value="-1.0"/> <StartCoord value="-1.0"/>
@ -654,58 +654,29 @@
<EndCoord value="0.0"/> <EndCoord value="0.0"/>
</VarRegionAxis> </VarRegionAxis>
</Region> </Region>
<Region index="2">
<VarRegionAxis index="0">
<StartCoord value="0.0"/>
<PeakCoord value="0.0"/>
<EndCoord value="0.0"/>
</VarRegionAxis>
<VarRegionAxis index="1">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
<Region index="3">
<VarRegionAxis index="0">
<StartCoord value="-1.0"/>
<PeakCoord value="-1.0"/>
<EndCoord value="0.0"/>
</VarRegionAxis>
<VarRegionAxis index="1">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
<Region index="4">
<VarRegionAxis index="0">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
<VarRegionAxis index="1">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
</VarRegionList> </VarRegionList>
<!-- VarDataCount=1 --> <!-- VarDataCount=1 -->
<VarData index="0"> <VarData index="0">
<!-- ItemCount=6 --> <!-- ItemCount=5 -->
<NumShorts value="0"/> <NumShorts value="0"/>
<!-- VarRegionCount=2 --> <!-- VarRegionCount=2 -->
<VarRegionIndex index="0" value="0"/> <VarRegionIndex index="0" value="0"/>
<VarRegionIndex index="1" value="1"/> <VarRegionIndex index="1" value="1"/>
<Item index="0" value="[0, 0]"/> <Item index="0" value="[-10, 17]"/>
<Item index="1" value="[14, -28]"/> <Item index="1" value="[-7, 63]"/>
<Item index="2" value="[-10, 17]"/> <Item index="2" value="[-3, 32]"/>
<Item index="3" value="[-3, 32]"/> <Item index="3" value="[0, 0]"/>
<Item index="4" value="[-7, 63]"/> <Item index="4" value="[14, -28]"/>
<Item index="5" value="[-7, 63]"/>
</VarData> </VarData>
</VarStore> </VarStore>
<AdvWidthMap>
<Map glyph=".notdef" outer="0" inner="3"/>
<Map glyph="uni0020" outer="0" inner="4"/>
<Map glyph="uni0024" outer="0" inner="1"/>
<Map glyph="uni0024.nostroke" outer="0" inner="1"/>
<Map glyph="uni0041" outer="0" inner="0"/>
<Map glyph="uni0061" outer="0" inner="2"/>
</AdvWidthMap>
</HVAR> </HVAR>
<MVAR> <MVAR>
@ -717,7 +688,7 @@
<Format value="1"/> <Format value="1"/>
<VarRegionList> <VarRegionList>
<!-- RegionAxisCount=2 --> <!-- RegionAxisCount=2 -->
<!-- RegionCount=5 --> <!-- RegionCount=2 -->
<Region index="0"> <Region index="0">
<VarRegionAxis index="0"> <VarRegionAxis index="0">
<StartCoord value="-1.0"/> <StartCoord value="-1.0"/>
@ -742,42 +713,6 @@
<EndCoord value="0.0"/> <EndCoord value="0.0"/>
</VarRegionAxis> </VarRegionAxis>
</Region> </Region>
<Region index="2">
<VarRegionAxis index="0">
<StartCoord value="0.0"/>
<PeakCoord value="0.0"/>
<EndCoord value="0.0"/>
</VarRegionAxis>
<VarRegionAxis index="1">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
<Region index="3">
<VarRegionAxis index="0">
<StartCoord value="-1.0"/>
<PeakCoord value="-1.0"/>
<EndCoord value="0.0"/>
</VarRegionAxis>
<VarRegionAxis index="1">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
<Region index="4">
<VarRegionAxis index="0">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
<VarRegionAxis index="1">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
</VarRegionList> </VarRegionList>
<!-- VarDataCount=1 --> <!-- VarDataCount=1 -->
<VarData index="0"> <VarData index="0">

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ttFont sfntVersion="OTTO" ttLibVersion="4.41"> <ttFont sfntVersion="OTTO" ttLibVersion="4.42">
<GlyphOrder> <GlyphOrder>
<!-- The 'id' attribute is only for humans; it is ignored when parsed. --> <!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
@ -128,7 +128,7 @@
<Format value="1"/> <Format value="1"/>
<VarRegionList> <VarRegionList>
<!-- RegionAxisCount=1 --> <!-- RegionAxisCount=1 -->
<!-- RegionCount=3 --> <!-- RegionCount=1 -->
<Region index="0"> <Region index="0">
<VarRegionAxis index="0"> <VarRegionAxis index="0">
<StartCoord value="0.0"/> <StartCoord value="0.0"/>
@ -136,20 +136,6 @@
<EndCoord value="1.0"/> <EndCoord value="1.0"/>
</VarRegionAxis> </VarRegionAxis>
</Region> </Region>
<Region index="1">
<VarRegionAxis index="0">
<StartCoord value="0.0"/>
<PeakCoord value="0.36365"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
<Region index="2">
<VarRegionAxis index="0">
<StartCoord value="0.36365"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
</VarRegionList> </VarRegionList>
<!-- VarDataCount=1 --> <!-- VarDataCount=1 -->
<VarData index="0"> <VarData index="0">

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="3.35"> <ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="4.42">
<GlyphOrder> <GlyphOrder>
<!-- The 'id' attribute is only for humans; it is ignored when parsed. --> <!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
@ -440,28 +440,7 @@
<Format value="1"/> <Format value="1"/>
<VarRegionList> <VarRegionList>
<!-- RegionAxisCount=1 --> <!-- RegionAxisCount=1 -->
<!-- RegionCount=3 --> <!-- RegionCount=0 -->
<Region index="0">
<VarRegionAxis index="0">
<StartCoord value="0.0"/>
<PeakCoord value="0.36365"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
<Region index="1">
<VarRegionAxis index="0">
<StartCoord value="0.36365"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
<Region index="2">
<VarRegionAxis index="0">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
</VarRegionList> </VarRegionList>
<!-- VarDataCount=1 --> <!-- VarDataCount=1 -->
<VarData index="0"> <VarData index="0">

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ttFont sfntVersion="OTTO" ttLibVersion="3.39"> <ttFont sfntVersion="OTTO" ttLibVersion="4.42">
<VVAR> <VVAR>
<Version value="0x00010000"/> <Version value="0x00010000"/>
@ -7,14 +7,7 @@
<Format value="1"/> <Format value="1"/>
<VarRegionList> <VarRegionList>
<!-- RegionAxisCount=1 --> <!-- RegionAxisCount=1 -->
<!-- RegionCount=1 --> <!-- RegionCount=0 -->
<Region index="0">
<VarRegionAxis index="0">
<StartCoord value="0.0"/>
<PeakCoord value="1.0"/>
<EndCoord value="1.0"/>
</VarRegionAxis>
</Region>
</VarRegionList> </VarRegionList>
<!-- VarDataCount=1 --> <!-- VarDataCount=1 -->
<VarData index="0"> <VarData index="0">

View File

@ -94,7 +94,7 @@ def buildAxis(axisTag):
{3: 300}, {3: 300},
], ],
1, 1,
156, 126,
), ),
( (
5, 5,
@ -212,8 +212,8 @@ def test_optimize(numRegions, varData, expectedNumVarData, expectedBytes):
(3, 170), (3, 170),
(4, 175), (4, 175),
(8, 170), (8, 170),
(32, 152), (32, 92),
(64, 146), (64, 56),
], ],
) )
def test_quantize(quantization, expectedBytes): def test_quantize(quantization, expectedBytes):