⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.58
Server IP:
97.74.87.16
Server:
Linux 16.87.74.97.host.secureserver.net 5.14.0-503.38.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Apr 18 08:52:10 EDT 2025 x86_64
Server Software:
Apache
PHP Version:
8.2.28
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
proc
/
self
/
root
/
usr
/
share
/
gtk-doc
/
html
/
harfbuzz
/
View File Name :
harfbuzz-hb-blob.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>hb-blob: 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="ch12.html" title="Core API"> <link rel="prev" href="ch12.html" title="Core API"> <link rel="next" href="harfbuzz-hb-buffer.html" title="hb-buffer"> <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"> <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> <a href="#harfbuzz-hb-blob.description" class="shortcut">Description</a></span> </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="ch12.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td> <td><a accesskey="p" href="ch12.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> <td><a accesskey="n" href="harfbuzz-hb-buffer.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> </tr></table> <div class="refentry"> <a name="harfbuzz-hb-blob"></a><div class="titlepage"></div> <div class="refnamediv"><table width="100%"><tr> <td valign="top"> <h2><span class="refentrytitle"><a name="harfbuzz-hb-blob.top_of_page"></a>hb-blob</span></h2> <p>hb-blob — Binary data containers</p> </td> <td class="gallery_image" valign="top" align="right"></td> </tr></table></div> <div class="refsect1"> <a name="harfbuzz-hb-blob.functions"></a><h2>Functions</h2> <div class="informaltable"><table class="informaltable" width="100%" border="0"> <colgroup> <col width="150px" class="functions_proto_type"> <col class="functions_proto_name"> </colgroup> <tbody> <tr> <td class="function_type"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> * </td> <td class="function_name"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-create" title="hb_blob_create ()">hb_blob_create</a> <span class="c_punctuation">()</span> </td> </tr> <tr> <td class="function_type"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> * </td> <td class="function_name"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-create-from-file" title="hb_blob_create_from_file ()">hb_blob_create_from_file</a> <span class="c_punctuation">()</span> </td> </tr> <tr> <td class="function_type"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> * </td> <td class="function_name"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-create-sub-blob" title="hb_blob_create_sub_blob ()">hb_blob_create_sub_blob</a> <span class="c_punctuation">()</span> </td> </tr> <tr> <td class="function_type"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> * </td> <td class="function_name"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-copy-writable-or-fail" title="hb_blob_copy_writable_or_fail ()">hb_blob_copy_writable_or_fail</a> <span class="c_punctuation">()</span> </td> </tr> <tr> <td class="function_type"> <span class="returnvalue">void</span> </td> <td class="function_name"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-destroy" title="hb_blob_destroy ()">hb_blob_destroy</a> <span class="c_punctuation">()</span> </td> </tr> <tr> <td class="function_type">const <span class="returnvalue">char</span> * </td> <td class="function_name"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-get-data" title="hb_blob_get_data ()">hb_blob_get_data</a> <span class="c_punctuation">()</span> </td> </tr> <tr> <td class="function_type"> <span class="returnvalue">char</span> * </td> <td class="function_name"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-get-data-writable" title="hb_blob_get_data_writable ()">hb_blob_get_data_writable</a> <span class="c_punctuation">()</span> </td> </tr> <tr> <td class="function_type"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> * </td> <td class="function_name"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-get-empty" title="hb_blob_get_empty ()">hb_blob_get_empty</a> <span class="c_punctuation">()</span> </td> </tr> <tr> <td class="function_type">unsigned <span class="returnvalue">int</span> </td> <td class="function_name"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-get-length" title="hb_blob_get_length ()">hb_blob_get_length</a> <span class="c_punctuation">()</span> </td> </tr> <tr> <td class="function_type"> <span class="returnvalue">void</span> * </td> <td class="function_name"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-get-user-data" title="hb_blob_get_user_data ()">hb_blob_get_user_data</a> <span class="c_punctuation">()</span> </td> </tr> <tr> <td class="function_type"> <a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a> </td> <td class="function_name"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-is-immutable" title="hb_blob_is_immutable ()">hb_blob_is_immutable</a> <span class="c_punctuation">()</span> </td> </tr> <tr> <td class="function_type"> <span class="returnvalue">void</span> </td> <td class="function_name"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-make-immutable" title="hb_blob_make_immutable ()">hb_blob_make_immutable</a> <span class="c_punctuation">()</span> </td> </tr> <tr> <td class="function_type"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> * </td> <td class="function_name"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-reference" title="hb_blob_reference ()">hb_blob_reference</a> <span class="c_punctuation">()</span> </td> </tr> <tr> <td class="function_type"> <a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a> </td> <td class="function_name"> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-set-user-data" title="hb_blob_set_user_data ()">hb_blob_set_user_data</a> <span class="c_punctuation">()</span> </td> </tr> </tbody> </table></div> </div> <div class="refsect1"> <a name="harfbuzz-hb-blob.other"></a><h2>Types and Values</h2> <div class="informaltable"><table class="informaltable" width="100%" border="0"> <colgroup> <col width="150px" class="other_proto_type"> <col class="other_proto_name"> </colgroup> <tbody> <tr> <td class="typedef_keyword">typedef</td> <td class="function_name"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t">hb_blob_t</a></td> </tr> <tr> <td class="datatype_keyword">enum</td> <td class="function_name"><a class="link" href="harfbuzz-hb-blob.html#hb-memory-mode-t" title="enum hb_memory_mode_t">hb_memory_mode_t</a></td> </tr> </tbody> </table></div> </div> <div class="refsect1"> <a name="harfbuzz-hb-blob.includes"></a><h2>Includes</h2> <pre class="synopsis">#include <hb.h> </pre> </div> <div class="refsect1"> <a name="harfbuzz-hb-blob.description"></a><h2>Description</h2> <p>Blobs wrap a chunk of binary data to handle lifecycle management of data while it is passed between client and HarfBuzz. Blobs are primarily used to create font faces, but also to access font face tables, as well as pass around other binary data.</p> </div> <div class="refsect1"> <a name="harfbuzz-hb-blob.functions_details"></a><h2>Functions</h2> <div class="refsect2"> <a name="hb-blob-create"></a><h3>hb_blob_create ()</h3> <pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> * hb_blob_create (<em class="parameter"><code>const <span class="type">char</span> *data</code></em>, <em class="parameter"><code>unsigned <span class="type">int</span> length</code></em>, <em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-memory-mode-t" title="enum hb_memory_mode_t"><span class="type">hb_memory_mode_t</span></a> mode</code></em>, <em class="parameter"><code><span class="type">void</span> *user_data</code></em>, <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre> <p>Creates a new "blob" object wrapping <em class="parameter"><code>data</code></em> . The <em class="parameter"><code>mode</code></em> parameter is used to negotiate ownership and lifecycle of <em class="parameter"><code>data</code></em> .</p> <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p> <div class="refsect3"> <a name="hb-blob-create.parameters"></a><h4>Parameters</h4> <div class="informaltable"><table class="informaltable" width="100%" border="0"> <colgroup> <col width="150px" class="parameters_name"> <col class="parameters_description"> <col width="200px" class="parameters_annotations"> </colgroup> <tbody> <tr> <td class="parameter_name"><p>data</p></td> <td class="parameter_description"><p>Pointer to blob data.</p></td> <td class="parameter_annotations"> </td> </tr> <tr> <td class="parameter_name"><p>length</p></td> <td class="parameter_description"><p>Length of <em class="parameter"><code>data</code></em> in bytes.</p></td> <td class="parameter_annotations"> </td> </tr> <tr> <td class="parameter_name"><p>mode</p></td> <td class="parameter_description"><p>Memory mode for <em class="parameter"><code>data</code></em> .</p></td> <td class="parameter_annotations"> </td> </tr> <tr> <td class="parameter_name"><p>user_data</p></td> <td class="parameter_description"><p>Data parameter to pass to <em class="parameter"><code>destroy</code></em> .</p></td> <td class="parameter_annotations"> </td> </tr> <tr> <td class="parameter_name"><p>destroy</p></td> <td class="parameter_description"><p>Callback to call when <em class="parameter"><code>data</code></em> is not needed anymore. </p></td> <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td> </tr> </tbody> </table></div> </div> <div class="refsect3"> <a name="hb-blob-create.returns"></a><h4>Returns</h4> <p> New blob, or the empty blob if something failed or if <em class="parameter"><code>length</code></em> is zero. Destroy with <a class="link" href="harfbuzz-hb-blob.html#hb-blob-destroy" title="hb_blob_destroy ()"><code class="function">hb_blob_destroy()</code></a>.</p> </div> <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p> </div> <hr> <div class="refsect2"> <a name="hb-blob-create-from-file"></a><h3>hb_blob_create_from_file ()</h3> <pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> * hb_blob_create_from_file (<em class="parameter"><code>const <span class="type">char</span> *file_name</code></em>);</pre> <p>Creates a new blob containing the data from the specified binary font file.</p> <div class="refsect3"> <a name="hb-blob-create-from-file.parameters"></a><h4>Parameters</h4> <div class="informaltable"><table class="informaltable" width="100%" border="0"> <colgroup> <col width="150px" class="parameters_name"> <col class="parameters_description"> <col width="200px" class="parameters_annotations"> </colgroup> <tbody><tr> <td class="parameter_name"><p>file_name</p></td> <td class="parameter_description"><p>A font filename</p></td> <td class="parameter_annotations"> </td> </tr></tbody> </table></div> </div> <div class="refsect3"> <a name="hb-blob-create-from-file.returns"></a><h4>Returns</h4> <p> An <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> pointer with the content of the file</p> </div> <p class="since">Since: <a class="link" href="api-index-1-7-7.html#api-index-1.7.7">1.7.7</a></p> </div> <hr> <div class="refsect2"> <a name="hb-blob-create-sub-blob"></a><h3>hb_blob_create_sub_blob ()</h3> <pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> * hb_blob_create_sub_blob (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *parent</code></em>, <em class="parameter"><code>unsigned <span class="type">int</span> offset</code></em>, <em class="parameter"><code>unsigned <span class="type">int</span> length</code></em>);</pre> <p>Returns a blob that represents a range of bytes in <em class="parameter"><code>parent</code></em> . The new blob is always created with <a class="link" href="harfbuzz-hb-blob.html#HB-MEMORY-MODE-READONLY:CAPS"><code class="literal">HB_MEMORY_MODE_READONLY</code></a>, meaning that it will never modify data in the parent blob. The parent data is not expected to be modified, and will result in undefined behavior if it is.</p> <p>Makes <em class="parameter"><code>parent</code></em> immutable.</p> <div class="refsect3"> <a name="hb-blob-create-sub-blob.parameters"></a><h4>Parameters</h4> <div class="informaltable"><table class="informaltable" width="100%" border="0"> <colgroup> <col width="150px" class="parameters_name"> <col class="parameters_description"> <col width="200px" class="parameters_annotations"> </colgroup> <tbody> <tr> <td class="parameter_name"><p>parent</p></td> <td class="parameter_description"><p>Parent blob.</p></td> <td class="parameter_annotations"> </td> </tr> <tr> <td class="parameter_name"><p>offset</p></td> <td class="parameter_description"><p>Start offset of sub-blob within <em class="parameter"><code>parent</code></em> , in bytes.</p></td> <td class="parameter_annotations"> </td> </tr> <tr> <td class="parameter_name"><p>length</p></td> <td class="parameter_description"><p>Length of sub-blob.</p></td> <td class="parameter_annotations"> </td> </tr> </tbody> </table></div> </div> <div class="refsect3"> <a name="hb-blob-create-sub-blob.returns"></a><h4>Returns</h4> <p> New blob, or the empty blob if something failed or if <em class="parameter"><code>length</code></em> is zero or <em class="parameter"><code>offset</code></em> is beyond the end of <em class="parameter"><code>parent</code></em> 's data. Destroy with <a class="link" href="harfbuzz-hb-blob.html#hb-blob-destroy" title="hb_blob_destroy ()"><code class="function">hb_blob_destroy()</code></a>.</p> </div> <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p> </div> <hr> <div class="refsect2"> <a name="hb-blob-copy-writable-or-fail"></a><h3>hb_blob_copy_writable_or_fail ()</h3> <pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> * hb_blob_copy_writable_or_fail (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>);</pre> <p>Makes a writable copy of <em class="parameter"><code>blob</code></em> .</p> <div class="refsect3"> <a name="hb-blob-copy-writable-or-fail.parameters"></a><h4>Parameters</h4> <div class="informaltable"><table class="informaltable" width="100%" border="0"> <colgroup> <col width="150px" class="parameters_name"> <col class="parameters_description"> <col width="200px" class="parameters_annotations"> </colgroup> <tbody><tr> <td class="parameter_name"><p>blob</p></td> <td class="parameter_description"><p>A blob.</p></td> <td class="parameter_annotations"> </td> </tr></tbody> </table></div> </div> <div class="refsect3"> <a name="hb-blob-copy-writable-or-fail.returns"></a><h4>Returns</h4> <p> The new blob, or nullptr if allocation failed</p> </div> <p class="since">Since: <a class="link" href="api-index-1-8-0.html#api-index-1.8.0">1.8.0</a></p> </div> <hr> <div class="refsect2"> <a name="hb-blob-destroy"></a><h3>hb_blob_destroy ()</h3> <pre class="programlisting"><span class="returnvalue">void</span> hb_blob_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>);</pre> <p>Decreases the reference count on <em class="parameter"><code>blob</code></em> , and if it reaches zero, destroys <em class="parameter"><code>blob</code></em> , freeing all memory, possibly calling the destroy-callback the blob was created for if it has not been called already.</p> <p>See TODO:link object types for more information.</p> <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p> <div class="refsect3"> <a name="hb-blob-destroy.parameters"></a><h4>Parameters</h4> <div class="informaltable"><table class="informaltable" width="100%" border="0"> <colgroup> <col width="150px" class="parameters_name"> <col class="parameters_description"> <col width="200px" class="parameters_annotations"> </colgroup> <tbody><tr> <td class="parameter_name"><p>blob</p></td> <td class="parameter_description"><p>a blob.</p></td> <td class="parameter_annotations"> </td> </tr></tbody> </table></div> </div> <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p> </div> <hr> <div class="refsect2"> <a name="hb-blob-get-data"></a><h3>hb_blob_get_data ()</h3> <pre class="programlisting">const <span class="returnvalue">char</span> * hb_blob_get_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>, <em class="parameter"><code>unsigned <span class="type">int</span> *length</code></em>);</pre> <p>Fetches the data from a blob.</p> <div class="refsect3"> <a name="hb-blob-get-data.parameters"></a><h4>Parameters</h4> <div class="informaltable"><table class="informaltable" width="100%" border="0"> <colgroup> <col width="150px" class="parameters_name"> <col class="parameters_description"> <col width="200px" class="parameters_annotations"> </colgroup> <tbody> <tr> <td class="parameter_name"><p>blob</p></td> <td class="parameter_description"><p>a blob.</p></td> <td class="parameter_annotations"> </td> </tr> <tr> <td class="parameter_name"><p>length</p></td> <td class="parameter_description"><p>The length in bytes of the data retrieved. </p></td> <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td> </tr> </tbody> </table></div> </div> <div class="refsect3"> <a name="hb-blob-get-data.returns"></a><h4>Returns</h4> <p>the byte data of <em class="parameter"><code>blob</code></em> . </p> <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=length]</span></p> </div> <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p> </div> <hr> <div class="refsect2"> <a name="hb-blob-get-data-writable"></a><h3>hb_blob_get_data_writable ()</h3> <pre class="programlisting"><span class="returnvalue">char</span> * hb_blob_get_data_writable (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>, <em class="parameter"><code>unsigned <span class="type">int</span> *length</code></em>);</pre> <p>Tries to make blob data writable (possibly copying it) and return pointer to data.</p> <p>Fails if blob has been made immutable, or if memory allocation fails.</p> <div class="refsect3"> <a name="hb-blob-get-data-writable.parameters"></a><h4>Parameters</h4> <div class="informaltable"><table class="informaltable" width="100%" border="0"> <colgroup> <col width="150px" class="parameters_name"> <col class="parameters_description"> <col width="200px" class="parameters_annotations"> </colgroup> <tbody> <tr> <td class="parameter_name"><p>blob</p></td> <td class="parameter_description"><p>a blob.</p></td> <td class="parameter_annotations"> </td> </tr> <tr> <td class="parameter_name"><p>length</p></td> <td class="parameter_description"><p>output length of the writable data. </p></td> <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td> </tr> </tbody> </table></div> </div> <div class="refsect3"> <a name="hb-blob-get-data-writable.returns"></a><h4>Returns</h4> <p>Writable blob data, or <code class="literal">NULL</code> if failed. </p> <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=length]</span></p> </div> <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p> </div> <hr> <div class="refsect2"> <a name="hb-blob-get-empty"></a><h3>hb_blob_get_empty ()</h3> <pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> * hb_blob_get_empty (<em class="parameter"><code><span class="type">void</span></code></em>);</pre> <p>Returns the singleton empty blob.</p> <p>See TODO:link object types for more information.</p> <div class="refsect3"> <a name="hb-blob-get-empty.returns"></a><h4>Returns</h4> <p>The empty blob. </p> <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p> </div> <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p> </div> <hr> <div class="refsect2"> <a name="hb-blob-get-length"></a><h3>hb_blob_get_length ()</h3> <pre class="programlisting">unsigned <span class="returnvalue">int</span> hb_blob_get_length (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>);</pre> <p>Fetches the length of a blob's data.</p> <div class="refsect3"> <a name="hb-blob-get-length.parameters"></a><h4>Parameters</h4> <div class="informaltable"><table class="informaltable" width="100%" border="0"> <colgroup> <col width="150px" class="parameters_name"> <col class="parameters_description"> <col width="200px" class="parameters_annotations"> </colgroup> <tbody><tr> <td class="parameter_name"><p>blob</p></td> <td class="parameter_description"><p>a blob.</p></td> <td class="parameter_annotations"> </td> </tr></tbody> </table></div> </div> <div class="refsect3"> <a name="hb-blob-get-length.returns"></a><h4>Returns</h4> <p> the length of <em class="parameter"><code>blob</code></em> data in bytes.</p> </div> <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p> </div> <hr> <div class="refsect2"> <a name="hb-blob-get-user-data"></a><h3>hb_blob_get_user_data ()</h3> <pre class="programlisting"><span class="returnvalue">void</span> * hb_blob_get_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>, <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t" title="hb_user_data_key_t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>);</pre> <p>Fetches the user data associated with the specified key, attached to the specified font-functions structure.</p> <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p> <div class="refsect3"> <a name="hb-blob-get-user-data.parameters"></a><h4>Parameters</h4> <div class="informaltable"><table class="informaltable" width="100%" border="0"> <colgroup> <col width="150px" class="parameters_name"> <col class="parameters_description"> <col width="200px" class="parameters_annotations"> </colgroup> <tbody> <tr> <td class="parameter_name"><p>blob</p></td> <td class="parameter_description"><p>a blob</p></td> <td class="parameter_annotations"> </td> </tr> <tr> <td class="parameter_name"><p>key</p></td> <td class="parameter_description"><p>The user-data key to query</p></td> <td class="parameter_annotations"> </td> </tr> </tbody> </table></div> </div> <div class="refsect3"> <a name="hb-blob-get-user-data.returns"></a><h4>Returns</h4> <p>A pointer to the user data. </p> <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p> </div> <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p> </div> <hr> <div class="refsect2"> <a name="hb-blob-is-immutable"></a><h3>hb_blob_is_immutable ()</h3> <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a> hb_blob_is_immutable (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>);</pre> <p>Tests whether a blob is immutable.</p> <div class="refsect3"> <a name="hb-blob-is-immutable.parameters"></a><h4>Parameters</h4> <div class="informaltable"><table class="informaltable" width="100%" border="0"> <colgroup> <col width="150px" class="parameters_name"> <col class="parameters_description"> <col width="200px" class="parameters_annotations"> </colgroup> <tbody><tr> <td class="parameter_name"><p>blob</p></td> <td class="parameter_description"><p>a blob.</p></td> <td class="parameter_annotations"> </td> </tr></tbody> </table></div> </div> <div class="refsect3"> <a name="hb-blob-is-immutable.returns"></a><h4>Returns</h4> <p> <code class="literal">true</code> if <em class="parameter"><code>blob</code></em> is immutable, false otherwise</p> </div> <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p> </div> <hr> <div class="refsect2"> <a name="hb-blob-make-immutable"></a><h3>hb_blob_make_immutable ()</h3> <pre class="programlisting"><span class="returnvalue">void</span> hb_blob_make_immutable (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>);</pre> <p>Makes a blob immutable.</p> <div class="refsect3"> <a name="hb-blob-make-immutable.parameters"></a><h4>Parameters</h4> <div class="informaltable"><table class="informaltable" width="100%" border="0"> <colgroup> <col width="150px" class="parameters_name"> <col class="parameters_description"> <col width="200px" class="parameters_annotations"> </colgroup> <tbody><tr> <td class="parameter_name"><p>blob</p></td> <td class="parameter_description"><p>a blob</p></td> <td class="parameter_annotations"> </td> </tr></tbody> </table></div> </div> <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p> </div> <hr> <div class="refsect2"> <a name="hb-blob-reference"></a><h3>hb_blob_reference ()</h3> <pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> * hb_blob_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>);</pre> <p>Increases the reference count on <em class="parameter"><code>blob</code></em> .</p> <p>See TODO:link object types for more information.</p> <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p> <div class="refsect3"> <a name="hb-blob-reference.parameters"></a><h4>Parameters</h4> <div class="informaltable"><table class="informaltable" width="100%" border="0"> <colgroup> <col width="150px" class="parameters_name"> <col class="parameters_description"> <col width="200px" class="parameters_annotations"> </colgroup> <tbody><tr> <td class="parameter_name"><p>blob</p></td> <td class="parameter_description"><p>a blob.</p></td> <td class="parameter_annotations"> </td> </tr></tbody> </table></div> </div> <div class="refsect3"> <a name="hb-blob-reference.returns"></a><h4>Returns</h4> <p> <em class="parameter"><code>blob</code></em> .</p> </div> <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p> </div> <hr> <div class="refsect2"> <a name="hb-blob-set-user-data"></a><h3>hb_blob_set_user_data ()</h3> <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a> hb_blob_set_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>, <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t" title="hb_user_data_key_t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>, <em class="parameter"><code><span class="type">void</span> *data</code></em>, <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>, <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="type">hb_bool_t</span></a> replace</code></em>);</pre> <p>Attaches a user-data key/data pair to the specified blob.</p> <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p> <div class="refsect3"> <a name="hb-blob-set-user-data.parameters"></a><h4>Parameters</h4> <div class="informaltable"><table class="informaltable" width="100%" border="0"> <colgroup> <col width="150px" class="parameters_name"> <col class="parameters_description"> <col width="200px" class="parameters_annotations"> </colgroup> <tbody> <tr> <td class="parameter_name"><p>blob</p></td> <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a></p></td> <td class="parameter_annotations"> </td> </tr> <tr> <td class="parameter_name"><p>key</p></td> <td class="parameter_description"><p>The user-data key to set</p></td> <td class="parameter_annotations"> </td> </tr> <tr> <td class="parameter_name"><p>data</p></td> <td class="parameter_description"><p>A pointer to the user data to set</p></td> <td class="parameter_annotations"> </td> </tr> <tr> <td class="parameter_name"><p>destroy</p></td> <td class="parameter_description"><p>A callback to call when <em class="parameter"><code>data</code></em> is not needed anymore. </p></td> <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td> </tr> <tr> <td class="parameter_name"><p>replace</p></td> <td class="parameter_description"><p>Whether to replace an existing data with the same key</p></td> <td class="parameter_annotations"> </td> </tr> </tbody> </table></div> </div> <div class="refsect3"> <a name="hb-blob-set-user-data.returns"></a><h4>Returns</h4> <p> <code class="literal">true</code> if success, <code class="literal">false</code> otherwise</p> </div> <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p> </div> </div> <div class="refsect1"> <a name="harfbuzz-hb-blob.other_details"></a><h2>Types and Values</h2> <div class="refsect2"> <a name="hb-blob-t"></a><h3>hb_blob_t</h3> <pre class="programlisting">typedef struct hb_blob_t hb_blob_t; </pre> <p>Data type for blobs. A blob wraps a chunk of binary data and facilitates its lifecycle management between a client program and HarfBuzz.</p> </div> <hr> <div class="refsect2"> <a name="hb-memory-mode-t"></a><h3>enum hb_memory_mode_t</h3> <p>Data type holding the memory modes available to client programs.</p> <p>Regarding these various memory-modes:</p> <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> <li class="listitem"><p>In no case shall the HarfBuzz client modify memory that is passed to HarfBuzz in a blob. If there is any such possibility, <em class="parameter"><code>HB_MEMORY_MODE_DUPLICATE</code></em> should be used such that HarfBuzz makes a copy immediately,</p></li> <li class="listitem"><p>Use <em class="parameter"><code>HB_MEMORY_MODE_READONLY</code></em> otherwise, unless you really really really know what you are doing,</p></li> <li class="listitem"><p><em class="parameter"><code>HB_MEMORY_MODE_WRITABLE</code></em> is appropriate if you really made a copy of data solely for the purpose of passing to HarfBuzz and doing that just once (no reuse!),</p></li> <li class="listitem"><p>If the font is <code class="function">mmap()</code>ed, it's okay to use <em class="parameter"><code>HB_MEMORY_READONLY_MAY_MAKE_WRITABLE</code></em> , however, using that mode correctly is very tricky. Use <em class="parameter"><code>HB_MEMORY_MODE_READONLY</code></em> instead.</p></li> </ul></div> <div class="refsect3"> <a name="hb-memory-mode-t.members"></a><h4>Members</h4> <div class="informaltable"><table class="informaltable" width="100%" border="0"> <colgroup> <col width="300px" class="enum_members_name"> <col class="enum_members_description"> <col width="200px" class="enum_members_annotations"> </colgroup> <tbody> <tr> <td class="enum_member_name"><p><a name="HB-MEMORY-MODE-DUPLICATE:CAPS"></a>HB_MEMORY_MODE_DUPLICATE</p></td> <td> </td> <td> </td> </tr> <tr> <td class="enum_member_name"><p><a name="HB-MEMORY-MODE-READONLY:CAPS"></a>HB_MEMORY_MODE_READONLY</p></td> <td> </td> <td> </td> </tr> <tr> <td class="enum_member_name"><p><a name="HB-MEMORY-MODE-WRITABLE:CAPS"></a>HB_MEMORY_MODE_WRITABLE</p></td> <td> </td> <td> </td> </tr> <tr> <td class="enum_member_name"><p><a name="HB-MEMORY-MODE-READONLY-MAY-MAKE-WRITABLE:CAPS"></a>HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE</p></td> <td> </td> <td> </td> </tr> </tbody> </table></div> </div> </div> </div> </div> <div class="footer"> <hr>Generated by GTK-Doc V1.32</div> </body> </html>