manpagez: man pages & more
html files: harfbuzz
Home | html | info | man

A clustering example for levels 0 and 1

The guarantees and benefits of level 0 and level 1 can be seen with some examples. First, let us examine what happens with cluster values when shaping involves cluster merging with ligatures and decomposition.

Let's say we start with the following character sequence (top row) and initial cluster values (bottom row):

      A,B,C,D,E
      0,1,2,3,4
    

During shaping, HarfBuzz maps these characters to glyphs from the font. For simplicity, let us assume that each character maps to the corresponding, identical-looking glyph:

      A,B,C,D,E
      0,1,2,3,4
    

Now if, for example, B and C form a ligature, then the clusters to which they belong "merge". This merged cluster takes for its cluster value the minimum of all the cluster values of the clusters that went in to the ligature. In this case, we get:

      A,BC,D,E
      0,1 ,3,4
    

because 1 is the minimum of the set {1,2}, which were the cluster values of B and C.

Next, let us say that the BC ligature glyph decomposes into three components, and D also decomposes into two components. These components each inherit the cluster value of their parent:

      A,BC0,BC1,BC2,D0,D1,E
      0,1  ,1  ,1  ,3 ,3 ,4
    

Next, if BC2 and D0 form a ligature, then their clusters (cluster values 1 and 3) merge into min(1,3) = 1:

      A,BC0,BC1,BC2D0,D1,E
      0,1  ,1  ,1    ,1 ,4
    

At this point, cluster 1 means: the character sequence BCD is represented by glyphs BC0,BC1,BC2D0,D1 and cannot be broken down any further.

© manpagez.com 2000-2025
Individual documents may contain additional copyright information.