Linux evo.fastest-server.com 5.14.0-284.1101.el9.tuxcare.11.els11.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Aug 14 13:30:35 UTC 2026 x86_64
LiteSpeed
Server IP : 103.249.112.113 & Your IP : 216.73.217.135
Domains : 988 Domain
User : tanishks
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
gtk-doc /
html /
harfbuzz /
Delete
Unzip
Name
Size
Permission
Date
Action
HarfBuzz.png
6.11
KB
-rw-r--r--
2020-12-27 00:11
HarfBuzz.svg
6.59
KB
-rw-r--r--
2020-12-27 00:11
a-clustering-example-for-levels-0-and-1.html
5.18
KB
-rw-r--r--
2024-04-02 17:02
aat-shaping.html
2.3
KB
-rw-r--r--
2024-04-02 17:02
adding-text-to-the-buffer.html
5.66
KB
-rw-r--r--
2024-04-02 17:02
annotation-glossary.html
5.51
KB
-rw-r--r--
2024-04-02 17:02
api-index-0-9-10.html
3.13
KB
-rw-r--r--
2024-04-02 17:02
api-index-0-9-11.html
2.02
KB
-rw-r--r--
2024-04-02 17:02
api-index-0-9-2.html
43.41
KB
-rw-r--r--
2024-04-02 17:02
api-index-0-9-20.html
2.25
KB
-rw-r--r--
2024-04-02 17:02
api-index-0-9-22.html
2.07
KB
-rw-r--r--
2024-04-02 17:02
api-index-0-9-28.html
2.01
KB
-rw-r--r--
2024-04-02 17:02
api-index-0-9-30.html
2.47
KB
-rw-r--r--
2024-04-02 17:02
api-index-0-9-31.html
2.86
KB
-rw-r--r--
2024-04-02 17:02
api-index-0-9-38.html
3.73
KB
-rw-r--r--
2024-04-02 17:02
api-index-0-9-39.html
2.01
KB
-rw-r--r--
2024-04-02 17:02
api-index-0-9-41.html
2.02
KB
-rw-r--r--
2024-04-02 17:02
api-index-0-9-42.html
2.53
KB
-rw-r--r--
2024-04-02 17:02
api-index-0-9-5.html
3.26
KB
-rw-r--r--
2024-04-02 17:02
api-index-0-9-7.html
12.02
KB
-rw-r--r--
2024-04-02 17:02
api-index-0-9-8.html
2.04
KB
-rw-r--r--
2024-04-02 17:02
api-index-1-0-5.html
2.67
KB
-rw-r--r--
2024-04-02 17:02
api-index-1-1-2.html
2.32
KB
-rw-r--r--
2024-04-02 17:02
api-index-1-1-3.html
2.89
KB
-rw-r--r--
2024-04-02 17:02
api-index-1-2-3.html
2.8
KB
-rw-r--r--
2024-04-02 17:02
api-index-1-3-3.html
5.41
KB
-rw-r--r--
2024-04-02 17:02
api-index-1-4-0.html
2.29
KB
-rw-r--r--
2024-04-02 17:02
api-index-1-4-2.html
5.24
KB
-rw-r--r--
2024-04-02 17:02
api-index-1-4-3.html
1.98
KB
-rw-r--r--
2024-04-02 17:02
api-index-1-5-0.html
2.83
KB
-rw-r--r--
2024-04-02 17:02
api-index-1-6-0.html
2.21
KB
-rw-r--r--
2024-04-02 17:02
api-index-1-7-5.html
1.66
KB
-rw-r--r--
2024-04-02 17:02
api-index-1-7-7.html
5.42
KB
-rw-r--r--
2024-04-02 17:02
api-index-1-8-0.html
2.6
KB
-rw-r--r--
2024-04-02 17:02
api-index-1-8-1.html
2.43
KB
-rw-r--r--
2024-04-02 17:02
api-index-1-8-5.html
2.04
KB
-rw-r--r--
2024-04-02 17:02
api-index-1-8-6.html
3.11
KB
-rw-r--r--
2024-04-02 17:02
api-index-1-9-0.html
3.38
KB
-rw-r--r--
2024-04-02 17:02
api-index-2-0-0.html
5.79
KB
-rw-r--r--
2024-04-02 17:02
api-index-2-1-0.html
7.88
KB
-rw-r--r--
2024-04-02 17:02
api-index-2-2-0.html
5.2
KB
-rw-r--r--
2024-04-02 17:02
api-index-2-3-0.html
2.59
KB
-rw-r--r--
2024-04-02 17:02
api-index-2-4-0.html
2.04
KB
-rw-r--r--
2024-04-02 17:02
api-index-2-5-0.html
2.06
KB
-rw-r--r--
2024-04-02 17:02
api-index-2-6-0.html
5.12
KB
-rw-r--r--
2024-04-02 17:02
api-index-2-7-3.html
2.76
KB
-rw-r--r--
2024-04-02 17:02
api-index-full.html
137.05
KB
-rw-r--r--
2024-04-02 17:02
buffers-language-script-and-direction.html
4.83
KB
-rw-r--r--
2024-04-02 17:02
building.html
14.99
KB
-rw-r--r--
2024-04-02 17:02
ch01s03.html
4.39
KB
-rw-r--r--
2024-04-02 17:02
ch03s02.html
5.94
KB
-rw-r--r--
2024-04-02 17:02
ch03s03.html
4.47
KB
-rw-r--r--
2024-04-02 17:02
ch12.html
3.47
KB
-rw-r--r--
2024-04-02 17:02
ch13.html
3.01
KB
-rw-r--r--
2024-04-02 17:02
ch14.html
1.83
KB
-rw-r--r--
2024-04-02 17:02
ch15.html
2.97
KB
-rw-r--r--
2024-04-02 17:02
clusters.html
6.35
KB
-rw-r--r--
2024-04-02 17:02
complex-scripts.html
2.93
KB
-rw-r--r--
2024-04-02 17:02
customizing-unicode-functions.html
6.25
KB
-rw-r--r--
2024-04-02 17:02
deprecated-api-index.html
6.08
KB
-rw-r--r--
2024-04-02 17:02
fonts-and-faces-custom-functions.html
7.22
KB
-rw-r--r--
2024-04-02 17:02
fonts-and-faces-native-opentype.html
5.07
KB
-rw-r--r--
2024-04-02 17:02
fonts-and-faces-variable.html
5.18
KB
-rw-r--r--
2024-04-02 17:02
fonts-and-faces.html
7.49
KB
-rw-r--r--
2024-04-02 17:02
getting-started.html
4.92
KB
-rw-r--r--
2024-04-02 17:02
graphite-shaping.html
2.25
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-aat-layout.html
136.08
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-blob.html
35.06
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-buffer.html
190.91
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-common.html
63.79
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-coretext.html
11.1
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-deprecated.html
24.73
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-directwrite.html
6.01
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-face.html
50.88
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-font.html
256.54
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-ft.html
28.05
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-gdi.html
4.21
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-glib.html
9.85
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-gobject.html
2.88
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-graphite2.html
5.69
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-icu.html
7.78
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-map.html
28.5
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-ot-color.html
39.01
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-ot-font.html
4.52
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-ot-layout.html
141.69
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-ot-math.html
51.65
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-ot-meta.html
10.04
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-ot-metrics.html
17.51
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-ot-name.html
19.14
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-ot-shape.html
6.11
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-ot-var.html
35.85
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-set.html
58.03
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-shape-plan.html
37.51
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-shape.html
11.43
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-unicode.html
104.2
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-uniscribe.html
5.96
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz-hb-version.html
10.17
KB
-rw-r--r--
2024-04-02 17:02
harfbuzz.devhelp2
175.25
KB
-rw-r--r--
2020-12-27 00:11
home.png
169
B
-rw-r--r--
2020-12-27 00:11
index.html
19.11
KB
-rw-r--r--
2024-04-02 17:02
install-harfbuzz.html
3.7
KB
-rw-r--r--
2024-04-02 17:02
integration-coretext.html
6.33
KB
-rw-r--r--
2024-04-02 17:02
integration-freetype.html
9.08
KB
-rw-r--r--
2024-04-02 17:02
integration-icu.html
4.09
KB
-rw-r--r--
2024-04-02 17:02
integration-python.html
3.11
KB
-rw-r--r--
2024-04-02 17:02
integration-uniscribe.html
6.57
KB
-rw-r--r--
2024-04-02 17:02
integration.html
9.7
KB
-rw-r--r--
2024-04-02 17:02
left-insensitive.png
334
B
-rw-r--r--
2020-12-27 00:11
left.png
185
B
-rw-r--r--
2020-12-27 00:11
level-2.html
6.84
KB
-rw-r--r--
2024-04-02 17:02
object-model-blobs.html
2.83
KB
-rw-r--r--
2024-04-02 17:02
object-model-lifecycle.html
4.86
KB
-rw-r--r--
2024-04-02 17:02
object-model-object-types.html
4.01
KB
-rw-r--r--
2024-04-02 17:02
object-model-user-data.html
3.18
KB
-rw-r--r--
2024-04-02 17:02
object-model.html
3.88
KB
-rw-r--r--
2024-04-02 17:02
opentype-shaping-models.html
4.36
KB
-rw-r--r--
2024-04-02 17:02
pt01.html
9.2
KB
-rw-r--r--
2024-04-02 17:02
pt02.html
12.38
KB
-rw-r--r--
2024-04-02 17:02
reordering-in-levels-0-and-1.html
3.03
KB
-rw-r--r--
2024-04-02 17:02
right-insensitive.png
233
B
-rw-r--r--
2020-12-27 00:11
right.png
184
B
-rw-r--r--
2020-12-27 00:11
setting-buffer-properties.html
7.65
KB
-rw-r--r--
2024-04-02 17:02
shaping-and-shape-plans.html
8
KB
-rw-r--r--
2024-04-02 17:02
shaping-concepts.html
3.78
KB
-rw-r--r--
2024-04-02 17:02
shaping-opentype-features.html
6.51
KB
-rw-r--r--
2024-04-02 17:02
shaping-operations.html
4.43
KB
-rw-r--r--
2024-04-02 17:02
shaping-plans-and-caching.html
4.53
KB
-rw-r--r--
2024-04-02 17:02
shaping-shaper-selection.html
3.33
KB
-rw-r--r--
2024-04-02 17:02
style.css
11.33
KB
-rw-r--r--
2020-12-27 00:11
text-runs.html
2.47
KB
-rw-r--r--
2024-04-02 17:02
the-distinction-between-levels-0-and-1.html
4.75
KB
-rw-r--r--
2024-04-02 17:02
unicode-character-categories.html
4.11
KB
-rw-r--r--
2024-04-02 17:02
up-insensitive.png
288
B
-rw-r--r--
2020-12-27 00:11
up.png
186
B
-rw-r--r--
2020-12-27 00:11
utilities-common-types-apis.html
4.26
KB
-rw-r--r--
2024-04-02 17:02
utilities-ucdn.html
2.57
KB
-rw-r--r--
2024-04-02 17:02
utilities.html
9.06
KB
-rw-r--r--
2024-04-02 17:02
what-harfbuzz-doesnt-do.html
5.41
KB
-rw-r--r--
2024-04-02 17:02
what-is-harfbuzz.html
5.37
KB
-rw-r--r--
2024-04-02 17:02
why-do-i-need-a-shaping-engine.html
7.93
KB
-rw-r--r--
2024-04-02 17:02
why-is-it-called-harfbuzz.html
2.12
KB
-rw-r--r--
2024-04-02 17:02
working-with-harfbuzz-clusters.html
9.85
KB
-rw-r--r--
2024-04-02 17:02
Save
Rename
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Shaping and shape plans: HarfBuzz Manual</title> <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> <link rel="home" href="index.html" title="HarfBuzz Manual"> <link rel="up" href="pt01.html" title="Part I. User's manual"> <link rel="prev" href="fonts-and-faces-variable.html" title="Working with OpenType Variable Fonts"> <link rel="next" href="shaping-opentype-features.html" title="OpenType features"> <meta name="generator" content="GTK-Doc V1.32 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle"> <td width="100%" align="left" class="shortcuts"></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> <td><a accesskey="u" href="pt01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td> <td><a accesskey="p" href="fonts-and-faces-variable.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> <td><a accesskey="n" href="shaping-opentype-features.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> </tr></table> <div class="chapter"> <div class="titlepage"><div><div><h2 class="title"> <a name="shaping-and-shape-plans"></a>Shaping and shape plans</h2></div></div></div> <div class="toc"><dl class="toc"> <dt><span class="section"><a href="shaping-and-shape-plans.html#shaping-buffer-output">Shaping and buffer output</a></span></dt> <dt><span class="section"><a href="shaping-opentype-features.html">OpenType features</a></span></dt> <dt><span class="section"><a href="shaping-shaper-selection.html">Shaper selection</a></span></dt> <dt><span class="section"><a href="shaping-plans-and-caching.html">Plans and caching</a></span></dt> </dl></div> <p> Once you have your face and font objects configured as desired and your input buffer is filled with the characters you need to shape, all you need to do is call <code class="function">hb_shape()</code>. </p> <p> HarfBuzz will return the shaped version of the text in the same buffer that you provided, but it will be in output mode. At that point, you can iterate through the glyphs in the buffer, drawing each one at the specified position or handing them off to the appropriate graphics library. </p> <p> For the most part, HarfBuzz's shaping step is straightforward from the outside. But that doesn't mean there will never be cases where you want to look under the hood and see what is happening on the inside. HarfBuzz provides facilities for doing that, too. </p> <div class="section"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> <a name="shaping-buffer-output"></a>Shaping and buffer output</h2></div></div></div> <p> The <code class="function">hb_shape()</code> function call takes four arguments: the font object to use, the buffer of characters to shape, an array of user-specified features to apply, and the length of that feature array. The feature array can be NULL, so for the sake of simplicity we will start with that case. </p> <p> Internally, HarfBuzz looks at the tables of the font file to determine where glyph classes, substitutions, and positioning are defined, using that information to decide which <span class="emphasis"><em>shaper</em></span> to use (<code class="literal">ot</code> for OpenType fonts, <code class="literal">aat</code> for Apple Advanced Typography fonts, and so on). It also looks at the direction, script, and language properties of the segment to figure out which script-specific shaping model is needed (at least, in shapers that support multiple options). </p> <p> If a font has a GDEF table, then that is used for glyph classes; if not, HarfBuzz will fall back to Unicode categorization by code point. If a font has an AAT <code class="literal">morx</code> table, then it is used for substitutions; if not, but there is a GSUB table, then the GSUB table is used. If the font has an AAT <code class="literal">kerx</code> table, then it is used for positioning; if not, but there is a GPOS table, then the GPOS table is used. If neither table is found, but there is a <code class="literal">kern</code> table, then HarfBuzz will use the <code class="literal">kern</code> table. If there is no <code class="literal">kerx</code>, no GPOS, and no <code class="literal">kern</code>, HarfBuzz will fall back to positioning marks itself. </p> <p> With a well-behaved OpenType font, you expect GDEF, GSUB, and GPOS tables to all be applied. HarfBuzz implements the script-specific shaping models in internal functions, rather than in the public API. </p> <p> The algorithms used for complex scripts can be quite involved; HarfBuzz tries to be compatible with the OpenType Layout specification and, wherever there is any ambiguity, HarfBuzz attempts to replicate the output of Microsoft's Uniscribe engine. See the <a class="ulink" href="https://docs.microsoft.com/en-us/typography/script-development/standard" target="_top">Microsoft Typography pages</a> for more detail. </p> <p> In general, though, all that you need to know is that <code class="function">hb_shape()</code> returns the results of shaping in the same buffer that you provided. The buffer's content type will now be set to <code class="literal">HB_BUFFER_CONTENT_TYPE_GLYPHS</code>, indicating that it contains shaped output, rather than input text. You can now extract the glyph information and positioning arrays: </p> <pre class="programlisting"> hb_glyph_info_t *glyph_info = hb_buffer_get_glyph_infos(buf, &glyph_count); hb_glyph_position_t *glyph_pos = hb_buffer_get_glyph_positions(buf, &glyph_count); </pre> <p> The glyph information array holds a <span class="type">hb_glyph_info_t</span> for each output glyph, which has two fields: <em class="parameter"><code>codepoint</code></em> and <em class="parameter"><code>cluster</code></em>. Whereas, in the input buffer, the <em class="parameter"><code>codepoint</code></em> field contained the Unicode code point, it now contains the glyph ID of the corresponding glyph in the font. The <em class="parameter"><code>cluster</code></em> field is an integer that you can use to help identify when shaping has reordered, split, or combined code points; we will say more about that in the next chapter. </p> <p> The glyph positions array holds a corresponding <span class="type">hb_glyph_position_t</span> for each output glyph, containing four fields: <em class="parameter"><code>x_advance</code></em>, <em class="parameter"><code>y_advance</code></em>, <em class="parameter"><code>x_offset</code></em>, and <em class="parameter"><code>y_offset</code></em>. The advances tell you how far you need to move the drawing point after drawing this glyph, depending on whether you are setting horizontal text (in which case you will have x advances) or vertical text (for which you will have y advances). The x and y offsets tell you where to move to start drawing the glyph; usually you will have both and x and a y offset, regardless of the text direction. </p> <p> Most of the time, you will rely on a font-rendering library or other graphics library to do the actual drawing of glyphs, so you will need to iterate through the glyphs in the buffer and pass the corresponding values off. </p> </div> </div> <div class="footer"> <hr>Generated by GTK-Doc V1.32</div> </body> </html>