Files
UnrealEngine/Engine/Source/ThirdParty/HarfBuzz/harfbuzz-1.2.4/docs/html/buffers-language-script-and-direction.html
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

87 lines
4.3 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Buffers, language, script and direction: HarfBuzz Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.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="hello-harfbuzz.html" title="Hello, Harfbuzz">
<link rel="next" href="adding-text-to-the-buffer.html" title="Adding text to the buffer">
<meta name="generator" content="GTK-Doc V1.24.1 (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="hello-harfbuzz.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="adding-text-to-the-buffer.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="buffers-language-script-and-direction"></a>Buffers, language, script and direction</h2></div></div></div>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="buffers-language-script-and-direction.html#creating-and-destroying-buffers">Creating and destroying buffers</a></span></dt>
<dt><span class="section"><a href="adding-text-to-the-buffer.html">Adding text to the buffer</a></span></dt>
<dt><span class="section"><a href="setting-buffer-properties.html">Setting buffer properties</a></span></dt>
<dt><span class="section"><a href="what-about-the-other-scripts.html">What about the other scripts?</a></span></dt>
<dt><span class="section"><a href="customizing-unicode-functions.html">Customizing Unicode functions</a></span></dt>
</dl></div>
<p>
The input to Harfbuzz is a series of Unicode characters, stored in a
buffer. In this chapter, we'll look at how to set up a buffer with
the text that we want and then customize the properties of the
buffer.
</p>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="creating-and-destroying-buffers"></a>Creating and destroying buffers</h2></div></div></div>
<p>
As we saw in our initial example, a buffer is created and
initialized with <code class="literal">hb_buffer_create()</code>. This
produces a new, empty buffer object, instantiated with some
default values and ready to accept your Unicode strings.
</p>
<p>
Harfbuzz manages the memory of objects that it creates (such as
buffers), so you don't have to. When you have finished working on
a buffer, you can call <code class="literal">hb_buffer_destroy()</code>:
</p>
<pre class="programlisting">
hb_buffer_t *buffer = hb_buffer_create();
...
hb_buffer_destroy(buffer);
</pre>
<p>
This will destroy the object and free its associated memory -
unless some other part of the program holds a reference to this
buffer. If you acquire a Harfbuzz buffer from another subsystem
and want to ensure that it is not garbage collected by someone
else destroying it, you should increase its reference count:
</p>
<pre class="programlisting">
void somefunc(hb_buffer_t *buffer) {
buffer = hb_buffer_reference(buffer);
...
</pre>
<p>
And then decrease it once you're done with it:
</p>
<pre class="programlisting">
hb_buffer_destroy(buffer);
}
</pre>
<p>
To throw away all the data in your buffer and start from scratch,
call <code class="literal">hb_buffer_reset(buffer)</code>. If you want to
throw away the string in the buffer but keep the options, you can
instead call <code class="literal">hb_buffer_clear_contents(buffer)</code>.
</p>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.24.1</div>
</body>
</html>