Skip to content

Conversation

@garretrieger
Copy link
Contributor

@garretrieger garretrieger commented Nov 7, 2025

The merger prunes patch pairs from evaluation by looking at a "best case" cost reduction. During this calculation the size of the merged patch is estimated using the size of the individual patches being merged. The following forumula is used:

merged_size =
  largest_individual_patch_size +
  best_case_size_reduction_fraction * sum of remaining patch sizes

Setting best_case_size_reduction_fraction to 0 gives the previous behaviour, larger values cause more aggressive pruning, at the cost of possibly underestimating the true best case for a pair, and over pruning pairs that may have actually been viable.

Also adds a flag that when enabled has the merger record a histogram of encountered size reductions. This was used on a few example fonts to inform the default value of 0.50. In testing the default value gives a significant speedup, while having neglible impact on the total cost of produced segmentations.

The merger prunes patch pairs from evaluation by looking at a "best case" cost reduction. During
this calculation the size of the merged patch is estimated using the size of the individual patches
being merged. The following forumula is used:

merged_size =
  largest_individual_patch_size +
  best_case_size_reduction_fraction * sum of remaining patch sizes

Setting best_case_size_reduction_fraction to 0 gives the previous behaviour, larger values cause
more aggressive pruning, at the cost of possibly underestimating the true best case for a pair,
and over pruning pairs that may have actually been viable.

Also adds a flag that when enabled has the merger record a histogram of encountered size reductions.
This was used on a few example fonts to inform the default value of 0.50. In testing the default value gives
a significant speedup, while having neglible impact on the total cost of produced segmentations.
@garretrieger garretrieger merged commit 75c7161 into w3c:main Nov 8, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant