luametalatex-c/luaharfbuzz/docs/index.html

2830 lines
61 KiB
HTML
Raw Normal View History

2021-12-28 10:18:21 +01:00
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
<title>luaharfbuzz Documentation</title>
<link rel="stylesheet" href="ldoc.css" type="text/css" />
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div> <!-- id="product" -->
<div id="main">
<!-- Menu -->
<div id="navigation">
<br/>
<h1>luaharfbuzz</h1>
<h2>Contents</h2>
<ul>
<li><a href="#Functions">Functions</a></li>
<li><a href="#Class_Blob">Class Blob </a></li>
<li><a href="#Class_Face">Class Face </a></li>
<li><a href="#Class_Font">Class Font </a></li>
<li><a href="#Class_Buffer">Class Buffer </a></li>
<li><a href="#Cluster_Levels">Cluster Levels </a></li>
<li><a href="#Class_Feature">Class Feature </a></li>
<li><a href="#Class_Tag">Class Tag </a></li>
<li><a href="#Class_Script">Class Script </a></li>
<li><a href="#Predefined_Script_Codes">Predefined Script Codes </a></li>
<li><a href="#Class_Direction">Class Direction </a></li>
<li><a href="#Predefined_directions">Predefined directions </a></li>
<li><a href="#Class_Language">Class Language </a></li>
<li><a href="#Predefined_languages">Predefined languages </a></li>
<li><a href="#Unicode_functions">Unicode functions </a></li>
<li><a href="#Predefined_Name_IDs">Predefined Name IDs </a></li>
</ul>
<h2>Modules</h2>
<ul class="nowrap">
<li><strong>harfbuzz</strong></li>
</ul>
<h2>Examples</h2>
<ul class="nowrap">
<li><a href="examples/core_types.lua.html">core_types.lua</a></li>
</ul>
</div>
<div id="content">
<h1>Module <code>harfbuzz</code></h1>
<p>Lua bindings to Harfbuzz.</p>
<p>
<ul>
<li><a href="http://github.com/ufytex/luaharfbuzz/wiki">Wiki</a></li>
<li><a href="https://github.com/ufytex/luaharfbuzz">Source on Github</a></li>
<li><a href="https://github.com/ufytex/luaharfbuzz/blob/master/status/done.txt">API Coverage Status</a></li>
</ul>
</p>
<h3>Info:</h3>
<ul>
<li><strong>Copyright</strong>: 2016</li>
<li><strong>License</strong>: MIT</li>
<li><strong>Author</strong>: Deepak Jois <<a href="&#x6d;&#97;&#x69;&#108;&#x74;&#111;&#x3a;d&#101;&#x65;&#112;&#x61;&#107;&#x2e;&#106;&#x6f;i&#115;&#x40;&#103;&#x6d;&#97;&#x69;&#108;&#x2e;&#99;&#x6f;m">&#x64;&#101;&#x65;&#112;&#x61;&#107;&#x2e;j&#111;&#x69;&#115;&#x40;&#103;&#x6d;&#97;&#x69;l&#46;&#x63;&#111;&#x6d;</a>></li>
</ul>
<h2><a href="#Functions">Functions</a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#version">version ()</a></td>
<td class="summary">Wraps <code>hb_version</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#shape">shape (font, buffer[, options])</a></td>
<td class="summary">Wraps <code>hb_shape</code>.</td>
</tr>
</table>
<h2><a href="#Class_Blob">Class Blob </a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#Blob.new">Blob.new (data)</a></td>
<td class="summary">Wraps <code>hb_blob_create</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Blob.new_from_file">Blob.new_from_file (filename)</a></td>
<td class="summary">Wraps <code>hb_blob_create_from_file</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Blob:get_length">Blob:get_length ()</a></td>
<td class="summary">Wraps <code>hb_blob_get_length</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Blob:get_data">Blob:get_data ()</a></td>
<td class="summary">Wraps <code>hb_blob_get_data</code>.</td>
</tr>
</table>
<h2><a href="#Class_Face">Class Face </a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#Face.new_from_blob">Face.new_from_blob (blob[, font_index=0])</a></td>
<td class="summary">Wraps <code>hb_face_create</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Face.new">Face.new (file[, font_index=0])</a></td>
<td class="summary">Create a new <code>Face</code> from a file.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Face:collect_unicodes">Face:collect_unicodes ()</a></td>
<td class="summary">Wraps <code>hb_face_collect_unicodes</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Face:get_glyph_count">Face:get_glyph_count ()</a></td>
<td class="summary">Wraps <code>hb_face_get_glyph_count</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Face:get_table">Face:get_table (tag)</a></td>
<td class="summary">Wraps <code>hb_face_reference_table</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Face:get_table_tags">Face:get_table_tags ()</a></td>
<td class="summary">Wraps <code>hb_face_get_table_tags</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Face:get_upem">Face:get_upem ()</a></td>
<td class="summary">Wraps <code>hb_face_get_upem</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Face:ot_color_has_palettes">Face:ot_color_has_palettes ()</a></td>
<td class="summary">Wraps <code>hb_ot_color_has_palettes</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Face:ot_color_palette_get_count">Face:ot_color_palette_get_count ()</a></td>
<td class="summary">Wraps <code>hb_ot_color_palette_get_count</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Face:ot_color_palette_get_colors">Face:ot_color_palette_get_colors ()</a></td>
<td class="summary">Wraps <code>hb_ot_color_palette_get_colors</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Face:ot_color_has_layers">Face:ot_color_has_layers ()</a></td>
<td class="summary">Wraps <code>hb_ot_color_has_layers</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Face:ot_color_glyph_get_layers">Face:ot_color_glyph_get_layers ()</a></td>
<td class="summary">Wraps <code>hb_ot_color_glyph_get_layers</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Face:ot_color_has_png">Face:ot_color_has_png ()</a></td>
<td class="summary">Wraps <code>hb_ot_color_has_png</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Face:ot_layout_get_script_tags">Face:ot_layout_get_script_tags ()</a></td>
<td class="summary">Wraps <code>hb_ot_layout_table_get_script_tags</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Face:ot_layout_get_language_tags">Face:ot_layout_get_language_tags ()</a></td>
<td class="summary">Wraps <code>hb_ot_layout_script_get_language_tags</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Face:ot_layout_get_feature_tags">Face:ot_layout_get_feature_tags ()</a></td>
<td class="summary">Wraps <code>hb_ot_layout_language_get_feature_tags</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Face:ot_layout_find_script">Face:ot_layout_find_script ()</a></td>
<td class="summary">Wraps <code>hb_ot_layout_table_find_script</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Face:ot_layout_find_language">Face:ot_layout_find_language ()</a></td>
<td class="summary">Wraps <code>hb_ot_layout_script_find_language</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Face:ot_layout_find_feature">Face:ot_layout_find_feature ()</a></td>
<td class="summary">Wraps <code>hb_ot_layout_language_find_feature</code>.</td>
</tr>
</table>
<h2><a href="#Class_Font">Class Font </a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#Font.new">Font.new (face)</a></td>
<td class="summary">Wraps <code>hb_font_create</code>, and sets up some defaults for scale and shaping functions.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Font:get_scale">Font:get_scale ()</a></td>
<td class="summary">Wraps <code>hb_font_get_scale</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Font:set_scale">Font:set_scale (x_scale, y_scale)</a></td>
<td class="summary">Wraps <code>hb_font_set_scale</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Font:get_h_extents">Font:get_h_extents ()</a></td>
<td class="summary">Wraps <code>hb_font_get_h_extents</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Font:get_v_extents">Font:get_v_extents ()</a></td>
<td class="summary">Wraps <code>hb_font_get_v_extents</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Font:get_glyph_extents">Font:get_glyph_extents (glyph)</a></td>
<td class="summary">Wraps <code>hb_font_get_glyph_extents</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Font:get_glyph_name">Font:get_glyph_name (glyph)</a></td>
<td class="summary">Wraps <code>hb_font_get_glyph_name</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Font:get_glyph_from_name">Font:get_glyph_from_name (name)</a></td>
<td class="summary">Wraps <code>hb_font_get_glyph_from_name</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Font:get_glyph_h_advance">Font:get_glyph_h_advance (glyph)</a></td>
<td class="summary">Wraps <code>hb_font_get_glyph_h_advance</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Font:get_glyph_v_advance">Font:get_glyph_v_advance (glyph)</a></td>
<td class="summary">Wraps <code>hb_font_get_glyph_v_advance</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Font:get_nominal_glyph">Font:get_nominal_glyph (codepoint.)</a></td>
<td class="summary">Wraps <code>hb_font_get_nominal_glyph</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Font:ot_color_glyph_get_png">Font:ot_color_glyph_get_png ()</a></td>
<td class="summary">Wraps <code>hb_ot_color_glyph_get_png</code>.</td>
</tr>
</table>
<h2><a href="#Class_Buffer">Class Buffer </a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#Buffer.new">Buffer.new ()</a></td>
<td class="summary">Wraps <code>hb_buffer_create</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer:add_utf8">Buffer:add_utf8 (text[, item_offset=0[, item_length=-1]])</a></td>
<td class="summary">Wraps <code>hb_buffer_add_utf8</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer:add_codepoints">Buffer:add_codepoints (text[, item_offset=0[, item_length=-1]])</a></td>
<td class="summary">Wraps <code>hb_buffer_add_codepoints</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer:set_direction">Buffer:set_direction (dir)</a></td>
<td class="summary">Wraps <code>hb_buffer_set_direction</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer:get_direction">Buffer:get_direction ()</a></td>
<td class="summary">Wraps <code>hb_buffer_get_direction</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer:set_script">Buffer:set_script (script)</a></td>
<td class="summary">Wraps <code>hb_buffer_set_script</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer:get_script">Buffer:get_script ()</a></td>
<td class="summary">Wraps <code>hb_buffer_get_script</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer:set_language">Buffer:set_language (lang)</a></td>
<td class="summary">Wraps <code>hb_buffer_set_language</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer:get_language">Buffer:get_language ()</a></td>
<td class="summary">Wraps <code>hb_buffer_get_language</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer:reverse">Buffer:reverse ()</a></td>
<td class="summary">Wraps <code>hb_buffer_reverse</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer:get_length">Buffer:get_length ()</a></td>
<td class="summary">Wraps <code>hb_buffer_get_length</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer:get_cluster_level">Buffer:get_cluster_level ()</a></td>
<td class="summary">Wraps <code>hb_buffer_get_cluster_level</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer:set_cluster_level">Buffer:set_cluster_level (level)</a></td>
<td class="summary">Wraps <code>hb_buffer_set_cluster_level</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer:guess_segment_properties">Buffer:guess_segment_properties ()</a></td>
<td class="summary">Wraps <code>hb_buffer_guess_segment_properties</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer:get_glyphs">Buffer:get_glyphs ()</a></td>
<td class="summary">Helper method to get shaped glyph data.</td>
</tr>
</table>
<h2><a href="#Cluster_Levels">Cluster Levels </a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#Buffer.CLUSTER_LEVEL_MONOTONE_GRAPHEMES">Buffer.CLUSTER_LEVEL_MONOTONE_GRAPHEMES</a></td>
<td class="summary">Wraps <code>HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer.CLUSTER_LEVEL_MONOTONE_CHARACTERS">Buffer.CLUSTER_LEVEL_MONOTONE_CHARACTERS</a></td>
<td class="summary">Wraps <code>HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer.CLUSTER_LEVEL_CHARACTERS">Buffer.CLUSTER_LEVEL_CHARACTERS</a></td>
<td class="summary">Wraps <code>HB_BUFFER_CLUSTER_LEVEL_CHARACTERS</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer.CLUSTER_LEVEL_DEFAULT">Buffer.CLUSTER_LEVEL_DEFAULT</a></td>
<td class="summary">Wraps <code>HB_BUFFER_CLUSTER_LEVEL_DEFAULT</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer.GLYPH_FLAG_UNSAFE_TO_BREAK">Buffer.GLYPH_FLAG_UNSAFE_TO_BREAK</a></td>
<td class="summary">Wraps <code>HB_GLYPH_FLAG_UNSAFE_TO_BREAK</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Buffer.GLYPH_FLAG_DEFINED">Buffer.GLYPH_FLAG_DEFINED</a></td>
<td class="summary">Wraps <code>HB_GLYPH_FLAG_DEFINED</code>.</td>
</tr>
</table>
<h2><a href="#Class_Feature">Class Feature </a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#Feature.new">Feature.new (feature_string)</a></td>
<td class="summary">Wraps <code>hb_feature_from_string</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#Feature:__tostring">Feature:__tostring ()</a></td>
<td class="summary">Wraps <code>hb_feature_to_string</code>.</td>
</tr>
</table>
<h2><a href="#Class_Tag">Class Tag </a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#Tag.new">Tag.new (string)</a></td>
<td class="summary">Wraps <code>hb_tag_from_string</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Tag:__to_string">Tag:__to_string ()</a></td>
<td class="summary">Wraps <code>hb_tag_to_string</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Tag:__eq">Tag:__eq ()</a></td>
<td class="summary">Enables equality comparisions with <code>==</code> between two tags.</td>
</tr>
</table>
<h2><a href="#Class_Script">Class Script </a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#Script.new">Script.new (script)</a></td>
<td class="summary">Wraps <code>hb_script_from_string</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Script.from_iso15924_tag">Script.from_iso15924_tag (tag)</a></td>
<td class="summary">Wraps <code>hb_script_from_iso15924_tag</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#Script:to_iso15924_tag">Script:to_iso15924_tag ()</a></td>
<td class="summary">Wraps <code>hb_script_to_iso15924_tag</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Script:__to_string">Script:__to_string ()</a></td>
<td class="summary">Enable nice output with <code>tostring(…)</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#Script:__eq">Script:__eq ()</a></td>
<td class="summary">Enables equality comparisions with <code>==</code> between two scripts.</td>
</tr>
</table>
<h2><a href="#Predefined_Script_Codes">Predefined Script Codes </a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#Script.COMMON">Script.COMMON</a></td>
<td class="summary">Wraps <code>HB_SCRIPT_COMMON</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Script.INHERITED">Script.INHERITED</a></td>
<td class="summary">Wraps <code>HB_SCRIPT_INHERITED</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Script.UNKNOWN">Script.UNKNOWN</a></td>
<td class="summary">Wraps <code>HB_SCRIPT_UNKNOWN</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Script.INVALID">Script.INVALID</a></td>
<td class="summary">Wraps <code>HB_SCRIPT_INVALID</code>.</td>
</tr>
</table>
<h2><a href="#Class_Direction">Class Direction </a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#Direction.new">Direction.new (dir)</a></td>
<td class="summary">Wraps <code>hb_direction_from_string</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Direction:__to_string">Direction:__to_string ()</a></td>
<td class="summary">Wraps <code>hb_direction_to_string</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Direction:__eq">Direction:__eq ()</a></td>
<td class="summary">Enables equality comparisions with <code>==</code> between two directions.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Direction:is_valid">Direction:is_valid ()</a></td>
<td class="summary">Wraps <code>HB_DIRECTION_IS_VALID</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Direction:is_horizontal">Direction:is_horizontal ()</a></td>
<td class="summary">Wraps <code>HB_DIRECTION_IS_HORIZONTAL</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Direction:is_vertical">Direction:is_vertical ()</a></td>
<td class="summary">Wraps <code>HB_DIRECTION_IS_VERTICAL</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Direction:is_forward">Direction:is_forward ()</a></td>
<td class="summary">Wraps <code>HB_DIRECTION_IS_FORWARD</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Direction:is_backward">Direction:is_backward ()</a></td>
<td class="summary">Wraps <code>HB_DIRECTION_IS_BACKWARD</code>.</td>
</tr>
</table>
<h2><a href="#Predefined_directions">Predefined directions </a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#Direction.LTR">Direction.LTR</a></td>
<td class="summary">Wraps <code>HB_DIRECTION_LTR</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Direction.RTL">Direction.RTL</a></td>
<td class="summary">Wraps <code>HB_DIRECTION_RTL</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Direction.TTB">Direction.TTB</a></td>
<td class="summary">Wraps <code>HB_DIRECTION_TTB</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Direction.BTT">Direction.BTT</a></td>
<td class="summary">Wraps <code>HB_DIRECTION_LTR</code>.</td>
</tr>
</table>
<h2><a href="#Class_Language">Class Language </a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#Language.new">Language.new (lang)</a></td>
<td class="summary">Wraps <code>hb_language_from_string</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Language:__to_string">Language:__to_string ()</a></td>
<td class="summary">Wraps <code>hb_language_to_string</code>.</td>
</tr>
<tr>
<td class="name" nowrap><a href="#Language:__eq">Language:__eq ()</a></td>
<td class="summary">Enables equality comparisions with <code>==</code> between two languages.</td>
</tr>
</table>
<h2><a href="#Predefined_languages">Predefined languages </a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#Language.INVALID">Language.INVALID</a></td>
<td class="summary">Wraps <code>HB_LANGUAGE_INVALID</code>.</td>
</tr>
</table>
<h2><a href="#Unicode_functions">Unicode functions </a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#unicode.script">unicode.script (char)</a></td>
<td class="summary">Wraps <code>hb_unicode_script</code></td>
</tr>
</table>
<h2><a href="#Predefined_Name_IDs">Predefined Name IDs </a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_COPYRIGHT">ot.NAME_ID_COPYRIGHT</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_COPYRIGHT</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_FONT_FAMILY">ot.NAME_ID_FONT_FAMILY</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_FONT_FAMILY</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_FONT_SUBFAMILY">ot.NAME_ID_FONT_SUBFAMILY</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_FONT_SUBFAMILY</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_UNIQUE_ID">ot.NAME_ID_UNIQUE_ID</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_UNIQUE_ID</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_FULL_NAME">ot.NAME_ID_FULL_NAME</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_FULL_NAME</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_VERSION_STRING">ot.NAME_ID_VERSION_STRING</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_VERSION_STRING</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_POSTSCRIPT_NAME">ot.NAME_ID_POSTSCRIPT_NAME</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_POSTSCRIPT_NAME</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_TRADEMARK">ot.NAME_ID_TRADEMARK</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_TRADEMARK</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_MANUFACTURER">ot.NAME_ID_MANUFACTURER</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_MANUFACTURER</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_DESIGNER">ot.NAME_ID_DESIGNER</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_DESIGNER</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_DESCRIPTION">ot.NAME_ID_DESCRIPTION</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_DESCRIPTION</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_VENDOR_URL">ot.NAME_ID_VENDOR_URL</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_VENDOR_URL</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_DESIGNER_URL">ot.NAME_ID_DESIGNER_URL</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_DESIGNER_URL</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_LICENSE">ot.NAME_ID_LICENSE</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_LICENSE</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_LICENSE_URL">ot.NAME_ID_LICENSE_URL</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_LICENSE_URL</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_TYPOGRAPHIC_FAMILY">ot.NAME_ID_TYPOGRAPHIC_FAMILY</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_TYPOGRAPHIC_FAMILY</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_TYPOGRAPHIC_SUBFAMILY">ot.NAME_ID_TYPOGRAPHIC_SUBFAMILY</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_TYPOGRAPHIC_SUBFAMILY</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_MAC_FULL_NAME">ot.NAME_ID_MAC_FULL_NAME</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_MAC_FULL_NAME</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_SAMPLE_TEXT">ot.NAME_ID_SAMPLE_TEXT</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_SAMPLE_TEXT</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_CID_FINDFONT_NAME">ot.NAME_ID_CID_FINDFONT_NAME</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_CID_FINDFONT_NAME</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_WWS_FAMILY">ot.NAME_ID_WWS_FAMILY</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_WWS_FAMILY</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_WWS_SUBFAMILY">ot.NAME_ID_WWS_SUBFAMILY</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_WWS_SUBFAMILY</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_LIGHT_BACKGROUND">ot.NAME_ID_LIGHT_BACKGROUND</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_LIGHT_BACKGROUND</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_DARK_BACKGROUND">ot.NAME_ID_DARK_BACKGROUND</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_DARK_BACKGROUND</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_VARIATIONS_PS_PREFIX">ot.NAME_ID_VARIATIONS_PS_PREFIX</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_VARIATIONS_PS_PREFIX</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.NAME_ID_INVALID">ot.NAME_ID_INVALID</a></td>
<td class="summary">Wraps <code>HB_OT_NAME_ID_INVALID</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.LAYOUT_NO_SCRIPT_INDEX">ot.LAYOUT_NO_SCRIPT_INDEX</a></td>
<td class="summary">Wraps <code>HB_OT_LAYOUT_NO_SCRIPT_INDEX</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.LAYOUT_NO_FEATURE_INDEX">ot.LAYOUT_NO_FEATURE_INDEX</a></td>
<td class="summary">Wraps <code>HB_OT_LAYOUT_NO_FEATURE_INDEX</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.LAYOUT_DEFAULT_LANGUAGE_INDEX">ot.LAYOUT_DEFAULT_LANGUAGE_INDEX</a></td>
<td class="summary">Wraps <code>HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX</code></td>
</tr>
<tr>
<td class="name" nowrap><a href="#ot.LAYOUT_NO_VARIATIONS_INDEX">ot.LAYOUT_NO_VARIATIONS_INDEX</a></td>
<td class="summary">Wraps <code>HB_OT_LAYOUT_NO_VARIATIONS_INDEX</code></td>
</tr>
</table>
<br/>
<br/>
<h2 class="section-header "><a name="Functions"></a>Functions</h2>
<dl class="function">
<dt>
<a name = "version"></a>
<strong>version ()</strong>
</dt>
<dd>
Wraps <code>hb_version</code>
</dd>
<dt>
<a name = "shape"></a>
<strong>shape (font, buffer[, options])</strong>
</dt>
<dd>
Wraps <code>hb_shape</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">font</span>
<code>Font</code> to use for shaping
</li>
<li><span class="parameter">buffer</span>
<code>Buffer</code> to shape
</li>
<li><span class="parameter">options</span>
<p> table containing one or more supported options:</p>
<ul>
<li><code>direction</code>: A <code>Direction</code> object representing the object.</li>
<li><code>script</code>: A <code>Script</code> object representing the script.</li>
<li><code>language</code>: A <code>Language</code> object representing the language.</li>
<li><code>features</code>: features to enable, specified as either of the following.
<ul>
<li>comma-separated list of features. See <a href="https://github.com/ufytex/luaharfbuzz/wiki/Feature-Strings">feature string syntax reference</a></li>
<li>table of <code>Feature</code> objects</li>
</ul></li>
</ul>
(<em>optional</em>)
</li>
</ul>
</dd>
</dl>
<h2 class="section-header has-description"><a name="Class_Blob"></a>Class Blob </h2>
<div class="section-description">
Lua wrapper for <code>hb_blob_t</code> type
</div>
<dl class="function">
<dt>
<a name = "Blob.new"></a>
<strong>Blob.new (data)</strong>
</dt>
<dd>
Wraps <code>hb_blob_create</code>.
Initializes a new <code>hb_blob_t</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">data</span>
lua string containing binary or character data.
</li>
</ul>
</dd>
<dt>
<a name = "Blob.new_from_file"></a>
<strong>Blob.new_from_file (filename)</strong>
</dt>
<dd>
Wraps <code>hb_blob_create_from_file</code>.
Initializes a new <code>hb_blob_t</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">filename</span>
lua string.
</li>
</ul>
</dd>
<dt>
<a name = "Blob:get_length"></a>
<strong>Blob:get_length ()</strong>
</dt>
<dd>
Wraps <code>hb_blob_get_length</code>.
</dd>
<dt>
<a name = "Blob:get_data"></a>
<strong>Blob:get_data ()</strong>
</dt>
<dd>
Wraps <code>hb_blob_get_data</code>.
</dd>
</dl>
<h2 class="section-header has-description"><a name="Class_Face"></a>Class Face </h2>
<div class="section-description">
Lua wrapper for <code>hb_face_t</code> type
</div>
<dl class="function">
<dt>
<a name = "Face.new_from_blob"></a>
<strong>Face.new_from_blob (blob[, font_index=0])</strong>
</dt>
<dd>
Wraps <code>hb_face_create</code>.
Initializes a new <code>hb_face_t</code> from a <code>Blob</code> object.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">blob</span>
<code>Blob</code> to read the font from.
</li>
<li><span class="parameter">font_index</span>
index of font to read.
(<em>default</em> 0)
</li>
</ul>
</dd>
<dt>
<a name = "Face.new"></a>
<strong>Face.new (file[, font_index=0])</strong>
</dt>
<dd>
Create a new <code>Face</code> from a file.
Makes a call to <code>Face:new_from_blob</code> after creating a <code>Blob</code> from the
file contents.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">file</span>
path to font file.
</li>
<li><span class="parameter">font_index</span>
index of font to read.
(<em>default</em> 0)
</li>
</ul>
</dd>
<dt>
<a name = "Face:collect_unicodes"></a>
<strong>Face:collect_unicodes ()</strong>
</dt>
<dd>
Wraps <code>hb_face_collect_unicodes</code>.
<h3>Returns:</h3>
<ol>
table of codepoints supported by the face.
</ol>
</dd>
<dt>
<a name = "Face:get_glyph_count"></a>
<strong>Face:get_glyph_count ()</strong>
</dt>
<dd>
Wraps <code>hb_face_get_glyph_count</code>.
</dd>
<dt>
<a name = "Face:get_table"></a>
<strong>Face:get_table (tag)</strong>
</dt>
<dd>
Wraps <code>hb_face_reference_table</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">tag</span>
<code>Tag</code> object of the table.
</li>
</ul>
<h3>Returns:</h3>
<ol>
<code>Blob</code> object for the face table of <code>tag</code>.
</ol>
</dd>
<dt>
<a name = "Face:get_table_tags"></a>
<strong>Face:get_table_tags ()</strong>
</dt>
<dd>
Wraps <code>hb_face_get_table_tags</code>.
<h3>Returns:</h3>
<ol>
table of <code>Tag</code>s representing face table tags.
</ol>
</dd>
<dt>
<a name = "Face:get_upem"></a>
<strong>Face:get_upem ()</strong>
</dt>
<dd>
Wraps <code>hb_face_get_upem</code>.
</dd>
<dt>
<a name = "Face:ot_color_has_palettes"></a>
<strong>Face:ot_color_has_palettes ()</strong>
</dt>
<dd>
Wraps <code>hb_ot_color_has_palettes</code>.
</dd>
<dt>
<a name = "Face:ot_color_palette_get_count"></a>
<strong>Face:ot_color_palette_get_count ()</strong>
</dt>
<dd>
Wraps <code>hb_ot_color_palette_get_count</code>.
</dd>
<dt>
<a name = "Face:ot_color_palette_get_colors"></a>
<strong>Face:ot_color_palette_get_colors ()</strong>
</dt>
<dd>
Wraps <code>hb_ot_color_palette_get_colors</code>.
</dd>
<dt>
<a name = "Face:ot_color_has_layers"></a>
<strong>Face:ot_color_has_layers ()</strong>
</dt>
<dd>
Wraps <code>hb_ot_color_has_layers</code>.
</dd>
<dt>
<a name = "Face:ot_color_glyph_get_layers"></a>
<strong>Face:ot_color_glyph_get_layers ()</strong>
</dt>
<dd>
Wraps <code>hb_ot_color_glyph_get_layers</code>.
</dd>
<dt>
<a name = "Face:ot_color_has_png"></a>
<strong>Face:ot_color_has_png ()</strong>
</dt>
<dd>
Wraps <code>hb_ot_color_has_png</code>.
</dd>
<dt>
<a name = "Face:ot_layout_get_script_tags"></a>
<strong>Face:ot_layout_get_script_tags ()</strong>
</dt>
<dd>
Wraps <code>hb_ot_layout_table_get_script_tags</code>.
</dd>
<dt>
<a name = "Face:ot_layout_get_language_tags"></a>
<strong>Face:ot_layout_get_language_tags ()</strong>
</dt>
<dd>
Wraps <code>hb_ot_layout_script_get_language_tags</code>.
</dd>
<dt>
<a name = "Face:ot_layout_get_feature_tags"></a>
<strong>Face:ot_layout_get_feature_tags ()</strong>
</dt>
<dd>
Wraps <code>hb_ot_layout_language_get_feature_tags</code>.
</dd>
<dt>
<a name = "Face:ot_layout_find_script"></a>
<strong>Face:ot_layout_find_script ()</strong>
</dt>
<dd>
Wraps <code>hb_ot_layout_table_find_script</code>.
</dd>
<dt>
<a name = "Face:ot_layout_find_language"></a>
<strong>Face:ot_layout_find_language ()</strong>
</dt>
<dd>
Wraps <code>hb_ot_layout_script_find_language</code>.
</dd>
<dt>
<a name = "Face:ot_layout_find_feature"></a>
<strong>Face:ot_layout_find_feature ()</strong>
</dt>
<dd>
Wraps <code>hb_ot_layout_language_find_feature</code>.
</dd>
</dl>
<h2 class="section-header has-description"><a name="Class_Font"></a>Class Font </h2>
<div class="section-description">
Lua wrapper for <code>hb_font_t</code> type
</div>
<dl class="function">
<dt>
<a name = "Font.new"></a>
<strong>Font.new (face)</strong>
</dt>
<dd>
Wraps <code>hb_font_create</code>, and sets up some defaults for scale and shaping functions.
Initializes a new <code>hb_font_t</code> from a <code>Face</code> object. Sets the default scale
to the faces upem value, and sets the font shaping functions by
calling <code>hb_ot_font_set_funcs</code> on it.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">face</span>
<code>Face</code> object.
</li>
</ul>
</dd>
<dt>
<a name = "Font:get_scale"></a>
<strong>Font:get_scale ()</strong>
</dt>
<dd>
Wraps <code>hb_font_get_scale</code>.
<h3>Returns:</h3>
<ol>
two values for the x-scale and y-scale of the font.
</ol>
</dd>
<dt>
<a name = "Font:set_scale"></a>
<strong>Font:set_scale (x_scale, y_scale)</strong>
</dt>
<dd>
Wraps <code>hb_font_set_scale</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">x_scale</span>
desired x-scale of font.
</li>
<li><span class="parameter">y_scale</span>
desired y-scale of font.
</li>
</ul>
</dd>
<dt>
<a name = "Font:get_h_extents"></a>
<strong>Font:get_h_extents ()</strong>
</dt>
<dd>
Wraps <code>hb_font_get_h_extents</code>.
<h3>Returns:</h3>
<ol>
<p> font extents table for horizontal direction, contains the following
or <code>nil</code> if HarfBuzz fails to load font extents:</p>
<ul>
<li><code>ascender</code>: typographic ascender.</li>
<li><code>descender</code>: typographic descender.</li>
<li><code>line_gap</code>: line spacing gap.</li>
</ul>
</ol>
</dd>
<dt>
<a name = "Font:get_v_extents"></a>
<strong>Font:get_v_extents ()</strong>
</dt>
<dd>
Wraps <code>hb_font_get_v_extents</code>.
<h3>Returns:</h3>
<ol>
font extents table for vertical direction, similar to
<code>Font:get_h_extents</code>, or <code>nil</code> if HarfBuzz fails to load font extents:
</ol>
</dd>
<dt>
<a name = "Font:get_glyph_extents"></a>
<strong>Font:get_glyph_extents (glyph)</strong>
</dt>
<dd>
Wraps <code>hb_font_get_glyph_extents</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">glyph</span>
index inside the font.
</li>
</ul>
<h3>Returns:</h3>
<ol>
<p> extents table contains the following or <code>nil</code> if HarfBuzz fails to
load glyph extents:</p>
<ul>
<li><code>x_bearing</code>: left side of glyph from origin.</li>
<li><code>y_bearing</code>: top side of glyph from origin.</li>
<li><code>width</code>: distance from left to right side.</li>
<li><code>height</code>: distance from top to bottom side.</li>
</ul>
</ol>
</dd>
<dt>
<a name = "Font:get_glyph_name"></a>
<strong>Font:get_glyph_name (glyph)</strong>
</dt>
<dd>
Wraps <code>hb_font_get_glyph_name</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">glyph</span>
index inside the font.
</li>
</ul>
<h3>Returns:</h3>
<ol>
name of the glyph or nil.
</ol>
</dd>
<dt>
<a name = "Font:get_glyph_from_name"></a>
<strong>Font:get_glyph_from_name (name)</strong>
</dt>
<dd>
Wraps <code>hb_font_get_glyph_from_name</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">name</span>
of the glyph.
</li>
</ul>
<h3>Returns:</h3>
<ol>
glyph index inside the font or nil.
</ol>
</dd>
<dt>
<a name = "Font:get_glyph_h_advance"></a>
<strong>Font:get_glyph_h_advance (glyph)</strong>
</dt>
<dd>
Wraps <code>hb_font_get_glyph_h_advance</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">glyph</span>
index inside the font.
</li>
</ul>
<h3>Returns:</h3>
<ol>
advance glyph advance of the glyph in horizontal direction.
</ol>
</dd>
<dt>
<a name = "Font:get_glyph_v_advance"></a>
<strong>Font:get_glyph_v_advance (glyph)</strong>
</dt>
<dd>
Wraps <code>hb_font_get_glyph_v_advance</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">glyph</span>
index inside the font.
</li>
</ul>
<h3>Returns:</h3>
<ol>
advance glyph advance of the glyph in vertical direction.
</ol>
</dd>
<dt>
<a name = "Font:get_nominal_glyph"></a>
<strong>Font:get_nominal_glyph (codepoint.)</strong>
</dt>
<dd>
Wraps <code>hb_font_get_nominal_glyph</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">codepoint.</span>
</li>
</ul>
<h3>Returns:</h3>
<ol>
glyph index or <code>nil</code> if <code>codepoint</code> is not supported by the font.
</ol>
</dd>
<dt>
<a name = "Font:ot_color_glyph_get_png"></a>
<strong>Font:ot_color_glyph_get_png ()</strong>
</dt>
<dd>
Wraps <code>hb_ot_color_glyph_get_png</code>.
</dd>
</dl>
<h2 class="section-header has-description"><a name="Class_Buffer"></a>Class Buffer </h2>
<div class="section-description">
Lua wrapper for <code>hb_buffer_t</code> type.
</div>
<dl class="function">
<dt>
<a name = "Buffer.new"></a>
<strong>Buffer.new ()</strong>
</dt>
<dd>
Wraps <code>hb_buffer_create</code>.
</dd>
<dt>
<a name = "Buffer:add_utf8"></a>
<strong>Buffer:add_utf8 (text[, item_offset=0[, item_length=-1]])</strong>
</dt>
<dd>
Wraps <code>hb_buffer_add_utf8</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">text</span>
UTF8 encoded string.
</li>
<li><span class="parameter">item_offset</span>
0-indexed offset in <code>text</code>, from where to start adding.
(<em>default</em> 0)
</li>
<li><span class="parameter">item_length</span>
length to add from <code>item_offset</code>. <code>-1</code> adds till end of <code>text</code>.
(<em>default</em> -1)
</li>
</ul>
</dd>
<dt>
<a name = "Buffer:add_codepoints"></a>
<strong>Buffer:add_codepoints (text[, item_offset=0[, item_length=-1]])</strong>
</dt>
<dd>
Wraps <code>hb_buffer_add_codepoints</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">text</span>
table with codepoints as lua numbers.
</li>
<li><span class="parameter">item_offset</span>
0-indexed offset in <code>text</code>, from where to start adding.
(<em>default</em> 0)
</li>
<li><span class="parameter">item_length</span>
length to add from <code>item_offset</code>. <code>-1</code> adds till end of&nbsp;<code>text</code>.
(<em>default</em> -1)
</li>
</ul>
</dd>
<dt>
<a name = "Buffer:set_direction"></a>
<strong>Buffer:set_direction (dir)</strong>
</dt>
<dd>
Wraps <code>hb_buffer_set_direction</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">dir</span>
A <code>Direction</code> object.
</li>
</ul>
</dd>
<dt>
<a name = "Buffer:get_direction"></a>
<strong>Buffer:get_direction ()</strong>
</dt>
<dd>
Wraps <code>hb_buffer_get_direction</code>.
<h3>Returns:</h3>
<ol>
A <code>Direction</code> object.
</ol>
</dd>
<dt>
<a name = "Buffer:set_script"></a>
<strong>Buffer:set_script (script)</strong>
</dt>
<dd>
Wraps <code>hb_buffer_set_script</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">script</span>
A <code>Script</code> object.
</li>
</ul>
</dd>
<dt>
<a name = "Buffer:get_script"></a>
<strong>Buffer:get_script ()</strong>
</dt>
<dd>
Wraps <code>hb_buffer_get_script</code>.
<h3>Returns:</h3>
<ol>
A <code>Script</code> object.
</ol>
</dd>
<dt>
<a name = "Buffer:set_language"></a>
<strong>Buffer:set_language (lang)</strong>
</dt>
<dd>
Wraps <code>hb_buffer_set_language</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">lang</span>
A <code>Language</code> object
</li>
</ul>
</dd>
<dt>
<a name = "Buffer:get_language"></a>
<strong>Buffer:get_language ()</strong>
</dt>
<dd>
Wraps <code>hb_buffer_get_language</code>.
<h3>Returns:</h3>
<ol>
A <code>Language</code> object
</ol>
</dd>
<dt>
<a name = "Buffer:reverse"></a>
<strong>Buffer:reverse ()</strong>
</dt>
<dd>
Wraps <code>hb_buffer_reverse</code>.
</dd>
<dt>
<a name = "Buffer:get_length"></a>
<strong>Buffer:get_length ()</strong>
</dt>
<dd>
Wraps <code>hb_buffer_get_length</code>.
</dd>
<dt>
<a name = "Buffer:get_cluster_level"></a>
<strong>Buffer:get_cluster_level ()</strong>
</dt>
<dd>
Wraps <code>hb_buffer_get_cluster_level</code>.
<h3>Returns:</h3>
<ol>
see <a href="#Cluster_Levels">Cluster Levels</a>
</ol>
</dd>
<dt>
<a name = "Buffer:set_cluster_level"></a>
<strong>Buffer:set_cluster_level (level)</strong>
</dt>
<dd>
Wraps <code>hb_buffer_set_cluster_level</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">level</span>
see <a href="#Cluster_Levels">Cluster Levels</a>
</li>
</ul>
</dd>
<dt>
<a name = "Buffer:guess_segment_properties"></a>
<strong>Buffer:guess_segment_properties ()</strong>
</dt>
<dd>
Wraps <code>hb_buffer_guess_segment_properties</code>.
</dd>
<dt>
<a name = "Buffer:get_glyphs"></a>
<strong>Buffer:get_glyphs ()</strong>
</dt>
<dd>
Helper method to get shaped glyph data.
Calls <code>hb_buffer_get_glyph_infos</code>, <code>hb_buffer_get_glyph_positions</code> and
<code>hb_glyph_info_get_glyph_flags</code>, and assembles the data into a Lua table.
<h3>Returns:</h3>
<ol>
<p> table containing data for each glyph, in a nested table. Each nested
table contains the following:</p>
<ul>
<li><code>x_advance</code>: horizontal advance.</li>
<li><code>y_advance</code>: vertical advance.</li>
<li><code>x_offset</code>: horizontal displacement.</li>
<li><code>y_offset</code>: vertical displacement.</li>
<li><code>cluster</code>: glyph cluster index within input.</li>
<li><code>codepoint</code>: glyph index inside the font <em>(this field name is a bit misleading, but thats what Harfbuzz uses)</em>.</li>
<li><code>flags</code>: glyph flags</li>
</ul>
</ol>
</dd>
</dl>
<h2 class="section-header has-description"><a name="Cluster_Levels"></a>Cluster Levels </h2>
<div class="section-description">
See <a href="http://behdad.github.io/harfbuzz/clusters.html">Harfbuzz docs</a> for more details
about what each of these levels mean.
</div>
<dl class="function">
<dt>
<a name = "Buffer.CLUSTER_LEVEL_MONOTONE_GRAPHEMES"></a>
<strong>Buffer.CLUSTER_LEVEL_MONOTONE_GRAPHEMES</strong>
</dt>
<dd>
Wraps <code>HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES</code>.
</dd>
<dt>
<a name = "Buffer.CLUSTER_LEVEL_MONOTONE_CHARACTERS"></a>
<strong>Buffer.CLUSTER_LEVEL_MONOTONE_CHARACTERS</strong>
</dt>
<dd>
Wraps <code>HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS</code>.
</dd>
<dt>
<a name = "Buffer.CLUSTER_LEVEL_CHARACTERS"></a>
<strong>Buffer.CLUSTER_LEVEL_CHARACTERS</strong>
</dt>
<dd>
Wraps <code>HB_BUFFER_CLUSTER_LEVEL_CHARACTERS</code>.
</dd>
<dt>
<a name = "Buffer.CLUSTER_LEVEL_DEFAULT"></a>
<strong>Buffer.CLUSTER_LEVEL_DEFAULT</strong>
</dt>
<dd>
Wraps <code>HB_BUFFER_CLUSTER_LEVEL_DEFAULT</code>.
</dd>
<dt>
<a name = "Buffer.GLYPH_FLAG_UNSAFE_TO_BREAK"></a>
<strong>Buffer.GLYPH_FLAG_UNSAFE_TO_BREAK</strong>
</dt>
<dd>
Wraps <code>HB_GLYPH_FLAG_UNSAFE_TO_BREAK</code>.
</dd>
<dt>
<a name = "Buffer.GLYPH_FLAG_DEFINED"></a>
<strong>Buffer.GLYPH_FLAG_DEFINED</strong>
</dt>
<dd>
Wraps <code>HB_GLYPH_FLAG_DEFINED</code>.
</dd>
</dl>
<h2 class="section-header has-description"><a name="Class_Feature"></a>Class Feature </h2>
<div class="section-description">
Lua wrapper for <code>hb_feature_t</code> type
</div>
<dl class="function">
<dt>
<a name = "Feature.new"></a>
<strong>Feature.new (feature_string)</strong>
</dt>
<dd>
Wraps <code>hb_feature_from_string</code>
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">feature_string</span>
See <a href="https://github.com/ufytex/luaharfbuzz/wiki/Feature-Strings">feature string syntax reference</a>
</li>
</ul>
</dd>
<dt>
<a name = "Feature:__tostring"></a>
<strong>Feature:__tostring ()</strong>
</dt>
<dd>
Wraps <code>hb_feature_to_string</code>.
Enables nice output with <code>tostring(…)</code>.
</dd>
</dl>
<h2 class="section-header has-description"><a name="Class_Tag"></a>Class Tag </h2>
<div class="section-description">
Lua wrapper for <code>hb_tag_t</code> type.
</div>
<dl class="function">
<dt>
<a name = "Tag.new"></a>
<strong>Tag.new (string)</strong>
</dt>
<dd>
Wraps <code>hb_tag_from_string</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">string</span>
to be converted to a <code>Tag</code> object.
</li>
</ul>
<h3>Returns:</h3>
<ol>
a <code>Tag</code> object.
</ol>
</dd>
<dt>
<a name = "Tag:__to_string"></a>
<strong>Tag:__to_string ()</strong>
</dt>
<dd>
Wraps <code>hb_tag_to_string</code>. Enable nice output with <code>tostring(…)</code>.
<h3>Returns:</h3>
<ol>
Returns a string representation for the tag object.
</ol>
</dd>
<dt>
<a name = "Tag:__eq"></a>
<strong>Tag:__eq ()</strong>
</dt>
<dd>
Enables equality comparisions with <code>==</code> between two tags.
<h3>Returns:</h3>
<ol>
<code>true</code> or <code>false</code> depending on whether the two tags are equal.
</ol>
</dd>
</dl>
<h2 class="section-header has-description"><a name="Class_Script"></a>Class Script </h2>
<div class="section-description">
Lua wrapper for <code>hb_script_t</code> type.
</div>
<dl class="function">
<dt>
<a name = "Script.new"></a>
<strong>Script.new (script)</strong>
</dt>
<dd>
Wraps <code>hb_script_from_string</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">script</span>
4-letter script code according to the <a href="http://www.unicode.org/iso15924/iso15924-num.html">ISO 15924 standard</a>.
</li>
</ul>
<h3>Returns:</h3>
<ol>
a <code>Script</code> object.
</ol>
</dd>
<dt>
<a name = "Script.from_iso15924_tag"></a>
<strong>Script.from_iso15924_tag (tag)</strong>
</dt>
<dd>
Wraps <code>hb_script_from_iso15924_tag</code>
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">tag</span>
a <code>Tag</code> object representing a <a href="http://www.unicode.org/iso15924/iso15924-num.html">ISO 15924 script</a>.
</li>
</ul>
</dd>
<dt>
<a name = "Script:to_iso15924_tag"></a>
<strong>Script:to_iso15924_tag ()</strong>
</dt>
<dd>
Wraps <code>hb_script_to_iso15924_tag</code>.
<h3>Returns:</h3>
<ol>
a <code>Tag</code> object representing the script.
</ol>
</dd>
<dt>
<a name = "Script:__to_string"></a>
<strong>Script:__to_string ()</strong>
</dt>
<dd>
Enable nice output with <code>tostring(…)</code>
<h3>Returns:</h3>
<ol>
Returns a 4-letter <a href="http://www.unicode.org/iso15924/iso15924-num.html">ISO 15924 script code</a> for the script object.
</ol>
</dd>
<dt>
<a name = "Script:__eq"></a>
<strong>Script:__eq ()</strong>
</dt>
<dd>
Enables equality comparisions with <code>==</code> between two scripts.
<h3>Returns:</h3>
<ol>
<code>true</code> or <code>false</code> depending on whether the two scripts are equal.
</ol>
</dd>
</dl>
<h2 class="section-header has-description"><a name="Predefined_Script_Codes"></a>Predefined Script Codes </h2>
<div class="section-description">
Predefined directions that correspond to their original definitions in Harfbuzz.
</div>
<dl class="function">
<dt>
<a name = "Script.COMMON"></a>
<strong>Script.COMMON</strong>
</dt>
<dd>
Wraps <code>HB_SCRIPT_COMMON</code>.
</dd>
<dt>
<a name = "Script.INHERITED"></a>
<strong>Script.INHERITED</strong>
</dt>
<dd>
Wraps <code>HB_SCRIPT_INHERITED</code>.
</dd>
<dt>
<a name = "Script.UNKNOWN"></a>
<strong>Script.UNKNOWN</strong>
</dt>
<dd>
Wraps <code>HB_SCRIPT_UNKNOWN</code>.
</dd>
<dt>
<a name = "Script.INVALID"></a>
<strong>Script.INVALID</strong>
</dt>
<dd>
Wraps <code>HB_SCRIPT_INVALID</code>.
</dd>
</dl>
<h2 class="section-header has-description"><a name="Class_Direction"></a>Class Direction </h2>
<div class="section-description">
Lua wrapper for <code>hb_direction_t</code> type.
</div>
<dl class="function">
<dt>
<a name = "Direction.new"></a>
<strong>Direction.new (dir)</strong>
</dt>
<dd>
Wraps <code>hb_direction_from_string</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">dir</span>
can be one of <code>ltr</code>, <code>rtl</code>, <code>ttb</code>, <code>btt</code> or <code>invalid</code>.
</li>
</ul>
<h3>Returns:</h3>
<ol>
a <code>Direction</code> object.
</ol>
</dd>
<dt>
<a name = "Direction:__to_string"></a>
<strong>Direction:__to_string ()</strong>
</dt>
<dd>
Wraps <code>hb_direction_to_string</code>. Enable nice output with <code>tostring(…)</code>.
<h3>Returns:</h3>
<ol>
Returns a string representation for direction.
</ol>
</dd>
<dt>
<a name = "Direction:__eq"></a>
<strong>Direction:__eq ()</strong>
</dt>
<dd>
Enables equality comparisions with <code>==</code> between two directions.
<h3>Returns:</h3>
<ol>
<code>true</code> or <code>false</code> depending on whether the two tags are equal.
</ol>
</dd>
<dt>
<a name = "Direction:is_valid"></a>
<strong>Direction:is_valid ()</strong>
</dt>
<dd>
Wraps <code>HB_DIRECTION_IS_VALID</code>.
<h3>Returns:</h3>
<ol>
a boolean value
</ol>
</dd>
<dt>
<a name = "Direction:is_horizontal"></a>
<strong>Direction:is_horizontal ()</strong>
</dt>
<dd>
Wraps <code>HB_DIRECTION_IS_HORIZONTAL</code>.
<h3>Returns:</h3>
<ol>
a boolean value
</ol>
</dd>
<dt>
<a name = "Direction:is_vertical"></a>
<strong>Direction:is_vertical ()</strong>
</dt>
<dd>
Wraps <code>HB_DIRECTION_IS_VERTICAL</code>.
<h3>Returns:</h3>
<ol>
a boolean value
</ol>
</dd>
<dt>
<a name = "Direction:is_forward"></a>
<strong>Direction:is_forward ()</strong>
</dt>
<dd>
Wraps <code>HB_DIRECTION_IS_FORWARD</code>.
<h3>Returns:</h3>
<ol>
a boolean value
</ol>
</dd>
<dt>
<a name = "Direction:is_backward"></a>
<strong>Direction:is_backward ()</strong>
</dt>
<dd>
Wraps <code>HB_DIRECTION_IS_BACKWARD</code>.
<h3>Returns:</h3>
<ol>
a boolean value
</ol>
</dd>
</dl>
<h2 class="section-header has-description"><a name="Predefined_directions"></a>Predefined directions </h2>
<div class="section-description">
Predefined directions that correspond to their original definitions in Harfbuzz.
</div>
<dl class="function">
<dt>
<a name = "Direction.LTR"></a>
<strong>Direction.LTR</strong>
</dt>
<dd>
Wraps <code>HB_DIRECTION_LTR</code>.
</dd>
<dt>
<a name = "Direction.RTL"></a>
<strong>Direction.RTL</strong>
</dt>
<dd>
Wraps <code>HB_DIRECTION_RTL</code>.
</dd>
<dt>
<a name = "Direction.TTB"></a>
<strong>Direction.TTB</strong>
</dt>
<dd>
Wraps <code>HB_DIRECTION_TTB</code>.
</dd>
<dt>
<a name = "Direction.BTT"></a>
<strong>Direction.BTT</strong>
</dt>
<dd>
Wraps <code>HB_DIRECTION_LTR</code>.
</dd>
</dl>
<h2 class="section-header has-description"><a name="Class_Language"></a>Class Language </h2>
<div class="section-description">
Lua wrapper for <code>hb_language_t</code> type.
</div>
<dl class="function">
<dt>
<a name = "Language.new"></a>
<strong>Language.new (lang)</strong>
</dt>
<dd>
Wraps <code>hb_language_from_string</code>.
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">lang</span>
<a href="http://www.microsoft.com/typography/otspec/languagetags.htm">three-letter language tag</a> to be converted to a <code>Language</code> object.
</li>
</ul>
<h3>Returns:</h3>
<ol>
a <code>Language</code> object.
</ol>
</dd>
<dt>
<a name = "Language:__to_string"></a>
<strong>Language:__to_string ()</strong>
</dt>
<dd>
Wraps <code>hb_language_to_string</code>. Enable nice output with <code>tostring(…)</code>.
<h3>Returns:</h3>
<ol>
Returns a string representation for the language object.
</ol>
</dd>
<dt>
<a name = "Language:__eq"></a>
<strong>Language:__eq ()</strong>
</dt>
<dd>
Enables equality comparisions with <code>==</code> between two languages.
<h3>Returns:</h3>
<ol>
<code>true</code> or <code>false</code> depending on whether the two languages are equal.
</ol>
</dd>
</dl>
<h2 class="section-header has-description"><a name="Predefined_languages"></a>Predefined languages </h2>
<div class="section-description">
Predefined languages that correspond to their original definitions in Harfbuzz.
</div>
<dl class="function">
<dt>
<a name = "Language.INVALID"></a>
<strong>Language.INVALID</strong>
</dt>
<dd>
Wraps <code>HB_LANGUAGE_INVALID</code>.
</dd>
</dl>
<h2 class="section-header "><a name="Unicode_functions"></a>Unicode functions </h2>
<dl class="function">
<dt>
<a name = "unicode.script"></a>
<strong>unicode.script (char)</strong>
</dt>
<dd>
Wraps <code>hb_unicode_script</code>
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">char</span>
Unicode codepoint
</li>
</ul>
<h3>Returns:</h3>
<ol>
a <code>Script</code> object.
</ol>
</dd>
</dl>
<h2 class="section-header has-description"><a name="Predefined_Name_IDs"></a>Predefined Name IDs </h2>
<div class="section-description">
Predefined OpenType 'name' table name identifier.
</div>
<dl class="function">
<dt>
<a name = "ot.NAME_ID_COPYRIGHT"></a>
<strong>ot.NAME_ID_COPYRIGHT</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_COPYRIGHT</code>
</dd>
<dt>
<a name = "ot.NAME_ID_FONT_FAMILY"></a>
<strong>ot.NAME_ID_FONT_FAMILY</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_FONT_FAMILY</code>
</dd>
<dt>
<a name = "ot.NAME_ID_FONT_SUBFAMILY"></a>
<strong>ot.NAME_ID_FONT_SUBFAMILY</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_FONT_SUBFAMILY</code>
</dd>
<dt>
<a name = "ot.NAME_ID_UNIQUE_ID"></a>
<strong>ot.NAME_ID_UNIQUE_ID</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_UNIQUE_ID</code>
</dd>
<dt>
<a name = "ot.NAME_ID_FULL_NAME"></a>
<strong>ot.NAME_ID_FULL_NAME</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_FULL_NAME</code>
</dd>
<dt>
<a name = "ot.NAME_ID_VERSION_STRING"></a>
<strong>ot.NAME_ID_VERSION_STRING</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_VERSION_STRING</code>
</dd>
<dt>
<a name = "ot.NAME_ID_POSTSCRIPT_NAME"></a>
<strong>ot.NAME_ID_POSTSCRIPT_NAME</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_POSTSCRIPT_NAME</code>
</dd>
<dt>
<a name = "ot.NAME_ID_TRADEMARK"></a>
<strong>ot.NAME_ID_TRADEMARK</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_TRADEMARK</code>
</dd>
<dt>
<a name = "ot.NAME_ID_MANUFACTURER"></a>
<strong>ot.NAME_ID_MANUFACTURER</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_MANUFACTURER</code>
</dd>
<dt>
<a name = "ot.NAME_ID_DESIGNER"></a>
<strong>ot.NAME_ID_DESIGNER</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_DESIGNER</code>
</dd>
<dt>
<a name = "ot.NAME_ID_DESCRIPTION"></a>
<strong>ot.NAME_ID_DESCRIPTION</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_DESCRIPTION</code>
</dd>
<dt>
<a name = "ot.NAME_ID_VENDOR_URL"></a>
<strong>ot.NAME_ID_VENDOR_URL</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_VENDOR_URL</code>
</dd>
<dt>
<a name = "ot.NAME_ID_DESIGNER_URL"></a>
<strong>ot.NAME_ID_DESIGNER_URL</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_DESIGNER_URL</code>
</dd>
<dt>
<a name = "ot.NAME_ID_LICENSE"></a>
<strong>ot.NAME_ID_LICENSE</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_LICENSE</code>
</dd>
<dt>
<a name = "ot.NAME_ID_LICENSE_URL"></a>
<strong>ot.NAME_ID_LICENSE_URL</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_LICENSE_URL</code>
</dd>
<dt>
<a name = "ot.NAME_ID_TYPOGRAPHIC_FAMILY"></a>
<strong>ot.NAME_ID_TYPOGRAPHIC_FAMILY</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_TYPOGRAPHIC_FAMILY</code>
</dd>
<dt>
<a name = "ot.NAME_ID_TYPOGRAPHIC_SUBFAMILY"></a>
<strong>ot.NAME_ID_TYPOGRAPHIC_SUBFAMILY</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_TYPOGRAPHIC_SUBFAMILY</code>
</dd>
<dt>
<a name = "ot.NAME_ID_MAC_FULL_NAME"></a>
<strong>ot.NAME_ID_MAC_FULL_NAME</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_MAC_FULL_NAME</code>
</dd>
<dt>
<a name = "ot.NAME_ID_SAMPLE_TEXT"></a>
<strong>ot.NAME_ID_SAMPLE_TEXT</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_SAMPLE_TEXT</code>
</dd>
<dt>
<a name = "ot.NAME_ID_CID_FINDFONT_NAME"></a>
<strong>ot.NAME_ID_CID_FINDFONT_NAME</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_CID_FINDFONT_NAME</code>
</dd>
<dt>
<a name = "ot.NAME_ID_WWS_FAMILY"></a>
<strong>ot.NAME_ID_WWS_FAMILY</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_WWS_FAMILY</code>
</dd>
<dt>
<a name = "ot.NAME_ID_WWS_SUBFAMILY"></a>
<strong>ot.NAME_ID_WWS_SUBFAMILY</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_WWS_SUBFAMILY</code>
</dd>
<dt>
<a name = "ot.NAME_ID_LIGHT_BACKGROUND"></a>
<strong>ot.NAME_ID_LIGHT_BACKGROUND</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_LIGHT_BACKGROUND</code>
</dd>
<dt>
<a name = "ot.NAME_ID_DARK_BACKGROUND"></a>
<strong>ot.NAME_ID_DARK_BACKGROUND</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_DARK_BACKGROUND</code>
</dd>
<dt>
<a name = "ot.NAME_ID_VARIATIONS_PS_PREFIX"></a>
<strong>ot.NAME_ID_VARIATIONS_PS_PREFIX</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_VARIATIONS_PS_PREFIX</code>
</dd>
<dt>
<a name = "ot.NAME_ID_INVALID"></a>
<strong>ot.NAME_ID_INVALID</strong>
</dt>
<dd>
Wraps <code>HB_OT_NAME_ID_INVALID</code>
</dd>
<dt>
<a name = "ot.LAYOUT_NO_SCRIPT_INDEX"></a>
<strong>ot.LAYOUT_NO_SCRIPT_INDEX</strong>
</dt>
<dd>
Wraps <code>HB_OT_LAYOUT_NO_SCRIPT_INDEX</code>
</dd>
<dt>
<a name = "ot.LAYOUT_NO_FEATURE_INDEX"></a>
<strong>ot.LAYOUT_NO_FEATURE_INDEX</strong>
</dt>
<dd>
Wraps <code>HB_OT_LAYOUT_NO_FEATURE_INDEX</code>
</dd>
<dt>
<a name = "ot.LAYOUT_DEFAULT_LANGUAGE_INDEX"></a>
<strong>ot.LAYOUT_DEFAULT_LANGUAGE_INDEX</strong>
</dt>
<dd>
Wraps <code>HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX</code>
</dd>
<dt>
<a name = "ot.LAYOUT_NO_VARIATIONS_INDEX"></a>
<strong>ot.LAYOUT_NO_VARIATIONS_INDEX</strong>
</dt>
<dd>
Wraps <code>HB_OT_LAYOUT_NO_VARIATIONS_INDEX</code>
</dd>
</dl>
</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.6</a></i>
<i style="float:right;">Last updated 2019-07-31 18:39:39 </i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>