1- # Generating Glyph Keyed Segmentations during IFT Encoding using Subsetter Glyph Closure
1+ # Converting Unicode Code Point to Glyph Keyed Segmentations during IFT Encoding using Subsetter Glyph Closure
22
33Author: Garret Rieger
44Date: Jan 27, 2025
@@ -25,15 +25,19 @@ both an f and i character it will load both patches, however this makes it possi
2525to be used. Thus we need to make the fi glyph available in this case. One way to do that is to
2626form a third patch containing the ligature glyph and assign the activation condition (f and i).
2727
28- The remainder of this document describes a potential procedure for analyzing a font to determine how
29- to split glyphs across a set of patches and what activation conditions should be assigned to each of
30- those patches.
28+ Because the IFT font will use unicode code points in the activation conditions, it will be typical to
29+ express a desired segmentation of the original font using unicode code points. The remainder of
30+ this document describes a procedure for converting a desired unicode code point segmentation into a
31+ set of glyph patches with load conditions described in terms of those provided unicode segments.
32+
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.
3135
3236The code that implements the procedures in this document can be found in
33- [ glyph_segmentation .cc] ( ../ift/encoder/glyph_segmentation .cc )
37+ [ closure_glyph_segmenter .cc] ( ../ift/encoder/closure_glyph_segmenter .cc )
3438
3539There is also a command line utility to generate segmentations:
36- [ util/glyph_keyed_segmenter ] ( ../util/glyph_keyed_segmenter .cc )
40+ [ util/closure_glyph_keyed_segmenter_util ] ( ../util/closure_glyph_keyed_segmenter_util .cc )
3741
3842At the end of this document you can find a couple of [ examples] ( #examples ) which illustrate how the
3943procedures work in practice.
@@ -42,13 +46,13 @@ procedures work in practice.
4246
4347Development of a robust glyph segmentation process that produces performant, low over head
4448segmentations is an area of active development in the ift encoder. The current prototype
45- implementation in [ glyph_segmentation .cc] ( ../ift/encoder/glyph_segmentation .cc ) can produce
49+ implementation in [ closure_glyph_segmenter .cc] ( ../ift/encoder/closure_glyph_segmenter .cc ) can produce
4650segmentations that satisfy the closure requirement, but does not yet necessarily produce ones that
4751are performant.
4852
4953The approach laid out in this document is just one possible approach to solving the problem. This
5054document aims primarily to describe how the prototype implementation in
51- [ glyph_segmentation .cc] ( ../ift/encoder/glyph_segmentation .cc ) functions, and is not intended to
55+ [ closure_glyph_segmenter .cc] ( ../ift/encoder/closure_glyph_segmenter .cc ) functions, and is not intended to
5256present a the final (or only) solution to the problem. There are several unsolved problems and
5357remaining areas for development in this particular approach:
5458
@@ -82,7 +86,7 @@ The segmentation procedure described in this document aims to achieve the follow
8286
8387* Determine the activation conditions for each of those patches. An activation condition is a boolean
8488 expression using conjunction and disjunction with the presence of Unicode code points being the boolean
85- values.
89+ values. The input unicode code point segmentations are used to form the conditions.
8690
8791* Optimize for minimal data transfer by avoiding duplicating glyphs across patches where possible.
8892
0 commit comments