@@ -30,8 +30,9 @@ express a desired segmentation of the original font using unicode code points. T
3030this document describes a procedure for converting a desired unicode code point segmentation into a
3131set of glyph patches with load conditions described in terms of those provided unicode segments.
3232
33- Notably, this document does not aim to describe a solution to producing the unicode code point segmentation
34- which is of high importance to the production of performant overall glyph segmentations.
33+ Notably, this document does not aim to describe a solution to producing the unicode code point
34+ segmentation which is of high importance to the production of performant overall glyph
35+ segmentations.
3536
3637The code that implements the procedures in this document can be found in
3738[ closure_glyph_segmenter.cc] ( ../ift/encoder/closure_glyph_segmenter.cc )
@@ -62,9 +63,12 @@ remaining areas for development in this particular approach:
6263 are commonly used together. This document and the implementation make no attempt to solve this
6364 problem yet.
6465
65- * Patch merging: a very basic patch merging process has been included in the implementation but
66- there is lots of room for improvement. Notably, it does not yet handle conditional patch merging.
67- Additionally, a more advanced heuristic is needed for selecting which patches to merge.
66+ * Patch merging: is the process of combining patches from a found segmentation together in order to
67+ reduce overall overhead (eg. if there was a patch containing only one glyph the overhead cost of
68+ the patch format and network transfer would dominate, therefore it may make sense to merge into
69+ another similar patch). A very basic patch merging process has been included in the implementation
70+ but there is lots of room for improvement. Notably, it does not yet handle conditional patch
71+ merging. Additionally, a more advanced heuristic is needed for selecting which patches to merge.
6872
6973* [ Multi segment analysis] ( #multi-segment-dependencies ) : the current implementation only does single
7074 segment analysis which in some cases leaves sizable fallback glyph sets. How to implement multi
@@ -206,6 +210,14 @@ Next, we can use the per glyph information to form the glyph groupings:
2062104 . Lastly, collect the set of glyphs that are not part of any patch formed in steps 1 through 3. These form a fallback patch
207211 whose activation condition is $\bigvee_ {1}^{n} s_j$.
208212
213+ ## Fallback Patch
214+
215+ An output of the segmentation process above will include a fallback patch which is activated on the
216+ presence of any input segment. In practice it will be slightly more efficient to instead move all of
217+ the glyphs in the fallback patch into the initial font. This has the same overall effect as using a
218+ fallback patch. In some cases the encoder may be purposely trying to minimize and/or eliminate glyph
219+ data in the initial font. In these cases leaving them in the fallback patch may make the most sense.
220+
209221## Merging
210222
211223In some cases the patch set produced above may result in some patches that contain a small number of
@@ -217,7 +229,7 @@ There are two types of patches that can be merged: exclusive and conditional. Th
217229merging is dependent on the type. The next two sections provide some guidelines for merging the two
218230types together.
219231
220- ### Merging Exclusive Patches
232+ ### Merging Input Segments
221233
222234This section outlines a procedure to find and merge input code point segments in order to increase
223235the sizes of one or more exclusive patches. It searches for other input segments that interact with
@@ -280,10 +292,10 @@ the activation condition.
280292There are also two other options for merging conditional patches, though these are generally less
281293preferable than the merging procedure described above:
282294
283- 1 . Move the patch's glyphs into the initial font or merge with the fallback patch. This removes the patch at
284- the cost of always loading the glyph's data. This may be useful when there is a very small patch
285- with a wide activation condition. In this case it may not be desirable to merge with other larger
286- conditional patches due to excessive widening of their activation conditions.
295+ 1 . Move the patch's glyphs into the initial font or merge with the fallback patch. This removes the
296+ patch at the cost of always loading the glyph's data. This may be useful when there is a very
297+ small patch with a wide activation condition. In this case it may not be desirable to merge with
298+ other larger conditional patches due to excessive widening of their activation conditions.
287299
2883002 . Duplicate the patch's glyphs into the segments that make up the patch's condition. This
289301 eliminates the patch at the cost of duplicating glyph data. It may be useful in cases of small
0 commit comments