✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ server.blackpussy.asia ​🇻​♯➤ 5.14.0-611.20.1.el9_7.x86_64 #1 SMP 🇾​♯➤ 2026

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 163.245.207.76 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.243
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗞 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ mail,mb_send_mail
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /usr/share/gtk-doc/html/harfbuzz//setting-buffer-properties.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Setting buffer properties: 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="buffers-language-script-and-direction.html" title="Buffers, language, script and direction">
<link rel="prev" href="adding-text-to-the-buffer.html" title="Adding text to the buffer">
<link rel="next" href="customizing-unicode-functions.html" title="Customizing Unicode functions">
<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="buffers-language-script-and-direction.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="adding-text-to-the-buffer.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="customizing-unicode-functions.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="setting-buffer-properties"></a>Setting buffer properties</h2></div></div></div>
<p>
      Buffers containing input characters still need several
      properties set before HarfBuzz can shape their text correctly.
    </p>
<p>
      Initially, all buffers are set to the
      <code class="literal">HB_BUFFER_CONTENT_TYPE_INVALID</code> content
      type. After adding text, the buffer should be set to
      <code class="literal">HB_BUFFER_CONTENT_TYPE_UNICODE</code> instead, which
      indicates that it contains un-shaped input
      characters. After shaping, the buffer will have the
      <code class="literal">HB_BUFFER_CONTENT_TYPE_GLYPHS</code> content type.
    </p>
<p>
      <code class="function">hb_buffer_add_utf8()</code> and the
      other UTF functions set the content type of their buffer
      automatically. But if you are reusing a buffer you may want to
      check its state with
      <code class="function">hb_buffer_get_content_type(buffer)</code>. If
      necessary you can set the content type with
    </p>
<pre class="programlisting">
      hb_buffer_set_content_type(buf, HB_BUFFER_CONTENT_TYPE_UNICODE);
    </pre>
<p>
      to prepare for shaping.
    </p>
<p>
      Buffers also need to carry information about the script,
      language, and text direction of their contents. You can set
      these properties individually:
    </p>
<pre class="programlisting">
      hb_buffer_set_direction(buf, HB_DIRECTION_LTR);
      hb_buffer_set_script(buf, HB_SCRIPT_LATIN);
      hb_buffer_set_language(buf, hb_language_from_string("en", -1));
    </pre>
<p>
      However, since these properties are often repeated for
      multiple text runs, you can also save them in a
      <code class="literal">hb_segment_properties_t</code> for reuse:
    </p>
<pre class="programlisting">
      hb_segment_properties_t *savedprops;
      hb_buffer_get_segment_properties (buf, savedprops);
      ...
      hb_buffer_set_segment_properties (buf2, savedprops);
    </pre>
<p>
      HarfBuzz also provides getter functions to retrieve a buffer's
      direction, script, and language properties individually.
    </p>
<p>
      HarfBuzz recognizes four text directions in
      <span class="type">hb_direction_t</span>: left-to-right
      (<code class="literal">HB_DIRECTION_LTR</code>), right-to-left (<code class="literal">HB_DIRECTION_RTL</code>),
      top-to-bottom (<code class="literal">HB_DIRECTION_TTB</code>), and
      bottom-to-top (<code class="literal">HB_DIRECTION_BTT</code>).  For the
      script property, HarfBuzz uses identifiers based on the
      <a class="ulink" href="https://unicode.org/iso15924/" target="_top">ISO 15924
      standard</a>. For languages, HarfBuzz uses tags based on the
      <a class="ulink" href="https://tools.ietf.org/html/bcp47" target="_top">IETF BCP 47</a> standard.
    </p>
<p>
      Helper functions are provided to convert character strings into
      the necessary script and language tag types.
    </p>
<p>
      Two additional buffer properties to be aware of are the
      "invisible glyph" and the replacement code point. The
      replacement code point is inserted into buffer output in place of
      any invalid code points encountered in the input. By default, it
      is the Unicode <code class="literal">REPLACEMENT CHARACTER</code> code
      point, <code class="literal">U+FFFD</code> "�". You can change this with
    </p>
<pre class="programlisting">
      hb_buffer_set_replacement_codepoint(buf, replacement);
    </pre>
<p>
      passing in the replacement Unicode code point as the
      <em class="parameter"><code>replacement</code></em> parameter.
    </p>
<p>
      The invisible glyph is used to replace all output glyphs that
      are invisible. By default, the standard space character
      <code class="literal">U+0020</code> is used; you can replace this (for
      example, when using a font that provides script-specific
      spaces) with 
    </p>
<pre class="programlisting">
      hb_buffer_set_invisible_glyph(buf, replacement_glyph);
    </pre>
<p>
      Do note that in the <em class="parameter"><code>replacement_glyph</code></em>
      parameter, you must provide the glyph ID of the replacement you
      wish to use, not the Unicode code point.
    </p>
<p>
      HarfBuzz supports a few additional flags you might want to set
      on your buffer under certain circumstances. The
      <code class="literal">HB_BUFFER_FLAG_BOT</code> and
      <code class="literal">HB_BUFFER_FLAG_EOT</code> flags tell HarfBuzz
      that the buffer represents the beginning or end (respectively)
      of a text element (such as a paragraph or other block). Knowing
      this allows HarfBuzz to apply certain contextual font features
      when shaping, such as initial or final variants in connected
      scripts.
    </p>
<p>
      <code class="literal">HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES</code>
      tells HarfBuzz not to hide glyphs with the
      <code class="literal">Default_Ignorable</code> property in Unicode. This 
      property designates control characters and other non-printing
      code points, such as joiners and variation selectors. Normally
      HarfBuzz replaces them in the output buffer with zero-width
      space glyphs (using the "invisible glyph" property discussed
      above); setting this flag causes them to be printed, which can
      be helpful for troubleshooting.
    </p>
<p>
      Conversely, setting the
      <code class="literal">HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES</code> flag
      tells HarfBuzz to remove <code class="literal">Default_Ignorable</code>
      glyphs from the output buffer entirely. Finally, setting the
      <code class="literal">HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE</code>
      flag tells HarfBuzz not to insert the dotted-circle glyph
      (<code class="literal">U+25CC</code>, "◌"), which is normally
      inserted into buffer output when broken character sequences are
      encountered (such as combining marks that are not attached to a
      base character).
    </p>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.32</div>
</body>
</html>

Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]

Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
31 Aug 2026 10.12 AM
root / root
0755
HarfBuzz.png
6.107 KB
27 Dec 2020 12.11 AM
root / root
0644
HarfBuzz.svg
6.587 KB
27 Dec 2020 12.11 AM
root / root
0644
a-clustering-example-for-levels-0-and-1.html
5.183 KB
2 Apr 2024 5.02 PM
root / root
0644
aat-shaping.html
2.304 KB
2 Apr 2024 5.02 PM
root / root
0644
adding-text-to-the-buffer.html
5.664 KB
2 Apr 2024 5.02 PM
root / root
0644
annotation-glossary.html
5.512 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-0-9-10.html
3.125 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-0-9-11.html
2.021 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-0-9-2.html
43.405 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-0-9-20.html
2.249 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-0-9-22.html
2.065 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-0-9-28.html
2.014 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-0-9-30.html
2.466 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-0-9-31.html
2.863 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-0-9-38.html
3.732 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-0-9-39.html
2.01 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-0-9-41.html
2.019 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-0-9-42.html
2.526 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-0-9-5.html
3.261 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-0-9-7.html
12.018 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-0-9-8.html
2.039 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-1-0-5.html
2.673 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-1-1-2.html
2.318 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-1-1-3.html
2.888 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-1-2-3.html
2.805 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-1-3-3.html
5.406 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-1-4-0.html
2.292 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-1-4-2.html
5.243 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-1-4-3.html
1.981 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-1-5-0.html
2.832 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-1-6-0.html
2.213 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-1-7-5.html
1.661 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-1-7-7.html
5.42 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-1-8-0.html
2.6 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-1-8-1.html
2.427 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-1-8-5.html
2.039 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-1-8-6.html
3.112 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-1-9-0.html
3.379 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-2-0-0.html
5.787 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-2-1-0.html
7.88 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-2-2-0.html
5.201 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-2-3-0.html
2.588 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-2-4-0.html
2.038 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-2-5-0.html
2.059 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-2-6-0.html
5.117 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-2-7-3.html
2.758 KB
2 Apr 2024 5.02 PM
root / root
0644
api-index-full.html
137.051 KB
2 Apr 2024 5.02 PM
root / root
0644
buffers-language-script-and-direction.html
4.835 KB
2 Apr 2024 5.02 PM
root / root
0644
building.html
14.986 KB
2 Apr 2024 5.02 PM
root / root
0644
ch01s03.html
4.39 KB
2 Apr 2024 5.02 PM
root / root
0644
ch03s02.html
5.936 KB
2 Apr 2024 5.02 PM
root / root
0644
ch03s03.html
4.473 KB
2 Apr 2024 5.02 PM
root / root
0644
ch12.html
3.474 KB
2 Apr 2024 5.02 PM
root / root
0644
ch13.html
3.006 KB
2 Apr 2024 5.02 PM
root / root
0644
ch14.html
1.832 KB
2 Apr 2024 5.02 PM
root / root
0644
ch15.html
2.973 KB
2 Apr 2024 5.02 PM
root / root
0644
clusters.html
6.347 KB
2 Apr 2024 5.02 PM
root / root
0644
complex-scripts.html
2.931 KB
2 Apr 2024 5.02 PM
root / root
0644
customizing-unicode-functions.html
6.25 KB
2 Apr 2024 5.02 PM
root / root
0644
deprecated-api-index.html
6.077 KB
2 Apr 2024 5.02 PM
root / root
0644
fonts-and-faces-custom-functions.html
7.225 KB
2 Apr 2024 5.02 PM
root / root
0644
fonts-and-faces-native-opentype.html
5.074 KB
2 Apr 2024 5.02 PM
root / root
0644
fonts-and-faces-variable.html
5.18 KB
2 Apr 2024 5.02 PM
root / root
0644
fonts-and-faces.html
7.491 KB
2 Apr 2024 5.02 PM
root / root
0644
getting-started.html
4.925 KB
2 Apr 2024 5.02 PM
root / root
0644
graphite-shaping.html
2.254 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-aat-layout.html
136.079 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-blob.html
35.061 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-buffer.html
190.909 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-common.html
63.792 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-coretext.html
11.104 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-deprecated.html
24.734 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-directwrite.html
6.011 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-face.html
50.879 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-font.html
256.539 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-ft.html
28.046 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-gdi.html
4.209 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-glib.html
9.85 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-gobject.html
2.884 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-graphite2.html
5.691 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-icu.html
7.782 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-map.html
28.504 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-ot-color.html
39.013 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-ot-font.html
4.521 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-ot-layout.html
141.688 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-ot-math.html
51.646 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-ot-meta.html
10.045 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-ot-metrics.html
17.507 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-ot-name.html
19.144 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-ot-shape.html
6.11 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-ot-var.html
35.848 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-set.html
58.03 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-shape-plan.html
37.512 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-shape.html
11.428 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-unicode.html
104.2 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-uniscribe.html
5.956 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz-hb-version.html
10.171 KB
2 Apr 2024 5.02 PM
root / root
0644
harfbuzz.devhelp2
175.251 KB
27 Dec 2020 12.11 AM
root / root
0644
home.png
0.165 KB
27 Dec 2020 12.11 AM
root / root
0644
index.html
19.107 KB
2 Apr 2024 5.02 PM
root / root
0644
install-harfbuzz.html
3.698 KB
2 Apr 2024 5.02 PM
root / root
0644
integration-coretext.html
6.331 KB
2 Apr 2024 5.02 PM
root / root
0644
integration-freetype.html
9.075 KB
2 Apr 2024 5.02 PM
root / root
0644
integration-icu.html
4.088 KB
2 Apr 2024 5.02 PM
root / root
0644
integration-python.html
3.106 KB
2 Apr 2024 5.02 PM
root / root
0644
integration-uniscribe.html
6.567 KB
2 Apr 2024 5.02 PM
root / root
0644
integration.html
9.703 KB
2 Apr 2024 5.02 PM
root / root
0644
left-insensitive.png
0.326 KB
27 Dec 2020 12.11 AM
root / root
0644
left.png
0.181 KB
27 Dec 2020 12.11 AM
root / root
0644
level-2.html
6.845 KB
2 Apr 2024 5.02 PM
root / root
0644
object-model-blobs.html
2.834 KB
2 Apr 2024 5.02 PM
root / root
0644
object-model-lifecycle.html
4.861 KB
2 Apr 2024 5.02 PM
root / root
0644
object-model-object-types.html
4.015 KB
2 Apr 2024 5.02 PM
root / root
0644
object-model-user-data.html
3.179 KB
2 Apr 2024 5.02 PM
root / root
0644
object-model.html
3.885 KB
2 Apr 2024 5.02 PM
root / root
0644
opentype-shaping-models.html
4.358 KB
2 Apr 2024 5.02 PM
root / root
0644
pt01.html
9.196 KB
2 Apr 2024 5.02 PM
root / root
0644
pt02.html
12.377 KB
2 Apr 2024 5.02 PM
root / root
0644
reordering-in-levels-0-and-1.html
3.029 KB
2 Apr 2024 5.02 PM
root / root
0644
right-insensitive.png
0.228 KB
27 Dec 2020 12.11 AM
root / root
0644
right.png
0.18 KB
27 Dec 2020 12.11 AM
root / root
0644
setting-buffer-properties.html
7.646 KB
2 Apr 2024 5.02 PM
root / root
0644
shaping-and-shape-plans.html
8.004 KB
2 Apr 2024 5.02 PM
root / root
0644
shaping-concepts.html
3.778 KB
2 Apr 2024 5.02 PM
root / root
0644
shaping-opentype-features.html
6.507 KB
2 Apr 2024 5.02 PM
root / root
0644
shaping-operations.html
4.431 KB
2 Apr 2024 5.02 PM
root / root
0644
shaping-plans-and-caching.html
4.532 KB
2 Apr 2024 5.02 PM
root / root
0644
shaping-shaper-selection.html
3.326 KB
2 Apr 2024 5.02 PM
root / root
0644
style.css
11.334 KB
27 Dec 2020 12.11 AM
root / root
0644
text-runs.html
2.474 KB
2 Apr 2024 5.02 PM
root / root
0644
the-distinction-between-levels-0-and-1.html
4.75 KB
2 Apr 2024 5.02 PM
root / root
0644
unicode-character-categories.html
4.105 KB
2 Apr 2024 5.02 PM
root / root
0644
up-insensitive.png
0.281 KB
27 Dec 2020 12.11 AM
root / root
0644
up.png
0.182 KB
27 Dec 2020 12.11 AM
root / root
0644
utilities-common-types-apis.html
4.263 KB
2 Apr 2024 5.02 PM
root / root
0644
utilities-ucdn.html
2.57 KB
2 Apr 2024 5.02 PM
root / root
0644
utilities.html
9.057 KB
2 Apr 2024 5.02 PM
root / root
0644
what-harfbuzz-doesnt-do.html
5.405 KB
2 Apr 2024 5.02 PM
root / root
0644
what-is-harfbuzz.html
5.374 KB
2 Apr 2024 5.02 PM
root / root
0644
why-do-i-need-a-shaping-engine.html
7.934 KB
2 Apr 2024 5.02 PM
root / root
0644
why-is-it-called-harfbuzz.html
2.12 KB
2 Apr 2024 5.02 PM
root / root
0644
working-with-harfbuzz-clusters.html
9.847 KB
2 Apr 2024 5.02 PM
root / root
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF