Blame docs/html/clusters.html

Packit Service 5bcba8
Packit Service 5bcba8
<html>
Packit Service 5bcba8
<head>
Packit Service 5bcba8
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Packit Service 5bcba8
<title>: HarfBuzz Manual</title>
Packit Service 5bcba8
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
Packit Service 5bcba8
<link rel="home" href="index.html" title="HarfBuzz Manual">
Packit Service 5bcba8
<link rel="up" href="pt01.html" title="Part I. User's manual">
Packit Service 5bcba8
<link rel="prev" href="using-your-own-font-functions.html" title="Using your own font functions">
Packit Service 5bcba8
<link rel="next" href="a-clustering-example-for-levels-0-and-1.html" title="A clustering example for levels 0 and 1">
Packit Service 5bcba8
<meta name="generator" content="GTK-Doc V1.25.1 (XML mode)">
Packit Service 5bcba8
<link rel="stylesheet" href="style.css" type="text/css">
Packit Service 5bcba8
</head>
Packit Service 5bcba8
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
Packit Service 5bcba8
Packit Service 5bcba8
Packit Service 5bcba8
Home
Packit Service 5bcba8
Up
Packit Service 5bcba8
Prev
Packit Service 5bcba8
Next
Packit Service 5bcba8
Packit Service 5bcba8
Packit Service 5bcba8
Packit Service 5bcba8
Packit Service 5bcba8
Clusters
Packit Service 5bcba8
A clustering example for levels 0 and 1
Packit Service 5bcba8
Reordering in levels 0 and 1
Packit Service 5bcba8
The distinction between levels 0 and 1
Packit Service 5bcba8
Level 2
Packit Service 5bcba8
Packit Service 5bcba8
Ligatures with combining marks
Packit Service 5bcba8
Reordering
Packit Service 5bcba8
Packit Service 5bcba8
Packit Service 5bcba8
Packit Service 5bcba8

Packit Service 5bcba8
Clusters
Packit Service 5bcba8

Packit Service 5bcba8
    In shaping text, a cluster is a sequence of
Packit Service 5bcba8
    code points that needs to be treated as a single, indivisible unit.
Packit Service 5bcba8
  

Packit Service 5bcba8

Packit Service 5bcba8
    When you add text to a HB buffer, each character is associated with
Packit Service 5bcba8
    a cluster value. This is an arbitrary number as
Packit Service 5bcba8
    far as HB is concerned.
Packit Service 5bcba8
  

Packit Service 5bcba8

Packit Service 5bcba8
    Most clients will use UTF-8, UTF-16, or UTF-32 indices, but the
Packit Service 5bcba8
    actual number does not matter. Moreover, it is not required for the
Packit Service 5bcba8
    cluster values to be monotonically increasing, but pretty much all
Packit Service 5bcba8
    of HB's tests are performed on monotonically increasing cluster
Packit Service 5bcba8
    numbers. Nevertheless, there is no such assumption in the code
Packit Service 5bcba8
    itself. With that in mind, let's examine what happens with cluster
Packit Service 5bcba8
    values during shaping under each cluster-level.
Packit Service 5bcba8
  

Packit Service 5bcba8

Packit Service 5bcba8
    HarfBuzz provides three levels of clustering
Packit Service 5bcba8
    support. Level 0 is the default behavior and reproduces the behavior
Packit Service 5bcba8
    of the old HarfBuzz library. Level 1 tweaks this behavior slightly
Packit Service 5bcba8
    to produce better results, so level 1 clustering is recommended for
Packit Service 5bcba8
    code that is not required to implement backward compatibility with
Packit Service 5bcba8
    the old HarfBuzz.
Packit Service 5bcba8
  

Packit Service 5bcba8

Packit Service 5bcba8
    Level 2 differs significantly in how it treats cluster values.
Packit Service 5bcba8
    Levels 0 and 1 both process ligatures and glyph decomposition by
Packit Service 5bcba8
    merging clusters; level 2 does not.
Packit Service 5bcba8
  

Packit Service 5bcba8

Packit Service 5bcba8
    The conceptual model for what the cluster values mean, in levels 0
Packit Service 5bcba8
    and 1, is this:
Packit Service 5bcba8
  

Packit Service 5bcba8
    Packit Service 5bcba8
  • Packit Service 5bcba8
            the sequence of cluster values will always remain monotone
    Packit Service 5bcba8
          

    Packit Service 5bcba8
  • Packit Service 5bcba8
            each value represents a single cluster
    Packit Service 5bcba8
          

    Packit Service 5bcba8
  • Packit Service 5bcba8
            each cluster contains one or more glyphs and one or more
    Packit Service 5bcba8
            characters
    Packit Service 5bcba8
          

    Packit Service 5bcba8
    Packit Service 5bcba8

    Packit Service 5bcba8
        Assuming that initial cluster numbers were monotonically increasing
    Packit Service 5bcba8
        and distinct, then all adjacent glyphs having the same cluster
    Packit Service 5bcba8
        number belong to the same cluster, and all characters belong to the
    Packit Service 5bcba8
        cluster that has the highest number not larger than their initial
    Packit Service 5bcba8
        cluster number. This will become clearer with an example.
    Packit Service 5bcba8
      

    Packit Service 5bcba8
    Packit Service 5bcba8
    Packit Service 5bcba8
    Packit Service 5bcba8

    Generated by GTK-Doc V1.25.1
    Packit Service 5bcba8
    </body>
    Packit Service 5bcba8
    </html>