summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorBowon Ryu <bowon.ryu@samsung.com>2019-02-14 17:33:09 +0900
committerBowon Ryu <bowon.ryu@samsung.com>2019-02-14 17:33:09 +0900
commit1baac414088e430483b85f702898c8448083bfc2 (patch)
tree59799dda277ac726617ff1b6ffb4747e775f551a /docs
parentb9f425ddd6223cd82b3d35f13fbd060d3c0c0e38 (diff)
downloadharfbuzz-1baac414088e430483b85f702898c8448083bfc2.tar.gz
harfbuzz-1baac414088e430483b85f702898c8448083bfc2.tar.bz2
harfbuzz-1baac414088e430483b85f702898c8448083bfc2.zip
Imported Upstream version 2.3.1upstream/2.3.1
Diffstat (limited to 'docs')
-rw-r--r--docs/Makefile.am12
-rw-r--r--docs/Makefile.in18
-rw-r--r--docs/harfbuzz-docs.xml264
-rw-r--r--docs/harfbuzz-sections.txt187
-rw-r--r--docs/harfbuzz.types5
-rw-r--r--docs/html/a-clustering-example-for-levels-0-and-1.html133
-rw-r--r--docs/html/aat-shaping.html45
-rw-r--r--docs/html/adding-text-to-the-buffer.html4
-rw-r--r--docs/html/annotation-glossary.html10
-rw-r--r--docs/html/api-index-0-9-10.html21
-rw-r--r--docs/html/api-index-0-9-11.html14
-rw-r--r--docs/html/api-index-0-9-2.html106
-rw-r--r--docs/html/api-index-0-9-20.html16
-rw-r--r--docs/html/api-index-0-9-22.html12
-rw-r--r--docs/html/api-index-0-9-28.html12
-rw-r--r--docs/html/api-index-0-9-30.html12
-rw-r--r--docs/html/api-index-0-9-31.html20
-rw-r--r--docs/html/api-index-0-9-38.html12
-rw-r--r--docs/html/api-index-0-9-39.html14
-rw-r--r--docs/html/api-index-0-9-41.html14
-rw-r--r--docs/html/api-index-0-9-42.html20
-rw-r--r--docs/html/api-index-0-9-5.html20
-rw-r--r--docs/html/api-index-0-9-7.html38
-rw-r--r--docs/html/api-index-0-9-8.html12
-rw-r--r--docs/html/api-index-1-0-5.html12
-rw-r--r--docs/html/api-index-1-1-2.html12
-rw-r--r--docs/html/api-index-1-1-3.html14
-rw-r--r--docs/html/api-index-1-2-3.html12
-rw-r--r--docs/html/api-index-1-3-3.html12
-rw-r--r--docs/html/api-index-1-4-0.html30
-rw-r--r--docs/html/api-index-1-4-2.html34
-rw-r--r--docs/html/api-index-1-4-3.html12
-rw-r--r--docs/html/api-index-1-5-0.html22
-rw-r--r--docs/html/api-index-1-6-0.html12
-rw-r--r--docs/html/api-index-1-7-5.html30
-rw-r--r--docs/html/api-index-1-7-7.html100
-rw-r--r--docs/html/api-index-1-8-0.html45
-rw-r--r--docs/html/api-index-1-8-1.html41
-rw-r--r--docs/html/api-index-1-8-5.html34
-rw-r--r--docs/html/api-index-1-8-6.html50
-rw-r--r--docs/html/api-index-1-9-0.html57
-rw-r--r--docs/html/api-index-2-0-0.html92
-rw-r--r--docs/html/api-index-2-1-0.html121
-rw-r--r--docs/html/api-index-full.html555
-rw-r--r--docs/html/buffers-language-script-and-direction.html15
-rw-r--r--docs/html/building.html400
-rw-r--r--docs/html/ch01s03.html108
-rw-r--r--docs/html/ch03s02.html150
-rw-r--r--docs/html/ch03s03.html99
-rw-r--r--docs/html/ch08.html106
-rw-r--r--docs/html/ch09.html67
-rw-r--r--docs/html/ch10.html52
-rw-r--r--docs/html/ch11.html32
-rw-r--r--docs/html/ch12.html52
-rw-r--r--docs/html/clusters.html146
-rw-r--r--docs/html/complex-scripts.html57
-rw-r--r--docs/html/customizing-unicode-functions.html4
-rw-r--r--docs/html/deprecated-api-index.html55
-rw-r--r--docs/html/fonts-and-faces.html4
-rw-r--r--docs/html/getting-started.html96
-rw-r--r--docs/html/graphite-shaping.html45
-rw-r--r--docs/html/harfbuzz-hb-aat-layout.html1755
-rw-r--r--docs/html/harfbuzz-hb-blob.html41
-rw-r--r--docs/html/harfbuzz-hb-buffer.html (renamed from docs/html/harfbuzz-Buffers.html)813
-rw-r--r--docs/html/harfbuzz-hb-common.html774
-rw-r--r--docs/html/harfbuzz-hb-coretext.html24
-rw-r--r--docs/html/harfbuzz-hb-deprecated.html290
-rw-r--r--docs/html/harfbuzz-hb-face.html247
-rw-r--r--docs/html/harfbuzz-hb-font.html294
-rw-r--r--docs/html/harfbuzz-hb-ft.html25
-rw-r--r--docs/html/harfbuzz-hb-glib.html24
-rw-r--r--docs/html/harfbuzz-hb-gobject.html106
-rw-r--r--docs/html/harfbuzz-hb-graphite2.html45
-rw-r--r--docs/html/harfbuzz-hb-icu.html24
-rw-r--r--docs/html/harfbuzz-hb-map.html526
-rw-r--r--docs/html/harfbuzz-hb-ot-color.html723
-rw-r--r--docs/html/harfbuzz-hb-ot-font.html26
-rw-r--r--docs/html/harfbuzz-hb-ot-layout.html489
-rw-r--r--docs/html/harfbuzz-hb-ot-math.html30
-rw-r--r--docs/html/harfbuzz-hb-ot-name.html327
-rw-r--r--docs/html/harfbuzz-hb-ot-shape.html28
-rw-r--r--docs/html/harfbuzz-hb-ot-tag.html151
-rw-r--r--docs/html/harfbuzz-hb-ot-var.html345
-rw-r--r--docs/html/harfbuzz-hb-ot.html48
-rw-r--r--docs/html/harfbuzz-hb-set.html42
-rw-r--r--docs/html/harfbuzz-hb-shape-plan.html49
-rw-r--r--docs/html/harfbuzz-hb-shape.html (renamed from docs/html/harfbuzz-Shaping.html)130
-rw-r--r--docs/html/harfbuzz-hb-unicode.html174
-rw-r--r--docs/html/harfbuzz-hb-uniscribe.html24
-rw-r--r--docs/html/harfbuzz-hb-version.html38
-rw-r--r--docs/html/harfbuzz-hb.html48
-rw-r--r--docs/html/harfbuzz.devhelp21147
-rw-r--r--docs/html/hello-harfbuzz.html181
-rw-r--r--docs/html/home.pngbin256 -> 256 bytes
-rw-r--r--docs/html/index.html214
-rw-r--r--docs/html/install-harfbuzz.html55
-rw-r--r--docs/html/left-insensitive.pngbin395 -> 395 bytes
-rw-r--r--docs/html/left.pngbin262 -> 262 bytes
-rw-r--r--docs/html/level-2.html217
-rw-r--r--docs/html/object-tree.html65
-rw-r--r--docs/html/opentype-shaping-models.html100
-rw-r--r--docs/html/plans-and-caching.html4
-rw-r--r--docs/html/pt01.html58
-rw-r--r--docs/html/pt02.html161
-rw-r--r--docs/html/reordering-in-levels-0-and-1.html57
-rw-r--r--docs/html/right-insensitive.pngbin373 -> 373 bytes
-rw-r--r--docs/html/right.pngbin261 -> 261 bytes
-rw-r--r--docs/html/setting-buffer-properties.html4
-rw-r--r--docs/html/shaping-and-shape-plans.html4
-rw-r--r--docs/html/shaping-concepts.html69
-rw-r--r--docs/html/shaping-operations.html98
-rw-r--r--docs/html/style.css4
-rw-r--r--docs/html/text-runs.html47
-rw-r--r--docs/html/the-distinction-between-levels-0-and-1.html119
-rw-r--r--docs/html/unicode-character-categories.html79
-rw-r--r--docs/html/up-insensitive.pngbin374 -> 374 bytes
-rw-r--r--docs/html/up.pngbin260 -> 260 bytes
-rw-r--r--docs/html/using-harfbuzzs-native-opentype-implementation.html4
-rw-r--r--docs/html/using-your-own-font-functions.html6
-rw-r--r--docs/html/what-about-the-other-scripts.html4
-rw-r--r--docs/html/what-harfbuzz-doesnt-do.html111
-rw-r--r--docs/html/what-is-harfbuzz.html146
-rw-r--r--docs/html/why-do-i-need-a-shaping-engine.html174
-rw-r--r--docs/html/why-is-it-called-harfbuzz.html24
-rw-r--r--docs/html/working-with-harfbuzz-clusters.html227
-rw-r--r--docs/usermanual-buffers-language-script-and-direction.xml15
-rw-r--r--docs/usermanual-clusters.xml931
-rw-r--r--docs/usermanual-fonts-and-faces.xml8
-rw-r--r--docs/usermanual-getting-started.xml307
-rw-r--r--docs/usermanual-glyph-information.xml8
-rw-r--r--docs/usermanual-hello-harfbuzz.xml183
-rw-r--r--docs/usermanual-install-harfbuzz.xml442
-rw-r--r--docs/usermanual-opentype-features.xml8
-rw-r--r--docs/usermanual-shaping-concepts.xml375
-rw-r--r--docs/usermanual-what-is-harfbuzz.xml475
-rw-r--r--docs/version.xml2
136 files changed, 13875 insertions, 3724 deletions
diff --git a/docs/Makefile.am b/docs/Makefile.am
index a993538..9b54b40 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -62,7 +62,6 @@ CFILE_GLOB=$(top_srcdir)/src/hb-*.cc
# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
-EXTRA_HFILES=$(top_builddir)/src/hb-version.h
# Images to copy into HTML directory.
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
@@ -73,14 +72,15 @@ HTML_IMAGES= \
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
content_files= \
+ usermanual-what-is-harfbuzz.xml \
+ usermanual-install-harfbuzz.xml \
+ usermanual-getting-started.xml \
+ usermanual-shaping-concepts.xml \
usermanual-buffers-language-script-and-direction.xml \
- usermanual-clusters.xml \
usermanual-fonts-and-faces.xml \
- usermanual-glyph-information.xml \
- usermanual-hello-harfbuzz.xml \
- usermanual-install-harfbuzz.xml \
+ usermanual-clusters.xml \
usermanual-opentype-features.xml \
- usermanual-what-is-harfbuzz.xml \
+ usermanual-glyph-information.xml \
version.xml
# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
diff --git a/docs/Makefile.in b/docs/Makefile.in
index 100c353..3e2825e 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -104,8 +104,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_link_flag.m4 \
$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/gtk-doc.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -253,6 +252,8 @@ PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
PTHREAD_CC = @PTHREAD_CC@
PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
PTHREAD_LIBS = @PTHREAD_LIBS@
@@ -382,7 +383,6 @@ CFILE_GLOB = $(top_srcdir)/src/hb-*.cc
# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
-EXTRA_HFILES = $(top_builddir)/src/hb-version.h
# Images to copy into HTML directory.
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
@@ -394,14 +394,15 @@ HTML_IMAGES = \
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
content_files = \
+ usermanual-what-is-harfbuzz.xml \
+ usermanual-install-harfbuzz.xml \
+ usermanual-getting-started.xml \
+ usermanual-shaping-concepts.xml \
usermanual-buffers-language-script-and-direction.xml \
- usermanual-clusters.xml \
usermanual-fonts-and-faces.xml \
- usermanual-glyph-information.xml \
- usermanual-hello-harfbuzz.xml \
- usermanual-install-harfbuzz.xml \
+ usermanual-clusters.xml \
usermanual-opentype-features.xml \
- usermanual-what-is-harfbuzz.xml \
+ usermanual-glyph-information.xml \
version.xml
@@ -809,6 +810,7 @@ html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_con
if test -f $(abs_builddir)/$$file ; then \
cp $(abs_builddir)/$$file $(abs_builddir)/html; \
fi; \
+ test -f $$file && cp $$file $(abs_builddir)/html; \
done;
$(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
$(AM_V_at)touch html-build.stamp
diff --git a/docs/harfbuzz-docs.xml b/docs/harfbuzz-docs.xml
index 9452a92..2735338 100644
--- a/docs/harfbuzz-docs.xml
+++ b/docs/harfbuzz-docs.xml
@@ -12,28 +12,21 @@
<graphic fileref="HarfBuzz.png" format="PNG" align="center"/>
<para>
HarfBuzz is an <ulink url="http://www.microsoft.com/typography/otspec/">OpenType</ulink>
- text shaping engine.
- </para>
- <para>
- The current HarfBuzz codebase, formerly known as harfbuzz-ng, is
- versioned 1.x.x and is stable and under active maintenance. This is
- what is used in latest versions of Firefox, GNOME, ChromeOS, Chrome,
- LibreOffice, XeTeX, Android, and KDE, among other places. The canonical
- source tree is available
- <ulink url="http://cgit.freedesktop.org/harfbuzz/">here</ulink>.
- Also available on
- <ulink url="https://github.com/harfbuzz/harfbuzz">github</ulink>.
- See <xref linkend="download" endterm="download.title"/> for release tarballs.
+ text shaping engine. Using the HarfBuzz library allows
+ programs to convert a sequence of Unicode input into
+ properly formatted and positioned glyph output&mdash;for any writing
+ system and language.
</para>
+
<para>
- The old HarfBuzz codebase, these days known as harfbuzz-old, was
- derived from <ulink url="http://freetype.org/">FreeType</ulink>,
- <ulink url="http://pango.org/">Pango</ulink>, and
- <ulink url="http://qt-project.org/">Qt</ulink> and is available
- <ulink url="http://cgit.freedesktop.org/harfbuzz.old/">here</ulink>.
- It is not actively developed or maintained, and is extremely buggy. All
- users are encouraged to switch over to the new HarfBuzz as soon as
- possible. There are no release tarballs of old HarfBuzz whatsoever.
+ The canonical source-code tree is available at
+ <ulink
+ url="https://github.com/harfbuzz/harfbuzz">github.com/harfbuzz/harfbuzz</ulink>
+ and is also available at
+ <ulink
+ url="http://cgit.freedesktop.org/harfbuzz/">cgit.freedesktop.org/harfbuzz</ulink>.
+ See <xref linkend="download" endterm="download.title"/> for
+ release tarballs.
</para>
</abstract>
</bookinfo>
@@ -42,7 +35,8 @@
<title>User's manual</title>
<xi:include href="usermanual-what-is-harfbuzz.xml"/>
<xi:include href="usermanual-install-harfbuzz.xml"/>
- <xi:include href="usermanual-hello-harfbuzz.xml"/>
+ <xi:include href="usermanual-getting-started.xml"/>
+ <xi:include href="usermanual-shaping-concepts.xml"/>
<xi:include href="usermanual-buffers-language-script-and-direction.xml"/>
<xi:include href="usermanual-fonts-and-faces.xml"/>
<xi:include href="usermanual-clusters.xml"/>
@@ -58,152 +52,124 @@
<ulink role="online-location" url="http://[SERVER]/libharfbuzz/index.html">http://[SERVER]/libharfbuzz/</ulink>.-->
</releaseinfo>
</partinfo>
+
+ <note>
+ <para>
+ The current HarfBuzz codebase is versioned 2.x.x and is stable
+ and under active maintenance. This is what is used in latest
+ versions of Firefox, GNOME, ChromeOS, Chrome, LibreOffice,
+ XeTeX, Android, and KDE, among other places.
+ </para>
+ <para>
+ Prior to 2012, the original HarfBuzz codebase (which, these
+ days, is referred to as <emphasis>harfbuzz-old</emphasis>) was
+ derived from code in <ulink
+ url="http://freetype.org/">FreeType</ulink>, <ulink
+ url="http://pango.org/">Pango</ulink>, and
+ <ulink url="http://qt-project.org/">Qt</ulink>.
+ It is <emphasis>not</emphasis> actively developed or
+ maintained, and is extremely buggy. All users of harfbuzz-old
+ are encouraged to switch over to the new HarfBuzz as soon as possible.
+ </para>
+ <para>
+ To make this distinction clearer in discussions, the current
+ HarfBuzz codebase is sometimes referred to as
+ <emphasis>harfbuzz-ng</emphasis>.
+ </para>
+ <para>
+ For reference purposes, the harfbuzz-old source tree is archived
+ <ulink
+ url="http://cgit.freedesktop.org/harfbuzz.old/">here</ulink>. There
+ are no release tarballs of harfbuzz-old whatsoever.
+ </para>
+ </note>
+
<title>Reference manual</title>
<chapter>
- <title>HarfBuzz API</title>
- <xi:include href="xml/hb.xml"/>
- <xi:include href="xml/hb-common.xml"/>
- <xi:include href="xml/hb-unicode.xml"/>
- <xi:include href="xml/hb-buffer.xml"/>
+ <title>Core API</title>
<xi:include href="xml/hb-blob.xml"/>
+ <xi:include href="xml/hb-buffer.xml"/>
+ <xi:include href="xml/hb-common.xml"/>
+ <xi:include href="xml/hb-deprecated.xml"/>
<xi:include href="xml/hb-face.xml"/>
<xi:include href="xml/hb-font.xml"/>
+ <xi:include href="xml/hb-map.xml"/>
+ <xi:include href="xml/hb-set.xml"/>
+ <xi:include href="xml/hb-shape-plan.xml"/>
<xi:include href="xml/hb-shape.xml"/>
-
+ <xi:include href="xml/hb-unicode.xml"/>
<xi:include href="xml/hb-version.xml"/>
- <xi:include href="xml/hb-deprecated.xml"/>
-
- <xi:include href="xml/hb-set.xml"/>
+ </chapter>
- <xi:include href="xml/hb-ot.xml"/>
- <xi:include href="xml/hb-ot-layout.xml"/>
- <xi:include href="xml/hb-ot-tag.xml"/>
+ <chapter>
+ <title>OpenType API</title>
+ <xi:include href="xml/hb-ot-color.xml"/>
<xi:include href="xml/hb-ot-font.xml"/>
- <xi:include href="xml/hb-ot-shape.xml"/>
+ <xi:include href="xml/hb-ot-layout.xml"/>
<xi:include href="xml/hb-ot-math.xml"/>
+ <xi:include href="xml/hb-ot-name.xml"/>
+ <xi:include href="xml/hb-ot-shape.xml"/>
+ <xi:include href="xml/hb-ot-var.xml"/>
+ </chapter>
- <xi:include href="xml/hb-shape-plan.xml"/>
-
- <xi:include href="xml/hb-glib.xml"/>
- <xi:include href="xml/hb-icu.xml"/>
+ <chapter>
+ <title>Apple Advanced Typography API</title>
+ <xi:include href="xml/hb-aat-layout.xml"/>
+ </chapter>
+ <chapter>
+ <title>Integration API</title>
+ <xi:include href="xml/hb-coretext.xml"/>
<xi:include href="xml/hb-ft.xml"/>
-
+ <xi:include href="xml/hb-glib.xml"/>
+ <xi:include href="xml/hb-gobject.xml"/>
<xi:include href="xml/hb-graphite2.xml"/>
+ <xi:include href="xml/hb-icu.xml"/>
<xi:include href="xml/hb-uniscribe.xml"/>
- <xi:include href="xml/hb-coretext.xml"/>
-
- <xi:include href="xml/hb-gobject.xml"/>
-
</chapter>
- <chapter id="object-tree">
+
+ <!--chapter id="object-tree">
<title>Object Hierarchy</title>
<xi:include href="xml/tree_index.sgml"/>
- </chapter>
- <index id="api-index-full">
- <title>API Index</title>
- <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-2" role="0.9.2">
- <title>Index of new symbols in 0.9.2</title>
- <xi:include href="xml/api-index-0.9.2.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-5" role="0.9.5">
- <title>Index of new symbols in 0.9.5</title>
- <xi:include href="xml/api-index-0.9.5.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-7" role="0.9.7">
- <title>Index of new symbols in 0.9.7</title>
- <xi:include href="xml/api-index-0.9.7.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-8" role="0.9.8">
- <title>Index of new symbols in 0.9.8</title>
- <xi:include href="xml/api-index-0.9.8.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-10" role="0.9.10">
- <title>Index of new symbols in 0.9.10</title>
- <xi:include href="xml/api-index-0.9.10.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-11" role="0.9.11">
- <title>Index of new symbols in 0.9.11</title>
- <xi:include href="xml/api-index-0.9.11.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-20" role="0.9.20">
- <title>Index of new symbols in 0.9.20</title>
- <xi:include href="xml/api-index-0.9.20.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-22" role="0.9.22">
- <title>Index of new symbols in 0.9.22</title>
- <xi:include href="xml/api-index-0.9.22.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-28" role="0.9.28">
- <title>Index of new symbols in 0.9.28</title>
- <xi:include href="xml/api-index-0.9.28.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-30" role="0.9.30">
- <title>Index of new symbols in 0.9.30</title>
- <xi:include href="xml/api-index-0.9.30.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-31" role="0.9.31">
- <title>Index of new symbols in 0.9.31</title>
- <xi:include href="xml/api-index-0.9.31.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-38" role="0.9.38">
- <title>Index of new symbols in 0.9.38</title>
- <xi:include href="xml/api-index-0.9.38.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-39" role="0.9.39">
- <title>Index of new symbols in 0.9.39</title>
- <xi:include href="xml/api-index-0.9.39.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-41" role="0.9.41">
- <title>Index of new symbols in 0.9.41</title>
- <xi:include href="xml/api-index-0.9.41.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-0-9-42" role="0.9.42">
- <title>Index of new symbols in 0.9.42</title>
- <xi:include href="xml/api-index-0.9.42.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-1-0-5" role="1.0.5">
- <title>Index of new symbols in 1.0.5</title>
- <xi:include href="xml/api-index-1.0.5.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-1-1-2" role="1.1.2">
- <title>Index of new symbols in 1.1.2</title>
- <xi:include href="xml/api-index-1.1.2.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-1-1-3" role="1.1.3">
- <title>Index of new symbols in 1.1.3</title>
- <xi:include href="xml/api-index-1.1.3.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-1-2-3" role="1.2.3">
- <title>Index of new symbols in 1.2.3</title>
- <xi:include href="xml/api-index-1.2.3.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-1-3-3" role="1.3.3">
- <title>Index of new symbols in 1.3.3</title>
- <xi:include href="xml/api-index-1.3.3.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-1-4-2" role="1.4.2">
- <title>Index of new symbols in 1.4.2</title>
- <xi:include href="xml/api-index-1.4.2.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-1-4-3" role="1.4.3">
- <title>Index of new symbols in 1.4.3</title>
- <xi:include href="xml/api-index-1.4.3.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-1-5-0" role="1.5.0">
- <title>Index of new symbols in 1.5.0</title>
- <xi:include href="xml/api-index-1.5.0.xml"><xi:fallback /></xi:include>
- </index>
- <index id="api-index-1-6-0" role="1.6.0">
- <title>Index of new symbols in 1.6.0</title>
- <xi:include href="xml/api-index-1.6.0.xml"><xi:fallback /></xi:include>
- </index>
- <index id="deprecated-api-index" role="deprecated">
- <title>Index of deprecated API</title>
- <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
- </index>
+ </chapter-->
+
+ <index id="api-index-full"><title>API Index</title><xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include></index>
+ <index id="deprecated-api-index" role="deprecated"><title>Index of deprecated API</title><xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include></index>
+
+ <index id="api-index-2-1-0" role="2.1.0"><title>Index of new symbols in 2.1.0</title><xi:include href="xml/api-index-2.1.0.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-2-0-0" role="2.0.0"><title>Index of new symbols in 2.0.0</title><xi:include href="xml/api-index-2.0.0.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-1-9-0" role="1.9.0"><title>Index of new symbols in 1.9.0</title><xi:include href="xml/api-index-1.9.0.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-1-8-6" role="1.8.6"><title>Index of new symbols in 1.8.6</title><xi:include href="xml/api-index-1.8.6.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-1-8-5" role="1.8.5"><title>Index of new symbols in 1.8.5</title><xi:include href="xml/api-index-1.8.5.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-1-8-1" role="1.8.1"><title>Index of new symbols in 1.8.1</title><xi:include href="xml/api-index-1.8.1.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-1-8-0" role="1.8.0"><title>Index of new symbols in 1.8.0</title><xi:include href="xml/api-index-1.8.0.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-1-7-7" role="1.7.7"><title>Index of new symbols in 1.7.7</title><xi:include href="xml/api-index-1.7.7.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-1-7-5" role="1.7.5"><title>Index of new symbols in 1.7.5</title><xi:include href="xml/api-index-1.7.5.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-1-6-0" role="1.6.0"><title>Index of new symbols in 1.6.0</title><xi:include href="xml/api-index-1.6.0.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-1-5-0" role="1.5.0"><title>Index of new symbols in 1.5.0</title><xi:include href="xml/api-index-1.5.0.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-1-4-3" role="1.4.3"><title>Index of new symbols in 1.4.3</title><xi:include href="xml/api-index-1.4.3.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-1-4-2" role="1.4.2"><title>Index of new symbols in 1.4.2</title><xi:include href="xml/api-index-1.4.2.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-1-4-0" role="1.4.0"><title>Index of new symbols in 1.4.0</title><xi:include href="xml/api-index-1.4.0.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-1-3-3" role="1.3.3"><title>Index of new symbols in 1.3.3</title><xi:include href="xml/api-index-1.3.3.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-1-2-3" role="1.2.3"><title>Index of new symbols in 1.2.3</title><xi:include href="xml/api-index-1.2.3.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-1-1-3" role="1.1.3"><title>Index of new symbols in 1.1.3</title><xi:include href="xml/api-index-1.1.3.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-1-1-2" role="1.1.2"><title>Index of new symbols in 1.1.2</title><xi:include href="xml/api-index-1.1.2.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-1-0-5" role="1.0.5"><title>Index of new symbols in 1.0.5</title><xi:include href="xml/api-index-1.0.5.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-0-9-42" role="0.9.42"><title>Index of new symbols in 0.9.42</title><xi:include href="xml/api-index-0.9.42.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-0-9-41" role="0.9.41"><title>Index of new symbols in 0.9.41</title><xi:include href="xml/api-index-0.9.41.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-0-9-39" role="0.9.39"><title>Index of new symbols in 0.9.39</title><xi:include href="xml/api-index-0.9.39.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-0-9-38" role="0.9.38"><title>Index of new symbols in 0.9.38</title><xi:include href="xml/api-index-0.9.38.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-0-9-31" role="0.9.31"><title>Index of new symbols in 0.9.31</title><xi:include href="xml/api-index-0.9.31.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-0-9-30" role="0.9.30"><title>Index of new symbols in 0.9.30</title><xi:include href="xml/api-index-0.9.30.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-0-9-28" role="0.9.28"><title>Index of new symbols in 0.9.28</title><xi:include href="xml/api-index-0.9.28.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-0-9-22" role="0.9.22"><title>Index of new symbols in 0.9.22</title><xi:include href="xml/api-index-0.9.22.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-0-9-20" role="0.9.20"><title>Index of new symbols in 0.9.20</title><xi:include href="xml/api-index-0.9.20.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-0-9-11" role="0.9.11"><title>Index of new symbols in 0.9.11</title><xi:include href="xml/api-index-0.9.11.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-0-9-10" role="0.9.10"><title>Index of new symbols in 0.9.10</title><xi:include href="xml/api-index-0.9.10.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-0-9-8" role="0.9.8"><title>Index of new symbols in 0.9.8</title><xi:include href="xml/api-index-0.9.8.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-0-9-7" role="0.9.7"><title>Index of new symbols in 0.9.7</title><xi:include href="xml/api-index-0.9.7.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-0-9-5" role="0.9.5"><title>Index of new symbols in 0.9.5</title><xi:include href="xml/api-index-0.9.5.xml"><xi:fallback /></xi:include></index>
+ <index id="api-index-0-9-2" role="0.9.2"><title>Index of new symbols in 0.9.2</title><xi:include href="xml/api-index-0.9.2.xml"><xi:fallback /></xi:include></index>
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
</part>
diff --git a/docs/harfbuzz-sections.txt b/docs/harfbuzz-sections.txt
index 5715d77..fd7682e 100644
--- a/docs/harfbuzz-sections.txt
+++ b/docs/harfbuzz-sections.txt
@@ -1,8 +1,20 @@
-<SECTION>
-<FILE>hb</FILE>
<SUBSECTION Private>
HB_H_IN
-HB_EXTERN
+HB_OT_H_IN
+</SECTION>
+
+<SECTION>
+<FILE>hb-aat-layout</FILE>
+HB_AAT_LAYOUT_NO_SELECTOR_INDEX
+hb_aat_layout_feature_type_t
+hb_aat_layout_feature_selector_t
+hb_aat_layout_feature_selector_info_t
+hb_aat_layout_feature_type_get_name_id
+hb_aat_layout_feature_type_get_selector_infos
+hb_aat_layout_get_feature_types
+hb_aat_layout_has_positioning
+hb_aat_layout_has_substitution
+hb_aat_layout_has_tracking
</SECTION>
<SECTION>
@@ -67,6 +79,8 @@ hb_buffer_set_user_data
hb_buffer_get_user_data
hb_buffer_get_glyph_infos
hb_buffer_get_glyph_positions
+hb_buffer_get_invisible_glyph
+hb_buffer_set_invisible_glyph
hb_buffer_set_replacement_codepoint
hb_buffer_get_replacement_codepoint
hb_buffer_normalize_glyphs
@@ -144,6 +158,10 @@ uint16_t
uint32_t
uint64_t
uint8_t
+<SUBSECTION Private>
+HB_EXTERN
+HB_DEPRECATED
+HB_DEPRECATED_FOR
</SECTION>
<SECTION>
@@ -153,7 +171,30 @@ HB_BUFFER_SERIALIZE_FLAGS_DEFAULT
HB_SCRIPT_CANADIAN_ABORIGINAL
hb_font_funcs_set_glyph_func
hb_font_get_glyph_func_t
+hb_ot_layout_table_choose_script
+hb_ot_layout_table_find_script
+hb_ot_tag_from_language
+hb_ot_tags_from_script
+HB_OT_VAR_NO_AXIS_INDEX
+hb_ot_var_axis_t
+hb_ot_var_find_axis
+hb_ot_var_get_axes
hb_set_invert
+hb_unicode_eastasian_width_func_t
+hb_unicode_eastasian_width
+hb_unicode_funcs_set_eastasian_width_func
+HB_UNICODE_MAX_DECOMPOSITION_LEN
+hb_unicode_decompose_compatibility_func_t
+hb_unicode_decompose_compatibility
+hb_unicode_funcs_set_decompose_compatibility_func
+hb_font_funcs_set_glyph_h_kerning_func
+hb_font_funcs_set_glyph_v_kerning_func
+hb_font_get_glyph_h_kerning
+hb_font_get_glyph_h_kerning_func_t
+hb_font_get_glyph_kerning_for_direction
+hb_font_get_glyph_kerning_func_t
+hb_font_get_glyph_v_kerning
+hb_font_get_glyph_v_kerning_func_t
</SECTION>
<SECTION>
@@ -170,6 +211,7 @@ hb_coretext_font_get_ct_font
<SECTION>
<FILE>hb-face</FILE>
hb_face_count
+hb_face_t
hb_face_create
hb_face_create_for_tables
hb_face_destroy
@@ -188,7 +230,11 @@ hb_face_set_glyph_count
hb_face_set_index
hb_face_set_upem
hb_face_set_user_data
-hb_face_t
+hb_face_collect_unicodes
+hb_face_collect_variation_selectors
+hb_face_collect_variation_unicodes
+hb_face_builder_create
+hb_face_builder_add_table
</SECTION>
<SECTION>
@@ -208,13 +254,14 @@ hb_font_funcs_set_glyph_contour_point_func
hb_font_funcs_set_glyph_extents_func
hb_font_funcs_set_glyph_from_name_func
hb_font_funcs_set_glyph_h_advance_func
-hb_font_funcs_set_glyph_h_kerning_func
+hb_font_funcs_set_glyph_h_advances_func
hb_font_funcs_set_glyph_h_origin_func
hb_font_funcs_set_glyph_name_func
hb_font_funcs_set_glyph_v_advance_func
-hb_font_funcs_set_glyph_v_kerning_func
+hb_font_funcs_set_glyph_v_advances_func
hb_font_funcs_set_glyph_v_origin_func
hb_font_funcs_set_nominal_glyph_func
+hb_font_funcs_set_nominal_glyphs_func
hb_font_funcs_set_user_data
hb_font_funcs_set_variation_glyph_func
hb_font_funcs_t
@@ -223,6 +270,8 @@ hb_font_get_face
hb_font_get_glyph
hb_font_get_glyph_advance_for_direction
hb_font_get_glyph_advance_func_t
+hb_font_get_glyph_advances_for_direction
+hb_font_get_glyph_advances_func_t
hb_font_get_glyph_contour_point
hb_font_get_glyph_contour_point_for_origin
hb_font_get_glyph_contour_point_func_t
@@ -233,24 +282,24 @@ hb_font_get_glyph_from_name
hb_font_get_glyph_from_name_func_t
hb_font_get_glyph_h_advance
hb_font_get_glyph_h_advance_func_t
-hb_font_get_glyph_h_kerning
-hb_font_get_glyph_h_kerning_func_t
+hb_font_get_glyph_h_advances
+hb_font_get_glyph_h_advances_func_t
hb_font_get_glyph_h_origin
hb_font_get_glyph_h_origin_func_t
-hb_font_get_glyph_kerning_for_direction
-hb_font_get_glyph_kerning_func_t
hb_font_get_glyph_name
hb_font_get_glyph_name_func_t
hb_font_get_glyph_origin_for_direction
hb_font_get_glyph_origin_func_t
hb_font_get_glyph_v_advance
hb_font_get_glyph_v_advance_func_t
-hb_font_get_glyph_v_kerning
-hb_font_get_glyph_v_kerning_func_t
+hb_font_get_glyph_v_advances
+hb_font_get_glyph_v_advances_func_t
hb_font_get_glyph_v_origin
hb_font_get_glyph_v_origin_func_t
hb_font_get_nominal_glyph
hb_font_get_nominal_glyph_func_t
+hb_font_get_nominal_glyphs
+hb_font_get_nominal_glyphs_func_t
hb_font_get_parent
hb_font_get_ppem
hb_font_get_ptem
@@ -327,7 +376,9 @@ HB_GOBJECT_TYPE_FACE
HB_GOBJECT_TYPE_FONT
HB_GOBJECT_TYPE_FONT_FUNCS
HB_GOBJECT_TYPE_GLYPH_FLAGS
+HB_GOBJECT_TYPE_MAP
HB_GOBJECT_TYPE_MEMORY_MODE
+HB_GOBJECT_TYPE_OT_COLOR_PALETTE_FLAGS
HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS
HB_GOBJECT_TYPE_OT_MATH_CONSTANT
HB_GOBJECT_TYPE_OT_MATH_GLYPH_PART
@@ -358,7 +409,9 @@ hb_gobject_face_get_type
hb_gobject_font_funcs_get_type
hb_gobject_font_get_type
hb_gobject_glyph_flags_get_type
+hb_gobject_map_get_type
hb_gobject_memory_mode_get_type
+hb_gobject_ot_color_palette_flags_get_type
hb_gobject_ot_layout_glyph_class_get_type
hb_gobject_ot_math_constant_get_type
hb_gobject_ot_math_glyph_part_get_type
@@ -382,11 +435,6 @@ HB_GOBJECT_H_IN
</SECTION>
<SECTION>
-<FILE>hb-gobject</FILE>
-
-</SECTION>
-
-<SECTION>
<FILE>hb-graphite2</FILE>
HB_GRAPHITE2_TAG_SILF
hb_graphite2_face_get_gr_face
@@ -421,9 +469,27 @@ hb_map_t
</SECTION>
<SECTION>
-<FILE>hb-ot</FILE>
-<SUBSECTION Private>
-HB_OT_H_IN
+<FILE>hb-ot-color</FILE>
+hb_color_t
+HB_COLOR
+hb_color_get_alpha
+hb_color_get_blue
+hb_color_get_green
+hb_color_get_red
+hb_ot_color_glyph_get_layers
+hb_ot_color_glyph_reference_png
+hb_ot_color_glyph_reference_svg
+hb_ot_color_has_layers
+hb_ot_color_has_palettes
+hb_ot_color_has_png
+hb_ot_color_has_svg
+hb_ot_color_layer_t
+hb_ot_color_palette_color_get_name_id
+hb_ot_color_palette_flags_t
+hb_ot_color_palette_get_colors
+hb_ot_color_palette_get_count
+hb_ot_color_palette_get_flags
+hb_ot_color_palette_get_name_id
</SECTION>
<SECTION>
@@ -432,22 +498,40 @@ hb_ot_font_set_funcs
</SECTION>
<SECTION>
-<FILE>hb-ot-shape</FILE>
-hb_ot_shape_glyphs_closure
+<FILE>hb-ot-name</FILE>
+hb_ot_name_id_t
+HB_OT_NAME_ID_INVALID
+hb_ot_name_entry_t
+hb_ot_name_list_names
+hb_ot_name_get_utf16
+hb_ot_name_get_utf32
+hb_ot_name_get_utf8
</SECTION>
<SECTION>
<FILE>hb-ot-layout</FILE>
+HB_OT_MAX_TAGS_PER_LANGUAGE
+HB_OT_MAX_TAGS_PER_SCRIPT
+HB_OT_TAG_DEFAULT_LANGUAGE
+HB_OT_TAG_DEFAULT_SCRIPT
+hb_ot_tag_to_language
+hb_ot_tag_to_script
+hb_ot_tags_from_script_and_language
+hb_ot_tags_to_script_and_language
HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX
HB_OT_LAYOUT_NO_FEATURE_INDEX
HB_OT_LAYOUT_NO_SCRIPT_INDEX
HB_OT_LAYOUT_NO_VARIATIONS_INDEX
+HB_OT_TAG_BASE
HB_OT_TAG_GDEF
HB_OT_TAG_GPOS
HB_OT_TAG_GSUB
HB_OT_TAG_JSTF
hb_ot_layout_collect_lookups
+hb_ot_layout_collect_features
+hb_ot_layout_feature_get_characters
hb_ot_layout_feature_get_lookups
+hb_ot_layout_feature_get_name_ids
hb_ot_layout_feature_with_variations_get_lookups
hb_ot_layout_get_attach_points
hb_ot_layout_get_glyph_class
@@ -469,12 +553,12 @@ hb_ot_layout_lookups_substitute_closure
hb_ot_layout_lookup_would_substitute
hb_ot_layout_script_find_language
hb_ot_layout_script_get_language_tags
-hb_ot_layout_table_choose_script
+hb_ot_layout_script_select_language
hb_ot_layout_table_find_feature_variations
-hb_ot_layout_table_find_script
hb_ot_layout_table_get_feature_tags
hb_ot_layout_table_get_script_tags
hb_ot_layout_table_get_lookup_count
+hb_ot_layout_table_select_script
hb_ot_shape_plan_collect_lookups
hb_ot_layout_language_get_required_feature_index
<SUBSECTION Private>
@@ -484,23 +568,6 @@ Xhb_ot_layout_lookup_substitute
</SECTION>
<SECTION>
-<FILE>hb-ot-var</FILE>
-HB_OT_TAG_VAR_AXIS_ITALIC
-HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE
-HB_OT_TAG_VAR_AXIS_SLANT
-HB_OT_TAG_VAR_AXIS_WEIGHT
-HB_OT_TAG_VAR_AXIS_WIDTH
-HB_OT_VAR_NO_AXIS_INDEX
-hb_ot_var_axis_t
-hb_ot_var_has_data
-hb_ot_var_find_axis
-hb_ot_var_get_axis_count
-hb_ot_var_get_axes
-hb_ot_var_normalize_variations
-hb_ot_var_normalize_coords
-</SECTION>
-
-<SECTION>
<FILE>hb-ot-math</FILE>
HB_OT_TAG_MATH
HB_OT_MATH_SCRIPT
@@ -521,13 +588,29 @@ hb_ot_math_get_glyph_assembly
</SECTION>
<SECTION>
-<FILE>hb-ot-tag</FILE>
-HB_OT_TAG_DEFAULT_LANGUAGE
-HB_OT_TAG_DEFAULT_SCRIPT
-hb_ot_tag_from_language
-hb_ot_tag_to_language
-hb_ot_tag_to_script
-hb_ot_tags_from_script
+<FILE>hb-ot-shape</FILE>
+hb_ot_shape_glyphs_closure
+</SECTION>
+
+<SECTION>
+<FILE>hb-ot-var</FILE>
+HB_OT_TAG_VAR_AXIS_ITALIC
+HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE
+HB_OT_TAG_VAR_AXIS_SLANT
+HB_OT_TAG_VAR_AXIS_WEIGHT
+HB_OT_TAG_VAR_AXIS_WIDTH
+hb_ot_var_has_data
+hb_ot_var_axis_flags_t
+hb_ot_var_axis_info_t
+hb_ot_var_find_axis_info
+hb_ot_var_get_axis_count
+hb_ot_var_get_axis_infos
+hb_ot_var_get_named_instance_count
+hb_ot_var_named_instance_get_subfamily_name_id
+hb_ot_var_named_instance_get_postscript_name_id
+hb_ot_var_named_instance_get_design_coords
+hb_ot_var_normalize_variations
+hb_ot_var_normalize_coords
</SECTION>
<SECTION>
@@ -566,6 +649,8 @@ hb_set_union
<SECTION>
<FILE>hb-shape</FILE>
+HB_FEATURE_GLOBAL_END
+HB_FEATURE_GLOBAL_START
hb_feature_t
hb_feature_from_string
hb_feature_to_string
@@ -592,16 +677,14 @@ hb_shape_plan_t
<SECTION>
<FILE>hb-unicode</FILE>
-HB_UNICODE_MAX_DECOMPOSITION_LEN
+HB_UNICODE_MAX
hb_unicode_combining_class
hb_unicode_combining_class_func_t
hb_unicode_combining_class_t
hb_unicode_compose
hb_unicode_compose_func_t
hb_unicode_decompose
-hb_unicode_decompose_compatibility
hb_unicode_decompose_func_t
-hb_unicode_eastasian_width
hb_unicode_funcs_create
hb_unicode_funcs_destroy
hb_unicode_funcs_get_default
@@ -613,9 +696,7 @@ hb_unicode_funcs_make_immutable
hb_unicode_funcs_reference
hb_unicode_funcs_set_combining_class_func
hb_unicode_funcs_set_compose_func
-hb_unicode_funcs_set_decompose_compatibility_func
hb_unicode_funcs_set_decompose_func
-hb_unicode_funcs_set_eastasian_width_func
hb_unicode_funcs_set_general_category_func
hb_unicode_funcs_set_mirroring_func
hb_unicode_funcs_set_script_func
diff --git a/docs/harfbuzz.types b/docs/harfbuzz.types
index 462211c..bd87111 100644
--- a/docs/harfbuzz.types
+++ b/docs/harfbuzz.types
@@ -1,3 +1,5 @@
+hb_gobject_aat_layout_feature_selector_get_type
+hb_gobject_aat_layout_feature_type_get_type
hb_gobject_blob_get_type
hb_gobject_buffer_cluster_level_get_type
hb_gobject_buffer_content_type_get_type
@@ -14,13 +16,16 @@ hb_gobject_font_get_type
hb_gobject_glyph_flags_get_type
hb_gobject_glyph_info_get_type
hb_gobject_glyph_position_get_type
+hb_gobject_map_get_type
hb_gobject_memory_mode_get_type
+hb_gobject_ot_color_palette_flags_get_type
hb_gobject_ot_layout_glyph_class_get_type
hb_gobject_ot_math_constant_get_type
hb_gobject_ot_math_glyph_part_flags_get_type
hb_gobject_ot_math_glyph_part_get_type
hb_gobject_ot_math_glyph_variant_get_type
hb_gobject_ot_math_kern_get_type
+hb_gobject_ot_var_axis_flags_get_type
hb_gobject_script_get_type
hb_gobject_segment_properties_get_type
hb_gobject_set_get_type
diff --git a/docs/html/a-clustering-example-for-levels-0-and-1.html b/docs/html/a-clustering-example-for-levels-0-and-1.html
index 2d953d3..714859a 100644
--- a/docs/html/a-clustering-example-for-levels-0-and-1.html
+++ b/docs/html/a-clustering-example-for-levels-0-and-1.html
@@ -5,10 +5,10 @@
<title>A clustering example for levels 0 and 1: 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="clusters.html" title="">
-<link rel="prev" href="clusters.html" title="">
+<link rel="up" href="clusters.html" title="Clusters">
+<link rel="prev" href="working-with-harfbuzz-clusters.html" title="Working with HarfBuzz clusters">
<link rel="next" href="reordering-in-levels-0-and-1.html" title="Reordering in levels 0 and 1">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,66 +16,105 @@
<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="clusters.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="clusters.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="working-with-harfbuzz-clusters.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="reordering-in-levels-0-and-1.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="sect1">
+<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="a-clustering-example-for-levels-0-and-1"></a>A clustering example for levels 0 and 1</h2></div></div></div>
<p>
- Let's say we start with the following character sequence and cluster
- values:
- </p>
+ The basic shaping operations affect clusters in a predictable
+ manner when using level 0 or level 1:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ When two or more clusters <span class="emphasis"><em>merge</em></span>, the
+ resulting merged cluster takes as its cluster value the
+ <span class="emphasis"><em>minimum</em></span> of the incoming cluster values.
+ </p></li>
+<li class="listitem"><p>
+ When a cluster <span class="emphasis"><em>decomposes</em></span>, all of the
+ resulting child clusters inherit as their cluster value the
+ cluster value of the parent cluster.
+ </p></li>
+<li class="listitem"><p>
+ When a character is <span class="emphasis"><em>reordered</em></span>, the
+ reordered character and all clusters that the character
+ moves past as part of the reordering are merged into one cluster.
+ </p></li>
+</ul></div>
+<p>
+ The functionality, guarantees, and benefits of level 0 and level
+ 1 behavior can be seen with some examples. First, let us examine
+ what happens with cluster values when shaping involves cluster
+ merging with ligatures and decomposition.
+ </p>
+<p>
+ Let's say we start with the following character sequence (top row) and
+ initial cluster values (bottom row):
+ </p>
<pre class="programlisting">
- A,B,C,D,E
- 0,1,2,3,4
-</pre>
+ A,B,C,D,E
+ 0,1,2,3,4
+ </pre>
<p>
- We then map the characters to glyphs. For simplicity, let's assume
- that each character maps to the corresponding, identical-looking
- glyph:
- </p>
+ During shaping, HarfBuzz maps these characters to glyphs from
+ the font. For simplicity, let us assume that each character maps
+ to the corresponding, identical-looking glyph:
+ </p>
<pre class="programlisting">
- A,B,C,D,E
- 0,1,2,3,4
-</pre>
+ A,B,C,D,E
+ 0,1,2,3,4
+ </pre>
<p>
- Now if, for example, <code class="literal">B</code> and <code class="literal">C</code>
- ligate, then the clusters to which they belong "merge".
- This merged cluster takes for its cluster number the minimum of all
- the cluster numbers of the clusters that went in. In this case, we
- get:
- </p>
+ Now if, for example, <code class="literal">B</code> and <code class="literal">C</code>
+ form a ligature, then the clusters to which they belong
+ "merge". This merged cluster takes for its cluster
+ value the minimum of all the cluster values of the clusters that
+ went in to the ligature. In this case, we get:
+ </p>
<pre class="programlisting">
- A,BC,D,E
- 0,1 ,3,4
-</pre>
+ A,BC,D,E
+ 0,1 ,3,4
+ </pre>
<p>
- Now let's assume that the <code class="literal">BC</code> glyph decomposes
- into three components, and <code class="literal">D</code> also decomposes into
- two. The components each inherit the cluster value of their parent:
- </p>
+ because 1 is the minimum of the set {1,2}, which were the
+ cluster values of <code class="literal">B</code> and
+ <code class="literal">C</code>.
+ </p>
+<p>
+ Next, let us say that the <code class="literal">BC</code> ligature glyph
+ decomposes into three components, and <code class="literal">D</code> also
+ decomposes into two components. Whenever a cluster decomposes,
+ its components each inherit the cluster value of their parent:
+ </p>
<pre class="programlisting">
- A,BC0,BC1,BC2,D0,D1,E
- 0,1 ,1 ,1 ,3 ,3 ,4
-</pre>
+ A,BC0,BC1,BC2,D0,D1,E
+ 0,1 ,1 ,1 ,3 ,3 ,4
+ </pre>
<p>
- Now if <code class="literal">BC2</code> and <code class="literal">D0</code> ligate, then
- their clusters (numbers 1 and 3) merge into
- <code class="literal">min(1,3) = 1</code>:
- </p>
+ Next, if <code class="literal">BC2</code> and <code class="literal">D0</code> form a
+ ligature, then their clusters (cluster values 1 and 3) merge into
+ <code class="literal">min(1,3) = 1</code>:
+ </p>
<pre class="programlisting">
- A,BC0,BC1,BC2D0,D1,E
- 0,1 ,1 ,1 ,1 ,4
-</pre>
+ A,BC0,BC1,BC2D0,D1,E
+ 0,1 ,1 ,1 ,1 ,4
+ </pre>
+<p>
+ Note that the entirety of cluster 3 merges into cluster 1, not
+ just the <code class="literal">D0</code> glyph. This reflects the fact
+ that the cluster <span class="emphasis"><em>must</em></span> be treated as an
+ indivisible unit.
+ </p>
<p>
- At this point, cluster 1 means: the character sequence
- <code class="literal">BCD</code> is represented by glyphs
- <code class="literal">BC0,BC1,BC2D0,D1</code> and cannot be broken down any
- further.
- </p>
+ At this point, cluster 1 means: the character sequence
+ <code class="literal">BCD</code> is represented by glyphs
+ <code class="literal">BC0,BC1,BC2D0,D1</code> and cannot be broken down any
+ further.
+ </p>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/aat-shaping.html b/docs/html/aat-shaping.html
new file mode 100644
index 0000000..e1fff44
--- /dev/null
+++ b/docs/html/aat-shaping.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>AAT shaping: 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="shaping-concepts.html" title="Shaping concepts">
+<link rel="prev" href="graphite-shaping.html" title="Graphite shaping">
+<link rel="next" href="buffers-language-script-and-direction.html" title="Buffers, language, script and direction">
+<meta name="generator" content="GTK-Doc V1.25 (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="shaping-concepts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="graphite-shaping.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="buffers-language-script-and-direction.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="aat-shaping"></a>AAT shaping</h2></div></div></div>
+<p>
+ In contrast to OpenType shaping, AAT shaping does not specify a
+ predefined set of shaping models or a set of supported scripts.
+ </p>
+<p>
+ Instead, each AAT font includes a complete set of rules that
+ implement the desired shaping model for the intended
+ script. These rules include finite-state machines to match glyph
+ sequences and the shaping operations to perform.
+ </p>
+<p>
+ Notably, AAT shaping rules are expressed for glyphs in the font,
+ not for Unicode codepoints. AAT shaping can perform the same
+ shaping operations used in OpenType shaping, as well as other
+ functions that have not been defined for OpenType shaping.
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/adding-text-to-the-buffer.html b/docs/html/adding-text-to-the-buffer.html
index dac5fa1..b1157fb 100644
--- a/docs/html/adding-text-to-the-buffer.html
+++ b/docs/html/adding-text-to-the-buffer.html
@@ -8,7 +8,7 @@
<link rel="up" href="buffers-language-script-and-direction.html" title="Buffers, language, script and direction">
<link rel="prev" href="buffers-language-script-and-direction.html" title="Buffers, language, script and direction">
<link rel="next" href="setting-buffer-properties.html" title="Setting buffer properties">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -30,6 +30,6 @@
</p>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/annotation-glossary.html b/docs/html/annotation-glossary.html
index 452944b..acf5467 100644
--- a/docs/html/annotation-glossary.html
+++ b/docs/html/annotation-glossary.html
@@ -6,8 +6,8 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="deprecated-api-index.html" title="Index of deprecated API">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-0-9-2.html" title="Index of new symbols in 0.9.2">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -31,7 +31,7 @@
<a class="shortcut" href="#glsT">T</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="deprecated-api-index.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="api-index-0-9-2.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><img src="right-insensitive.png" width="16" height="16" border="0"></td>
</tr></table>
<div class="glossary">
@@ -58,6 +58,8 @@
<dt><span class="glossterm"><a name="annotation-glossterm-nullable"></a>nullable</span></dt>
<dd class="glossdef"><p>NULL may be passed as the value in, out, in-out; or as a return value.</p></dd>
<a name="glsO"></a><h3 class="title">O</h3>
+<dt><span class="glossterm"><a name="annotation-glossterm-optional"></a>optional</span></dt>
+<dd class="glossdef"><p>NULL may be passed instead of a pointer to a location.</p></dd>
<dt><span class="glossterm"><a name="annotation-glossterm-out"></a>out</span></dt>
<dd class="glossdef"><p>Parameter for returning results. Default is <acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>.</p></dd>
<dt><span class="glossterm"><a name="annotation-glossterm-out%20caller-allocates"></a>out caller-allocates</span></dt>
@@ -74,6 +76,6 @@
<dd class="glossdef"><p>Don't free data after the code is done.</p></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-10.html b/docs/html/api-index-0-9-10.html
index 8e20a6e..b670ca5 100644
--- a/docs/html/api-index-0-9-10.html
+++ b/docs/html/api-index-0-9-10.html
@@ -6,20 +6,18 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-8.html" title="Index of new symbols in 0.9.8">
-<link rel="next" href="api-index-0-9-11.html" title="Index of new symbols in 0.9.11">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-0-9-11.html" title="Index of new symbols in 0.9.11">
+<link rel="next" href="api-index-0-9-8.html" title="Index of new symbols in 0.9.8">
+<meta name="generator" content="GTK-Doc V1.25 (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"><span id="nav_index"><a class="shortcut" href="#idxO">O</a>
-  <span class="dim">|</span> 
- <a class="shortcut" href="#idxS">S</a></span></td>
+<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxO">O</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-8.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-11.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-0-9-11.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-0-9-8.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
@@ -29,13 +27,8 @@
<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-get-size-params" title="hb_ot_layout_get_size_params ()">hb_ot_layout_get_size_params</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
</dt>
<dd></dd>
-<a name="idxS"></a><h3 class="title">S</h3>
-<dt>
-<a class="link" href="harfbuzz-hb-deprecated.html#hb-set-invert" title="hb_set_invert ()">hb_set_invert</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
-</dt>
-<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-11.html b/docs/html/api-index-0-9-11.html
index 93491db..4f604c0 100644
--- a/docs/html/api-index-0-9-11.html
+++ b/docs/html/api-index-0-9-11.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-10.html" title="Index of new symbols in 0.9.10">
-<link rel="next" href="api-index-0-9-20.html" title="Index of new symbols in 0.9.20">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-0-9-20.html" title="Index of new symbols in 0.9.20">
+<link rel="next" href="api-index-0-9-10.html" title="Index of new symbols in 0.9.10">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,19 +16,19 @@
<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-10.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-20.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-0-9-20.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-0-9-10.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
<a name="api-index-0-9-11"></a>Index of new symbols in 0.9.11</h2></div></div></div>
<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-clear-contents" title="hb_buffer_clear_contents ()">hb_buffer_clear_contents</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-clear-contents" title="hb_buffer_clear_contents ()">hb_buffer_clear_contents</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-2.html b/docs/html/api-index-0-9-2.html
index b6c781d..921e090 100644
--- a/docs/html/api-index-0-9-2.html
+++ b/docs/html/api-index-0-9-2.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-full.html" title="API Index">
-<link rel="next" href="api-index-0-9-5.html" title="Index of new symbols in 0.9.5">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-0-9-5.html" title="Index of new symbols in 0.9.5">
+<link rel="next" href="annotation-glossary.html" title="Annotation Glossary">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -34,8 +34,8 @@
<a class="shortcut" href="#idxV">V</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-full.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-5.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-0-9-5.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="annotation-glossary.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
@@ -90,115 +90,115 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-utf16" title="hb_buffer_add_utf16 ()">hb_buffer_add_utf16</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf16" title="hb_buffer_add_utf16 ()">hb_buffer_add_utf16</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-utf32" title="hb_buffer_add_utf32 ()">hb_buffer_add_utf32</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf32" title="hb_buffer_add_utf32 ()">hb_buffer_add_utf32</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-utf8" title="hb_buffer_add_utf8 ()">hb_buffer_add_utf8</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf8" title="hb_buffer_add_utf8 ()">hb_buffer_add_utf8</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-allocation-successful" title="hb_buffer_allocation_successful ()">hb_buffer_allocation_successful</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-allocation-successful" title="hb_buffer_allocation_successful ()">hb_buffer_allocation_successful</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-create" title="hb_buffer_create ()">hb_buffer_create</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-create" title="hb_buffer_create ()">hb_buffer_create</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-destroy" title="hb_buffer_destroy ()">hb_buffer_destroy</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-destroy" title="hb_buffer_destroy ()">hb_buffer_destroy</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-direction" title="hb_buffer_get_direction ()">hb_buffer_get_direction</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-direction" title="hb_buffer_get_direction ()">hb_buffer_get_direction</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-empty" title="hb_buffer_get_empty ()">hb_buffer_get_empty</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-empty" title="hb_buffer_get_empty ()">hb_buffer_get_empty</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-glyph-infos" title="hb_buffer_get_glyph_infos ()">hb_buffer_get_glyph_infos</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-glyph-infos" title="hb_buffer_get_glyph_infos ()">hb_buffer_get_glyph_infos</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-glyph-positions" title="hb_buffer_get_glyph_positions ()">hb_buffer_get_glyph_positions</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-glyph-positions" title="hb_buffer_get_glyph_positions ()">hb_buffer_get_glyph_positions</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-language" title="hb_buffer_get_language ()">hb_buffer_get_language</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-language" title="hb_buffer_get_language ()">hb_buffer_get_language</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-length" title="hb_buffer_get_length ()">hb_buffer_get_length</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-length" title="hb_buffer_get_length ()">hb_buffer_get_length</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-script" title="hb_buffer_get_script ()">hb_buffer_get_script</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-script" title="hb_buffer_get_script ()">hb_buffer_get_script</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-unicode-funcs" title="hb_buffer_get_unicode_funcs ()">hb_buffer_get_unicode_funcs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-unicode-funcs" title="hb_buffer_get_unicode_funcs ()">hb_buffer_get_unicode_funcs</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-user-data" title="hb_buffer_get_user_data ()">hb_buffer_get_user_data</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-user-data" title="hb_buffer_get_user_data ()">hb_buffer_get_user_data</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-normalize-glyphs" title="hb_buffer_normalize_glyphs ()">hb_buffer_normalize_glyphs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-normalize-glyphs" title="hb_buffer_normalize_glyphs ()">hb_buffer_normalize_glyphs</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-pre-allocate" title="hb_buffer_pre_allocate ()">hb_buffer_pre_allocate</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-pre-allocate" title="hb_buffer_pre_allocate ()">hb_buffer_pre_allocate</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reference" title="hb_buffer_reference ()">hb_buffer_reference</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reference" title="hb_buffer_reference ()">hb_buffer_reference</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reset" title="hb_buffer_reset ()">hb_buffer_reset</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reset" title="hb_buffer_reset ()">hb_buffer_reset</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reverse" title="hb_buffer_reverse ()">hb_buffer_reverse</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reverse" title="hb_buffer_reverse ()">hb_buffer_reverse</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reverse-clusters" title="hb_buffer_reverse_clusters ()">hb_buffer_reverse_clusters</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reverse-clusters" title="hb_buffer_reverse_clusters ()">hb_buffer_reverse_clusters</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t">hb_buffer_serialize_format_t</a>, enum in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t">hb_buffer_serialize_format_t</a>, enum in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()">hb_buffer_set_direction</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()">hb_buffer_set_direction</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-language" title="hb_buffer_set_language ()">hb_buffer_set_language</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-language" title="hb_buffer_set_language ()">hb_buffer_set_language</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-length" title="hb_buffer_set_length ()">hb_buffer_set_length</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-length" title="hb_buffer_set_length ()">hb_buffer_set_length</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-script" title="hb_buffer_set_script ()">hb_buffer_set_script</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-script" title="hb_buffer_set_script ()">hb_buffer_set_script</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-unicode-funcs" title="hb_buffer_set_unicode_funcs ()">hb_buffer_set_unicode_funcs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-unicode-funcs" title="hb_buffer_set_unicode_funcs ()">hb_buffer_set_unicode_funcs</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-user-data" title="hb_buffer_set_user_data ()">hb_buffer_set_user_data</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-user-data" title="hb_buffer_set_user_data ()">hb_buffer_set_user_data</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<a name="idxD"></a><h3 class="title">D</h3>
@@ -328,15 +328,11 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-funcs-set-glyph-func" title="hb_font_funcs_set_glyph_func ()">hb_font_funcs_set_glyph_func</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-advance-func" title="hb_font_funcs_set_glyph_h_advance_func ()">hb_font_funcs_set_glyph_h_advance_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-kerning-func" title="hb_font_funcs_set_glyph_h_kerning_func ()">hb_font_funcs_set_glyph_h_kerning_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-funcs-set-glyph-h-kerning-func" title="hb_font_funcs_set_glyph_h_kerning_func ()">hb_font_funcs_set_glyph_h_kerning_func</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<dt>
@@ -352,7 +348,7 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-kerning-func" title="hb_font_funcs_set_glyph_v_kerning_func ()">hb_font_funcs_set_glyph_v_kerning_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-funcs-set-glyph-v-kerning-func" title="hb_font_funcs_set_glyph_v_kerning_func ()">hb_font_funcs_set_glyph_v_kerning_func</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<dt>
@@ -404,7 +400,7 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-h-kerning" title="hb_font_get_glyph_h_kerning ()">hb_font_get_glyph_h_kerning</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-h-kerning" title="hb_font_get_glyph_h_kerning ()">hb_font_get_glyph_h_kerning</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<dt>
@@ -412,7 +408,7 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-kerning-for-direction" title="hb_font_get_glyph_kerning_for_direction ()">hb_font_get_glyph_kerning_for_direction</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-kerning-for-direction" title="hb_font_get_glyph_kerning_for_direction ()">hb_font_get_glyph_kerning_for_direction</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<dt>
@@ -428,7 +424,7 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-v-kerning" title="hb_font_get_glyph_v_kerning ()">hb_font_get_glyph_v_kerning</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-v-kerning" title="hb_font_get_glyph_v_kerning ()">hb_font_get_glyph_v_kerning</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<dt>
@@ -555,7 +551,7 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-ot-tag.html#hb-ot-tag-to-language" title="hb_ot_tag_to_language ()">hb_ot_tag_to_language</a>, function in <a class="link" href="harfbuzz-hb-ot-tag.html" title="hb-ot-tag">hb-ot-tag</a>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-tag-to-language" title="hb_ot_tag_to_language ()">hb_ot_tag_to_language</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
</dt>
<dd></dd>
<a name="idxS"></a><h3 class="title">S</h3>
@@ -644,15 +640,15 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-shape" title="hb_shape ()">hb_shape</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
+<a class="link" href="harfbuzz-hb-shape.html#hb-shape" title="hb_shape ()">hb_shape</a>, function in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-shape-full" title="hb_shape_full ()">hb_shape_full</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
+<a class="link" href="harfbuzz-hb-shape.html#hb-shape-full" title="hb_shape_full ()">hb_shape_full</a>, function in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-shape-list-shapers" title="hb_shape_list_shapers ()">hb_shape_list_shapers</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
+<a class="link" href="harfbuzz-hb-shape.html#hb-shape-list-shapers" title="hb_shape_list_shapers ()">hb_shape_list_shapers</a>, function in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
</dt>
<dd></dd>
<a name="idxT"></a><h3 class="title">T</h3>
@@ -674,14 +670,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-decompose-compatibility" title="hb_unicode_decompose_compatibility ()">hb_unicode_decompose_compatibility</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-eastasian-width" title="hb_unicode_eastasian_width ()">hb_unicode_eastasian_width</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-create" title="hb_unicode_funcs_create ()">hb_unicode_funcs_create</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
</dt>
<dd></dd>
@@ -722,18 +710,10 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-decompose-compatibility-func" title="hb_unicode_funcs_set_decompose_compatibility_func ()">hb_unicode_funcs_set_decompose_compatibility_func</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-decompose-func" title="hb_unicode_funcs_set_decompose_func ()">hb_unicode_funcs_set_decompose_func</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-eastasian-width-func" title="hb_unicode_funcs_set_eastasian_width_func ()">hb_unicode_funcs_set_eastasian_width_func</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-general-category-func" title="hb_unicode_funcs_set_general_category_func ()">hb_unicode_funcs_set_general_category_func</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
</dt>
<dd></dd>
@@ -772,6 +752,6 @@
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-20.html b/docs/html/api-index-0-9-20.html
index 5e237d7..290acb6 100644
--- a/docs/html/api-index-0-9-20.html
+++ b/docs/html/api-index-0-9-20.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-11.html" title="Index of new symbols in 0.9.11">
-<link rel="next" href="api-index-0-9-22.html" title="Index of new symbols in 0.9.22">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-0-9-22.html" title="Index of new symbols in 0.9.22">
+<link rel="next" href="api-index-0-9-11.html" title="Index of new symbols in 0.9.11">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,23 +16,23 @@
<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-11.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-22.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-0-9-22.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-0-9-11.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
<a name="api-index-0-9-20"></a>Index of new symbols in 0.9.20</h2></div></div></div>
<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t">hb_buffer_flags_t</a>, enum in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t">hb_buffer_flags_t</a>, enum in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t">hb_buffer_serialize_flags_t</a>, enum in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t">hb_buffer_serialize_flags_t</a>, enum in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-22.html b/docs/html/api-index-0-9-22.html
index 68ce10b..7e56b79 100644
--- a/docs/html/api-index-0-9-22.html
+++ b/docs/html/api-index-0-9-22.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-20.html" title="Index of new symbols in 0.9.20">
-<link rel="next" href="api-index-0-9-28.html" title="Index of new symbols in 0.9.28">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-0-9-28.html" title="Index of new symbols in 0.9.28">
+<link rel="next" href="api-index-0-9-20.html" title="Index of new symbols in 0.9.20">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,8 +16,8 @@
<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxO">O</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-20.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-28.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-0-9-28.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-0-9-20.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
@@ -29,6 +29,6 @@
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-28.html b/docs/html/api-index-0-9-28.html
index bff8406..1fa3ea2 100644
--- a/docs/html/api-index-0-9-28.html
+++ b/docs/html/api-index-0-9-28.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-22.html" title="Index of new symbols in 0.9.22">
-<link rel="next" href="api-index-0-9-30.html" title="Index of new symbols in 0.9.30">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-0-9-30.html" title="Index of new symbols in 0.9.30">
+<link rel="next" href="api-index-0-9-22.html" title="Index of new symbols in 0.9.22">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,8 +16,8 @@
<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxO">O</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-22.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-30.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-0-9-30.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-0-9-22.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
@@ -29,6 +29,6 @@
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-30.html b/docs/html/api-index-0-9-30.html
index 96983c9..863701e 100644
--- a/docs/html/api-index-0-9-30.html
+++ b/docs/html/api-index-0-9-30.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-28.html" title="Index of new symbols in 0.9.28">
-<link rel="next" href="api-index-0-9-31.html" title="Index of new symbols in 0.9.31">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-0-9-31.html" title="Index of new symbols in 0.9.31">
+<link rel="next" href="api-index-0-9-28.html" title="Index of new symbols in 0.9.28">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,8 +18,8 @@
<a class="shortcut" href="#idxV">V</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-28.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-31.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-0-9-31.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-0-9-28.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
@@ -36,6 +36,6 @@
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-31.html b/docs/html/api-index-0-9-31.html
index b169c5a..7326017 100644
--- a/docs/html/api-index-0-9-31.html
+++ b/docs/html/api-index-0-9-31.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-30.html" title="Index of new symbols in 0.9.30">
-<link rel="next" href="api-index-0-9-38.html" title="Index of new symbols in 0.9.38">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-0-9-38.html" title="Index of new symbols in 0.9.38">
+<link rel="next" href="api-index-0-9-30.html" title="Index of new symbols in 0.9.30">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,31 +16,31 @@
<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-30.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-38.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-0-9-38.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-0-9-30.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
<a name="api-index-0-9-31"></a>Index of new symbols in 0.9.31</h2></div></div></div>
<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()">hb_buffer_add_codepoints</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()">hb_buffer_add_codepoints</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-replacement-codepoint" title="hb_buffer_get_replacement_codepoint ()">hb_buffer_get_replacement_codepoint</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-replacement-codepoint" title="hb_buffer_get_replacement_codepoint ()">hb_buffer_get_replacement_codepoint</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS" title="HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT">HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT</a>, macro in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS" title="HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT">HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT</a>, macro in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()">hb_buffer_set_replacement_codepoint</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()">hb_buffer_set_replacement_codepoint</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-38.html b/docs/html/api-index-0-9-38.html
index d992efc..196a9cc 100644
--- a/docs/html/api-index-0-9-38.html
+++ b/docs/html/api-index-0-9-38.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-31.html" title="Index of new symbols in 0.9.31">
-<link rel="next" href="api-index-0-9-39.html" title="Index of new symbols in 0.9.39">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-0-9-39.html" title="Index of new symbols in 0.9.39">
+<link rel="next" href="api-index-0-9-31.html" title="Index of new symbols in 0.9.31">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,8 +18,8 @@
<a class="shortcut" href="#idxG">G</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-31.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-39.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-0-9-39.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-0-9-31.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
@@ -40,6 +40,6 @@
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-39.html b/docs/html/api-index-0-9-39.html
index af17300..91f6acc 100644
--- a/docs/html/api-index-0-9-39.html
+++ b/docs/html/api-index-0-9-39.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-38.html" title="Index of new symbols in 0.9.38">
-<link rel="next" href="api-index-0-9-41.html" title="Index of new symbols in 0.9.41">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-0-9-41.html" title="Index of new symbols in 0.9.41">
+<link rel="next" href="api-index-0-9-38.html" title="Index of new symbols in 0.9.38">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,19 +16,19 @@
<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-38.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-41.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-0-9-41.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-0-9-38.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
<a name="api-index-0-9-39"></a>Index of new symbols in 0.9.39</h2></div></div></div>
<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-latin1" title="hb_buffer_add_latin1 ()">hb_buffer_add_latin1</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-latin1" title="hb_buffer_add_latin1 ()">hb_buffer_add_latin1</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-41.html b/docs/html/api-index-0-9-41.html
index 92a80e0..b5913e9 100644
--- a/docs/html/api-index-0-9-41.html
+++ b/docs/html/api-index-0-9-41.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-39.html" title="Index of new symbols in 0.9.39">
-<link rel="next" href="api-index-0-9-42.html" title="Index of new symbols in 0.9.42">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-0-9-42.html" title="Index of new symbols in 0.9.42">
+<link rel="next" href="api-index-0-9-39.html" title="Index of new symbols in 0.9.39">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,19 +16,19 @@
<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-39.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-42.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-0-9-42.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-0-9-39.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
<a name="api-index-0-9-41"></a>Index of new symbols in 0.9.41</h2></div></div></div>
<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reverse-range" title="hb_buffer_reverse_range ()">hb_buffer_reverse_range</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reverse-range" title="hb_buffer_reverse_range ()">hb_buffer_reverse_range</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-42.html b/docs/html/api-index-0-9-42.html
index fe8cd8c..b048b2d 100644
--- a/docs/html/api-index-0-9-42.html
+++ b/docs/html/api-index-0-9-42.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-41.html" title="Index of new symbols in 0.9.41">
-<link rel="next" href="api-index-1-0-5.html" title="Index of new symbols in 1.0.5">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-1-0-5.html" title="Index of new symbols in 1.0.5">
+<link rel="next" href="api-index-0-9-41.html" title="Index of new symbols in 0.9.41">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,23 +16,27 @@
<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxB">B</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-41.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-1-0-5.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-1-0-5.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-0-9-41.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
<a name="api-index-0-9-42"></a>Index of new symbols in 0.9.42</h2></div></div></div>
<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-cluster-level" title="hb_buffer_get_cluster_level ()">hb_buffer_get_cluster_level</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t">hb_buffer_cluster_level_t</a>, enum in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-cluster-level" title="hb_buffer_set_cluster_level ()">hb_buffer_set_cluster_level</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-cluster-level" title="hb_buffer_get_cluster_level ()">hb_buffer_get_cluster_level</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-cluster-level" title="hb_buffer_set_cluster_level ()">hb_buffer_set_cluster_level</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-5.html b/docs/html/api-index-0-9-5.html
index f1801c5..9054ab0 100644
--- a/docs/html/api-index-0-9-5.html
+++ b/docs/html/api-index-0-9-5.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-2.html" title="Index of new symbols in 0.9.2">
-<link rel="next" href="api-index-0-9-7.html" title="Index of new symbols in 0.9.7">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-0-9-7.html" title="Index of new symbols in 0.9.7">
+<link rel="next" href="api-index-0-9-2.html" title="Index of new symbols in 0.9.2">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,28 +20,28 @@
<a class="shortcut" href="#idxT">T</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-2.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-7.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-0-9-7.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-0-9-2.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
<a name="api-index-0-9-5"></a>Index of new symbols in 0.9.5</h2></div></div></div>
<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-content-type" title="hb_buffer_get_content_type ()">hb_buffer_get_content_type</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-content-type" title="hb_buffer_get_content_type ()">hb_buffer_get_content_type</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-content-type" title="hb_buffer_set_content_type ()">hb_buffer_set_content_type</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-content-type" title="hb_buffer_set_content_type ()">hb_buffer_set_content_type</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<a name="idxF"></a><h3 class="title">F</h3>
<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-feature-from-string" title="hb_feature_from_string ()">hb_feature_from_string</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
+<a class="link" href="harfbuzz-hb-shape.html#hb-feature-from-string" title="hb_feature_from_string ()">hb_feature_from_string</a>, function in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-feature-to-string" title="hb_feature_to_string ()">hb_feature_to_string</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
+<a class="link" href="harfbuzz-hb-shape.html#hb-feature-to-string" title="hb_feature_to_string ()">hb_feature_to_string</a>, function in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
</dt>
<dd></dd>
<a name="idxT"></a><h3 class="title">T</h3>
@@ -51,6 +51,6 @@
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-7.html b/docs/html/api-index-0-9-7.html
index e6b8ee2..8ffe5dd 100644
--- a/docs/html/api-index-0-9-7.html
+++ b/docs/html/api-index-0-9-7.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-5.html" title="Index of new symbols in 0.9.5">
-<link rel="next" href="api-index-0-9-8.html" title="Index of new symbols in 0.9.8">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-0-9-8.html" title="Index of new symbols in 0.9.8">
+<link rel="next" href="api-index-0-9-5.html" title="Index of new symbols in 0.9.5">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -22,55 +22,55 @@
<a class="shortcut" href="#idxS">S</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-5.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-8.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-0-9-8.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-0-9-5.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
<a name="api-index-0-9-7"></a>Index of new symbols in 0.9.7</h2></div></div></div>
<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add" title="hb_buffer_add ()">hb_buffer_add</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add" title="hb_buffer_add ()">hb_buffer_add</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-deserialize-glyphs" title="hb_buffer_deserialize_glyphs ()">hb_buffer_deserialize_glyphs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-deserialize-glyphs" title="hb_buffer_deserialize_glyphs ()">hb_buffer_deserialize_glyphs</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-flags" title="hb_buffer_get_flags ()">hb_buffer_get_flags</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-flags" title="hb_buffer_get_flags ()">hb_buffer_get_flags</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-segment-properties" title="hb_buffer_get_segment_properties ()">hb_buffer_get_segment_properties</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-segment-properties" title="hb_buffer_get_segment_properties ()">hb_buffer_get_segment_properties</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-guess-segment-properties" title="hb_buffer_guess_segment_properties ()">hb_buffer_guess_segment_properties</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-guess-segment-properties" title="hb_buffer_guess_segment_properties ()">hb_buffer_guess_segment_properties</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-from-string" title="hb_buffer_serialize_format_from_string ()">hb_buffer_serialize_format_from_string</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-from-string" title="hb_buffer_serialize_format_from_string ()">hb_buffer_serialize_format_from_string</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-to-string" title="hb_buffer_serialize_format_to_string ()">hb_buffer_serialize_format_to_string</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-to-string" title="hb_buffer_serialize_format_to_string ()">hb_buffer_serialize_format_to_string</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()">hb_buffer_serialize_glyphs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()">hb_buffer_serialize_glyphs</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-list-formats" title="hb_buffer_serialize_list_formats ()">hb_buffer_serialize_list_formats</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-list-formats" title="hb_buffer_serialize_list_formats ()">hb_buffer_serialize_list_formats</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-flags" title="hb_buffer_set_flags ()">hb_buffer_set_flags</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-flags" title="hb_buffer_set_flags ()">hb_buffer_set_flags</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-segment-properties" title="hb_buffer_set_segment_properties ()">hb_buffer_set_segment_properties</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-segment-properties" title="hb_buffer_set_segment_properties ()">hb_buffer_set_segment_properties</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<a name="idxF"></a><h3 class="title">F</h3>
@@ -113,11 +113,11 @@
<dd></dd>
<a name="idxS"></a><h3 class="title">S</h3>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-equal" title="hb_segment_properties_equal ()">hb_segment_properties_equal</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-equal" title="hb_segment_properties_equal ()">hb_segment_properties_equal</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-hash" title="hb_segment_properties_hash ()">hb_segment_properties_hash</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-hash" title="hb_segment_properties_hash ()">hb_segment_properties_hash</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
@@ -190,6 +190,6 @@
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-0-9-8.html b/docs/html/api-index-0-9-8.html
index bf22b18..c42dee8 100644
--- a/docs/html/api-index-0-9-8.html
+++ b/docs/html/api-index-0-9-8.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-7.html" title="Index of new symbols in 0.9.7">
-<link rel="next" href="api-index-0-9-10.html" title="Index of new symbols in 0.9.10">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-0-9-10.html" title="Index of new symbols in 0.9.10">
+<link rel="next" href="api-index-0-9-7.html" title="Index of new symbols in 0.9.7">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,8 +16,8 @@
<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxO">O</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-7.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-10.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-0-9-10.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-0-9-7.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
@@ -29,6 +29,6 @@
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-0-5.html b/docs/html/api-index-1-0-5.html
index 805ef95..47bc601 100644
--- a/docs/html/api-index-1-0-5.html
+++ b/docs/html/api-index-1-0-5.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-0-9-42.html" title="Index of new symbols in 0.9.42">
-<link rel="next" href="api-index-1-1-2.html" title="Index of new symbols in 1.1.2">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-1-1-2.html" title="Index of new symbols in 1.1.2">
+<link rel="next" href="api-index-0-9-42.html" title="Index of new symbols in 0.9.42">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,8 +16,8 @@
<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxF">F</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-0-9-42.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-1-1-2.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-1-1-2.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-0-9-42.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
@@ -37,6 +37,6 @@
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-1-2.html b/docs/html/api-index-1-1-2.html
index 0b57389..5a774cc 100644
--- a/docs/html/api-index-1-1-2.html
+++ b/docs/html/api-index-1-1-2.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-1-0-5.html" title="Index of new symbols in 1.0.5">
-<link rel="next" href="api-index-1-1-3.html" title="Index of new symbols in 1.1.3">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-1-1-3.html" title="Index of new symbols in 1.1.3">
+<link rel="next" href="api-index-1-0-5.html" title="Index of new symbols in 1.0.5">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,8 +16,8 @@
<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxF">F</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-1-0-5.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-1-1-3.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-1-1-3.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-1-0-5.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
@@ -33,6 +33,6 @@
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-1-3.html b/docs/html/api-index-1-1-3.html
index 6ac7520..cc9d926 100644
--- a/docs/html/api-index-1-1-3.html
+++ b/docs/html/api-index-1-1-3.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-1-1-2.html" title="Index of new symbols in 1.1.2">
-<link rel="next" href="api-index-1-2-3.html" title="Index of new symbols in 1.2.3">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-1-2-3.html" title="Index of new symbols in 1.2.3">
+<link rel="next" href="api-index-1-1-2.html" title="Index of new symbols in 1.1.2">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,15 +18,15 @@
<a class="shortcut" href="#idxF">F</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-1-1-2.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-1-2-3.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-1-2-3.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-1-1-2.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
<a name="api-index-1-1-3"></a>Index of new symbols in 1.1.3</h2></div></div></div>
<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-message-func" title="hb_buffer_set_message_func ()">hb_buffer_set_message_func</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-message-func" title="hb_buffer_set_message_func ()">hb_buffer_set_message_func</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<a name="idxF"></a><h3 class="title">F</h3>
@@ -44,6 +44,6 @@
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-2-3.html b/docs/html/api-index-1-2-3.html
index 0da0a7b..36bf20c 100644
--- a/docs/html/api-index-1-2-3.html
+++ b/docs/html/api-index-1-2-3.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-1-1-3.html" title="Index of new symbols in 1.1.3">
-<link rel="next" href="api-index-1-3-3.html" title="Index of new symbols in 1.3.3">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-1-3-3.html" title="Index of new symbols in 1.3.3">
+<link rel="next" href="api-index-1-1-3.html" title="Index of new symbols in 1.1.3">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,8 +16,8 @@
<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxF">F</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-1-1-3.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-1-3-3.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-1-3-3.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-1-1-3.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
@@ -41,6 +41,6 @@
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-3-3.html b/docs/html/api-index-1-3-3.html
index c10e208..f5687f5 100644
--- a/docs/html/api-index-1-3-3.html
+++ b/docs/html/api-index-1-3-3.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-1-2-3.html" title="Index of new symbols in 1.2.3">
-<link rel="next" href="api-index-1-4-2.html" title="Index of new symbols in 1.4.2">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-1-4-0.html" title="Index of new symbols in 1.4.0">
+<link rel="next" href="api-index-1-2-3.html" title="Index of new symbols in 1.2.3">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,8 +16,8 @@
<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxO">O</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-1-2-3.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-1-4-2.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-1-4-0.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-1-2-3.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
@@ -81,6 +81,6 @@
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-4-0.html b/docs/html/api-index-1-4-0.html
new file mode 100644
index 0000000..c6bfe97
--- /dev/null
+++ b/docs/html/api-index-1-4-0.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new symbols in 1.4.0: 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="pt02.html" title="Part II. Reference manual">
+<link rel="prev" href="api-index-1-4-2.html" title="Index of new symbols in 1.4.2">
+<link rel="next" href="api-index-1-3-3.html" title="Index of new symbols in 1.3.3">
+<meta name="generator" content="GTK-Doc V1.25 (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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="api-index-1-4-2.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-1-3-3.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="api-index-1-4-0"></a>Index of new symbols in 1.4.0</h2></div></div></div>
+<div xmlns:xlink="http://www.w3.org/1999/xlink" class="index"></div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-4-2.html b/docs/html/api-index-1-4-2.html
index facfc1e..e7fd690 100644
--- a/docs/html/api-index-1-4-2.html
+++ b/docs/html/api-index-1-4-2.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-1-3-3.html" title="Index of new symbols in 1.3.3">
-<link rel="next" href="api-index-1-4-3.html" title="Index of new symbols in 1.4.3">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-1-4-3.html" title="Index of new symbols in 1.4.3">
+<link rel="next" href="api-index-1-4-0.html" title="Index of new symbols in 1.4.0">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,8 +20,8 @@
<a class="shortcut" href="#idxV">V</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-1-3-3.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-1-4-3.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-1-4-3.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-1-4-0.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
@@ -45,35 +45,23 @@
<dd></dd>
<a name="idxO"></a><h3 class="title">O</h3>
<dt>
-hb_ot_var_axis_t, struct in hb-ot-var
+<a class="link" href="harfbuzz-hb-ot-var.html#hb-ot-var-get-axis-count" title="hb_ot_var_get_axis_count ()">hb_ot_var_get_axis_count</a>, function in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
</dt>
<dd></dd>
<dt>
-hb_ot_var_find_axis, function in hb-ot-var
+<a class="link" href="harfbuzz-hb-ot-var.html#hb-ot-var-has-data" title="hb_ot_var_has_data ()">hb_ot_var_has_data</a>, function in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
</dt>
<dd></dd>
<dt>
-hb_ot_var_get_axes, function in hb-ot-var
+<a class="link" href="harfbuzz-hb-ot-var.html#hb-ot-var-normalize-coords" title="hb_ot_var_normalize_coords ()">hb_ot_var_normalize_coords</a>, function in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
</dt>
<dd></dd>
<dt>
-hb_ot_var_get_axis_count, function in hb-ot-var
+<a class="link" href="harfbuzz-hb-ot-var.html#hb-ot-var-normalize-variations" title="hb_ot_var_normalize_variations ()">hb_ot_var_normalize_variations</a>, function in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
</dt>
<dd></dd>
<dt>
-hb_ot_var_has_data, function in hb-ot-var
-</dt>
-<dd></dd>
-<dt>
-hb_ot_var_normalize_coords, function in hb-ot-var
-</dt>
-<dd></dd>
-<dt>
-hb_ot_var_normalize_variations, function in hb-ot-var
-</dt>
-<dd></dd>
-<dt>
-HB_OT_VAR_NO_AXIS_INDEX, macro in hb-ot-var
+<a class="link" href="harfbuzz-hb-deprecated.html#HB-OT-VAR-NO-AXIS-INDEX:CAPS" title="HB_OT_VAR_NO_AXIS_INDEX">HB_OT_VAR_NO_AXIS_INDEX</a>, macro in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<a name="idxV"></a><h3 class="title">V</h3>
@@ -91,6 +79,6 @@ HB_OT_VAR_NO_AXIS_INDEX, macro in hb-ot-var
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-4-3.html b/docs/html/api-index-1-4-3.html
index 0cf5823..9b333ed 100644
--- a/docs/html/api-index-1-4-3.html
+++ b/docs/html/api-index-1-4-3.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-1-4-2.html" title="Index of new symbols in 1.4.2">
-<link rel="next" href="api-index-1-5-0.html" title="Index of new symbols in 1.5.0">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-1-5-0.html" title="Index of new symbols in 1.5.0">
+<link rel="next" href="api-index-1-4-2.html" title="Index of new symbols in 1.4.2">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,8 +16,8 @@
<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxF">F</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-1-4-2.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-1-5-0.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-1-5-0.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-1-4-2.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
@@ -29,6 +29,6 @@
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-5-0.html b/docs/html/api-index-1-5-0.html
index 5fb0943..0321f7a 100644
--- a/docs/html/api-index-1-5-0.html
+++ b/docs/html/api-index-1-5-0.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-1-4-3.html" title="Index of new symbols in 1.4.3">
-<link rel="next" href="api-index-1-6-0.html" title="Index of new symbols in 1.6.0">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-1-6-0.html" title="Index of new symbols in 1.6.0">
+<link rel="next" href="api-index-1-4-3.html" title="Index of new symbols in 1.4.3">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,28 +18,32 @@
<a class="shortcut" href="#idxG">G</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-1-4-3.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-1-6-0.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-1-6-0.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-1-4-3.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
<a name="api-index-1-5-0"></a>Index of new symbols in 1.5.0</h2></div></div></div>
<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-append" title="hb_buffer_append ()">hb_buffer_append</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-append" title="hb_buffer_append ()">hb_buffer_append</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-diff" title="hb_buffer_diff ()">hb_buffer_diff</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-diff" title="hb_buffer_diff ()">hb_buffer_diff</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<a name="idxG"></a><h3 class="title">G</h3>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-get-glyph-flags" title="hb_glyph_info_get_glyph_flags ()">hb_glyph_info_get_glyph_flags</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-flags-t" title="enum hb_glyph_flags_t">hb_glyph_flags_t</a>, enum in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-get-glyph-flags" title="hb_glyph_info_get_glyph_flags ()">hb_glyph_info_get_glyph_flags</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-6-0.html b/docs/html/api-index-1-6-0.html
index 585a60a..cf383a5 100644
--- a/docs/html/api-index-1-6-0.html
+++ b/docs/html/api-index-1-6-0.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-1-5-0.html" title="Index of new symbols in 1.5.0">
-<link rel="next" href="deprecated-api-index.html" title="Index of deprecated API">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-1-7-5.html" title="Index of new symbols in 1.7.5">
+<link rel="next" href="api-index-1-5-0.html" title="Index of new symbols in 1.5.0">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,8 +16,8 @@
<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxF">F</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-1-5-0.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="deprecated-api-index.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-1-7-5.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-1-5-0.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
@@ -33,6 +33,6 @@
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-7-5.html b/docs/html/api-index-1-7-5.html
new file mode 100644
index 0000000..3863eea
--- /dev/null
+++ b/docs/html/api-index-1-7-5.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new symbols in 1.7.5: 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="pt02.html" title="Part II. Reference manual">
+<link rel="prev" href="api-index-1-7-7.html" title="Index of new symbols in 1.7.7">
+<link rel="next" href="api-index-1-6-0.html" title="Index of new symbols in 1.6.0">
+<meta name="generator" content="GTK-Doc V1.25 (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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="api-index-1-7-7.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-1-6-0.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="api-index-1-7-5"></a>Index of new symbols in 1.7.5</h2></div></div></div>
+<a name="idx"></a>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-7-7.html b/docs/html/api-index-1-7-7.html
new file mode 100644
index 0000000..277561c
--- /dev/null
+++ b/docs/html/api-index-1-7-7.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new symbols in 1.7.7: 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="pt02.html" title="Part II. Reference manual">
+<link rel="prev" href="api-index-1-8-0.html" title="Index of new symbols in 1.8.0">
+<link rel="next" href="api-index-1-7-5.html" title="Index of new symbols in 1.7.5">
+<meta name="generator" content="GTK-Doc V1.25 (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"><span id="nav_index"><a class="shortcut" href="#idxB">B</a>
+  <span class="dim">|</span> 
+ <a class="shortcut" href="#idxF">F</a>
+  <span class="dim">|</span> 
+ <a class="shortcut" href="#idxM">M</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="api-index-1-8-0.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-1-7-5.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="api-index-1-7-7"></a>Index of new symbols in 1.7.7</h2></div></div></div>
+<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
+<dt>
+<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>, function in <a class="link" href="harfbuzz-hb-blob.html" title="hb-blob">hb-blob</a>
+</dt>
+<dd></dd>
+<a name="idxF"></a><h3 class="title">F</h3>
+<dt>
+<a class="link" href="harfbuzz-hb-face.html#hb-face-count" title="hb_face_count ()">hb_face_count</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
+</dt>
+<dd></dd>
+<a name="idxM"></a><h3 class="title">M</h3>
+<dt>
+<a class="link" href="harfbuzz-hb-map.html#hb-map-allocation-successful" title="hb_map_allocation_successful ()">hb_map_allocation_successful</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-map.html#hb-map-clear" title="hb_map_clear ()">hb_map_clear</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-map.html#hb-map-create" title="hb_map_create ()">hb_map_create</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-map.html#hb-map-del" title="hb_map_del ()">hb_map_del</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-map.html#hb-map-destroy" title="hb_map_destroy ()">hb_map_destroy</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-map.html#hb-map-get" title="hb_map_get ()">hb_map_get</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-map.html#hb-map-get-empty" title="hb_map_get_empty ()">hb_map_get_empty</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-map.html#hb-map-get-population" title="hb_map_get_population ()">hb_map_get_population</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-map.html#hb-map-get-user-data" title="hb_map_get_user_data ()">hb_map_get_user_data</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-map.html#hb-map-has" title="hb_map_has ()">hb_map_has</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-map.html#hb-map-is-empty" title="hb_map_is_empty ()">hb_map_is_empty</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-map.html#hb-map-reference" title="hb_map_reference ()">hb_map_reference</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-map.html#hb-map-set" title="hb_map_set ()">hb_map_set</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-map.html#hb-map-set-user-data" title="hb_map_set_user_data ()">hb_map_set_user_data</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-8-0.html b/docs/html/api-index-1-8-0.html
new file mode 100644
index 0000000..65476d8
--- /dev/null
+++ b/docs/html/api-index-1-8-0.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new symbols in 1.8.0: 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="pt02.html" title="Part II. Reference manual">
+<link rel="prev" href="api-index-1-8-1.html" title="Index of new symbols in 1.8.1">
+<link rel="next" href="api-index-1-7-7.html" title="Index of new symbols in 1.7.7">
+<meta name="generator" content="GTK-Doc V1.25 (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"><span id="nav_index"><a class="shortcut" href="#idxB">B</a>
+  <span class="dim">|</span> 
+ <a class="shortcut" href="#idxS">S</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="api-index-1-8-1.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-1-7-7.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="api-index-1-8-0"></a>Index of new symbols in 1.8.0</h2></div></div></div>
+<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
+<dt>
+<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>, function in <a class="link" href="harfbuzz-hb-blob.html" title="hb-blob">hb-blob</a>
+</dt>
+<dd></dd>
+<a name="idxS"></a><h3 class="title">S</h3>
+<dt>
+<a class="link" href="harfbuzz-hb-set.html#hb-set-previous" title="hb_set_previous ()">hb_set_previous</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-set.html#hb-set-previous-range" title="hb_set_previous_range ()">hb_set_previous_range</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-8-1.html b/docs/html/api-index-1-8-1.html
new file mode 100644
index 0000000..2db6d73
--- /dev/null
+++ b/docs/html/api-index-1-8-1.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new symbols in 1.8.1: 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="pt02.html" title="Part II. Reference manual">
+<link rel="prev" href="api-index-1-8-5.html" title="Index of new symbols in 1.8.5">
+<link rel="next" href="api-index-1-8-0.html" title="Index of new symbols in 1.8.0">
+<meta name="generator" content="GTK-Doc V1.25 (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"><span id="nav_index"><a class="shortcut" href="#idxO">O</a>
+  <span class="dim">|</span> 
+ <a class="shortcut" href="#idxS">S</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="api-index-1-8-5.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-1-8-0.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="api-index-1-8-1"></a>Index of new symbols in 1.8.1</h2></div></div></div>
+<a name="idx"></a><a name="idxO"></a><h3 class="title">O</h3>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-lookups-substitute-closure" title="hb_ot_layout_lookups_substitute_closure ()">hb_ot_layout_lookups_substitute_closure</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+</dt>
+<dd></dd>
+<a name="idxS"></a><h3 class="title">S</h3>
+<dt>
+<a class="link" href="harfbuzz-hb-set.html#hb-set-is-subset" title="hb_set_is_subset ()">hb_set_is_subset</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-8-5.html b/docs/html/api-index-1-8-5.html
new file mode 100644
index 0000000..4c31dfc
--- /dev/null
+++ b/docs/html/api-index-1-8-5.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new symbols in 1.8.5: 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="pt02.html" title="Part II. Reference manual">
+<link rel="prev" href="api-index-1-8-6.html" title="Index of new symbols in 1.8.6">
+<link rel="next" href="api-index-1-8-1.html" title="Index of new symbols in 1.8.1">
+<meta name="generator" content="GTK-Doc V1.25 (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"><span id="nav_index"><a class="shortcut" href="#idxO">O</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="api-index-1-8-6.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-1-8-1.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="api-index-1-8-5"></a>Index of new symbols in 1.8.5</h2></div></div></div>
+<a name="idx"></a><a name="idxO"></a><h3 class="title">O</h3>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-collect-features" title="hb_ot_layout_collect_features ()">hb_ot_layout_collect_features</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-8-6.html b/docs/html/api-index-1-8-6.html
new file mode 100644
index 0000000..b930c3f
--- /dev/null
+++ b/docs/html/api-index-1-8-6.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new symbols in 1.8.6: 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="pt02.html" title="Part II. Reference manual">
+<link rel="prev" href="api-index-1-9-0.html" title="Index of new symbols in 1.9.0">
+<link rel="next" href="api-index-1-8-5.html" title="Index of new symbols in 1.8.5">
+<meta name="generator" content="GTK-Doc V1.25 (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"><span id="nav_index"><a class="shortcut" href="#idxF">F</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="api-index-1-9-0.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-1-8-5.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="api-index-1-8-6"></a>Index of new symbols in 1.8.6</h2></div></div></div>
+<a name="idx"></a><a name="idxF"></a><h3 class="title">F</h3>
+<dt>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-advances-func" title="hb_font_funcs_set_glyph_h_advances_func ()">hb_font_funcs_set_glyph_h_advances_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-advances-func" title="hb_font_funcs_set_glyph_v_advances_func ()">hb_font_funcs_set_glyph_v_advances_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-advances-for-direction" title="hb_font_get_glyph_advances_for_direction ()">hb_font_get_glyph_advances_for_direction</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-h-advances" title="hb_font_get_glyph_h_advances ()">hb_font_get_glyph_h_advances</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-v-advances" title="hb_font_get_glyph_v_advances ()">hb_font_get_glyph_v_advances</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/api-index-1-9-0.html b/docs/html/api-index-1-9-0.html
new file mode 100644
index 0000000..c04ee2e
--- /dev/null
+++ b/docs/html/api-index-1-9-0.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new symbols in 1.9.0: 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="pt02.html" title="Part II. Reference manual">
+<link rel="prev" href="api-index-2-0-0.html" title="Index of new symbols in 2.0.0">
+<link rel="next" href="api-index-1-8-6.html" title="Index of new symbols in 1.8.6">
+<meta name="generator" content="GTK-Doc V1.25 (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"><span id="nav_index"><a class="shortcut" href="#idxF">F</a>
+  <span class="dim">|</span> 
+ <a class="shortcut" href="#idxU">U</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="api-index-2-0-0.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-1-8-6.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="api-index-1-9-0"></a>Index of new symbols in 1.9.0</h2></div></div></div>
+<a name="idx"></a><a name="idxF"></a><h3 class="title">F</h3>
+<dt>
+<a class="link" href="harfbuzz-hb-face.html#hb-face-builder-add-table" title="hb_face_builder_add_table ()">hb_face_builder_add_table</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-face.html#hb-face-builder-create" title="hb_face_builder_create ()">hb_face_builder_create</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-face.html#hb-face-collect-unicodes" title="hb_face_collect_unicodes ()">hb_face_collect_unicodes</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-face.html#hb-face-collect-variation-selectors" title="hb_face_collect_variation_selectors ()">hb_face_collect_variation_selectors</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-face.html#hb-face-collect-variation-unicodes" title="hb_face_collect_variation_unicodes ()">hb_face_collect_variation_unicodes</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
+</dt>
+<dd></dd>
+<a name="idxU"></a><h3 class="title">U</h3>
+<dt>
+<a class="link" href="harfbuzz-hb-unicode.html#HB-UNICODE-MAX:CAPS" title="HB_UNICODE_MAX">HB_UNICODE_MAX</a>, macro in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/api-index-2-0-0.html b/docs/html/api-index-2-0-0.html
new file mode 100644
index 0000000..bf4c644
--- /dev/null
+++ b/docs/html/api-index-2-0-0.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new symbols in 2.0.0: 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="pt02.html" title="Part II. Reference manual">
+<link rel="prev" href="api-index-2-1-0.html" title="Index of new symbols in 2.1.0">
+<link rel="next" href="api-index-1-9-0.html" title="Index of new symbols in 1.9.0">
+<meta name="generator" content="GTK-Doc V1.25 (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"><span id="nav_index"><a class="shortcut" href="#idxB">B</a>
+  <span class="dim">|</span> 
+ <a class="shortcut" href="#idxF">F</a>
+  <span class="dim">|</span> 
+ <a class="shortcut" href="#idxO">O</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="api-index-2-1-0.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-1-9-0.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="api-index-2-0-0"></a>Index of new symbols in 2.0.0</h2></div></div></div>
+<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
+<dt>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-invisible-glyph" title="hb_buffer_get_invisible_glyph ()">hb_buffer_get_invisible_glyph</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-invisible-glyph" title="hb_buffer_set_invisible_glyph ()">hb_buffer_set_invisible_glyph</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
+</dt>
+<dd></dd>
+<a name="idxF"></a><h3 class="title">F</h3>
+<dt>
+<a class="link" href="harfbuzz-hb-shape.html#HB-FEATURE-GLOBAL-END:CAPS" title="HB_FEATURE_GLOBAL_END">HB_FEATURE_GLOBAL_END</a>, macro in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-shape.html#HB-FEATURE-GLOBAL-START:CAPS" title="HB_FEATURE_GLOBAL_START">HB_FEATURE_GLOBAL_START</a>, macro in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-nominal-glyphs-func" title="hb_font_funcs_set_nominal_glyphs_func ()">hb_font_funcs_set_nominal_glyphs_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+</dt>
+<dd></dd>
+<a name="idxO"></a><h3 class="title">O</h3>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-feature-get-characters" title="hb_ot_layout_feature_get_characters ()">hb_ot_layout_feature_get_characters</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-feature-get-name-ids" title="hb_ot_layout_feature_get_name_ids ()">hb_ot_layout_feature_get_name_ids</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-script-select-language" title="hb_ot_layout_script_select_language ()">hb_ot_layout_script_select_language</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-select-script" title="hb_ot_layout_table_select_script ()">hb_ot_layout_table_select_script</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-MAX-TAGS-PER-LANGUAGE:CAPS" title="HB_OT_MAX_TAGS_PER_LANGUAGE">HB_OT_MAX_TAGS_PER_LANGUAGE</a>, macro in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-MAX-TAGS-PER-SCRIPT:CAPS" title="HB_OT_MAX_TAGS_PER_SCRIPT">HB_OT_MAX_TAGS_PER_SCRIPT</a>, macro in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t">hb_ot_name_id_t</a>, typedef in <a class="link" href="harfbuzz-hb-ot-name.html" title="hb-ot-name">hb-ot-name</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-tags-from-script-and-language" title="hb_ot_tags_from_script_and_language ()">hb_ot_tags_from_script_and_language</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-tags-to-script-and-language" title="hb_ot_tags_to_script_and_language ()">hb_ot_tags_to_script_and_language</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/api-index-2-1-0.html b/docs/html/api-index-2-1-0.html
new file mode 100644
index 0000000..f1e19aa
--- /dev/null
+++ b/docs/html/api-index-2-1-0.html
@@ -0,0 +1,121 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Index of new symbols in 2.1.0: 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="pt02.html" title="Part II. Reference manual">
+<link rel="prev" href="deprecated-api-index.html" title="Index of deprecated API">
+<link rel="next" href="api-index-2-0-0.html" title="Index of new symbols in 2.0.0">
+<meta name="generator" content="GTK-Doc V1.25 (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"><span id="nav_index"><a class="shortcut" href="#idxC">C</a>
+  <span class="dim">|</span> 
+ <a class="shortcut" href="#idxO">O</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="deprecated-api-index.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-2-0-0.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="api-index-2-1-0"></a>Index of new symbols in 2.1.0</h2></div></div></div>
+<a name="idx"></a><a name="idxC"></a><h3 class="title">C</h3>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-color-get-alpha" title="hb_color_get_alpha()">hb_color_get_alpha</a>, macro in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-color-get-blue" title="hb_color_get_blue()">hb_color_get_blue</a>, macro in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-color-get-green" title="hb_color_get_green()">hb_color_get_green</a>, macro in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-color-get-red" title="hb_color_get_red()">hb_color_get_red</a>, macro in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-color-t" title="hb_color_t">hb_color_t</a>, typedef in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<a name="idxO"></a><h3 class="title">O</h3>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-glyph-get-layers" title="hb_ot_color_glyph_get_layers ()">hb_ot_color_glyph_get_layers</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-glyph-reference-png" title="hb_ot_color_glyph_reference_png ()">hb_ot_color_glyph_reference_png</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-glyph-reference-svg" title="hb_ot_color_glyph_reference_svg ()">hb_ot_color_glyph_reference_svg</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-has-layers" title="hb_ot_color_has_layers ()">hb_ot_color_has_layers</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-has-palettes" title="hb_ot_color_has_palettes ()">hb_ot_color_has_palettes</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-has-png" title="hb_ot_color_has_png ()">hb_ot_color_has_png</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-has-svg" title="hb_ot_color_has_svg ()">hb_ot_color_has_svg</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-color-get-name-id" title="hb_ot_color_palette_color_get_name_id ()">hb_ot_color_palette_color_get_name_id</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-flags-t" title="enum hb_ot_color_palette_flags_t">hb_ot_color_palette_flags_t</a>, enum in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-get-colors" title="hb_ot_color_palette_get_colors ()">hb_ot_color_palette_get_colors</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-get-count" title="hb_ot_color_palette_get_count ()">hb_ot_color_palette_get_count</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-get-flags" title="hb_ot_color_palette_get_flags ()">hb_ot_color_palette_get_flags</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-get-name-id" title="hb_ot_color_palette_get_name_id ()">hb_ot_color_palette_get_name_id</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-get-utf16" title="hb_ot_name_get_utf16 ()">hb_ot_name_get_utf16</a>, function in <a class="link" href="harfbuzz-hb-ot-name.html" title="hb-ot-name">hb-ot-name</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-get-utf32" title="hb_ot_name_get_utf32 ()">hb_ot_name_get_utf32</a>, function in <a class="link" href="harfbuzz-hb-ot-name.html" title="hb-ot-name">hb-ot-name</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-get-utf8" title="hb_ot_name_get_utf8 ()">hb_ot_name_get_utf8</a>, function in <a class="link" href="harfbuzz-hb-ot-name.html" title="hb-ot-name">hb-ot-name</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-list-names" title="hb_ot_name_list_names ()">hb_ot_name_list_names</a>, function in <a class="link" href="harfbuzz-hb-ot-name.html" title="hb-ot-name">hb-ot-name</a>
+</dt>
+<dd></dd>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/api-index-full.html b/docs/html/api-index-full.html
index 591bfe4..5e0cb84 100644
--- a/docs/html/api-index-full.html
+++ b/docs/html/api-index-full.html
@@ -6,14 +6,16 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="object-tree.html" title="Object Hierarchy">
-<link rel="next" href="api-index-0-9-2.html" title="Index of new symbols in 0.9.2">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="harfbuzz-hb-uniscribe.html" title="hb-uniscribe">
+<link rel="next" href="deprecated-api-index.html" title="Index of deprecated API">
+<meta name="generator" content="GTK-Doc V1.25 (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"><span id="nav_index"><a class="shortcut" href="#idxB">B</a>
+<td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxA">A</a>
+  <span class="dim">|</span> 
+ <a class="shortcut" href="#idxB">B</a>
 <span class="dim">|</span> 
<a class="shortcut" href="#idxC">C</a>
 <span class="dim">|</span> 
@@ -44,13 +46,50 @@
<a class="shortcut" href="#idxV">V</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="object-tree.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-0-9-2.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-uniscribe.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="deprecated-api-index.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
<a name="api-index-full"></a>API Index</h2></div></div></div>
-<a name="idx"></a><a name="idxB"></a><h3 class="title">B</h3>
+<a name="idx"></a><a name="idxA"></a><h3 class="title">A</h3>
+<dt>
+<a class="link" href="harfbuzz-hb-aat-layout.html#hb-aat-layout-feature-selector-t" title="enum hb_aat_layout_feature_selector_t">hb_aat_layout_feature_selector_t</a>, enum in <a class="link" href="harfbuzz-hb-aat-layout.html" title="hb-aat-layout">hb-aat-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-aat-layout.html#hb-aat-layout-feature-type-get-name-id" title="hb_aat_layout_feature_type_get_name_id ()">hb_aat_layout_feature_type_get_name_id</a>, function in <a class="link" href="harfbuzz-hb-aat-layout.html" title="hb-aat-layout">hb-aat-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-aat-layout.html#hb-aat-layout-feature-type-get-selector-infos" title="hb_aat_layout_feature_type_get_selector_infos ()">hb_aat_layout_feature_type_get_selector_infos</a>, function in <a class="link" href="harfbuzz-hb-aat-layout.html" title="hb-aat-layout">hb-aat-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-aat-layout.html#hb-aat-layout-feature-type-t" title="enum hb_aat_layout_feature_type_t">hb_aat_layout_feature_type_t</a>, enum in <a class="link" href="harfbuzz-hb-aat-layout.html" title="hb-aat-layout">hb-aat-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-aat-layout.html#hb-aat-layout-get-feature-types" title="hb_aat_layout_get_feature_types ()">hb_aat_layout_get_feature_types</a>, function in <a class="link" href="harfbuzz-hb-aat-layout.html" title="hb-aat-layout">hb-aat-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-aat-layout.html#hb-aat-layout-has-positioning" title="hb_aat_layout_has_positioning ()">hb_aat_layout_has_positioning</a>, function in <a class="link" href="harfbuzz-hb-aat-layout.html" title="hb-aat-layout">hb-aat-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-aat-layout.html#hb-aat-layout-has-substitution" title="hb_aat_layout_has_substitution ()">hb_aat_layout_has_substitution</a>, function in <a class="link" href="harfbuzz-hb-aat-layout.html" title="hb-aat-layout">hb-aat-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-aat-layout.html#hb-aat-layout-has-tracking" title="hb_aat_layout_has_tracking ()">hb_aat_layout_has_tracking</a>, function in <a class="link" href="harfbuzz-hb-aat-layout.html" title="hb-aat-layout">hb-aat-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-NO-SELECTOR-INDEX:CAPS" title="HB_AAT_LAYOUT_NO_SELECTOR_INDEX">HB_AAT_LAYOUT_NO_SELECTOR_INDEX</a>, macro in <a class="link" href="harfbuzz-hb-aat-layout.html" title="hb-aat-layout">hb-aat-layout</a>
+</dt>
+<dd></dd>
+<a name="idxB"></a><h3 class="title">B</h3>
<dt>
<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>, function in <a class="link" href="harfbuzz-hb-blob.html" title="hb-blob">hb-blob</a>
</dt>
@@ -116,67 +155,67 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add" title="hb_buffer_add ()">hb_buffer_add</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add" title="hb_buffer_add ()">hb_buffer_add</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()">hb_buffer_add_codepoints</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()">hb_buffer_add_codepoints</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-latin1" title="hb_buffer_add_latin1 ()">hb_buffer_add_latin1</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-latin1" title="hb_buffer_add_latin1 ()">hb_buffer_add_latin1</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-utf16" title="hb_buffer_add_utf16 ()">hb_buffer_add_utf16</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf16" title="hb_buffer_add_utf16 ()">hb_buffer_add_utf16</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-utf32" title="hb_buffer_add_utf32 ()">hb_buffer_add_utf32</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf32" title="hb_buffer_add_utf32 ()">hb_buffer_add_utf32</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-utf8" title="hb_buffer_add_utf8 ()">hb_buffer_add_utf8</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf8" title="hb_buffer_add_utf8 ()">hb_buffer_add_utf8</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-allocation-successful" title="hb_buffer_allocation_successful ()">hb_buffer_allocation_successful</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-allocation-successful" title="hb_buffer_allocation_successful ()">hb_buffer_allocation_successful</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-append" title="hb_buffer_append ()">hb_buffer_append</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-append" title="hb_buffer_append ()">hb_buffer_append</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-clear-contents" title="hb_buffer_clear_contents ()">hb_buffer_clear_contents</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-clear-contents" title="hb_buffer_clear_contents ()">hb_buffer_clear_contents</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t">hb_buffer_cluster_level_t</a>, enum in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t">hb_buffer_cluster_level_t</a>, enum in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t">hb_buffer_content_type_t</a>, enum in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t">hb_buffer_content_type_t</a>, enum in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-create" title="hb_buffer_create ()">hb_buffer_create</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-create" title="hb_buffer_create ()">hb_buffer_create</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-deserialize-glyphs" title="hb_buffer_deserialize_glyphs ()">hb_buffer_deserialize_glyphs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-deserialize-glyphs" title="hb_buffer_deserialize_glyphs ()">hb_buffer_deserialize_glyphs</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-destroy" title="hb_buffer_destroy ()">hb_buffer_destroy</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-destroy" title="hb_buffer_destroy ()">hb_buffer_destroy</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-diff" title="hb_buffer_diff ()">hb_buffer_diff</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-diff" title="hb_buffer_diff ()">hb_buffer_diff</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-diff-flags-t" title="enum hb_buffer_diff_flags_t">hb_buffer_diff_flags_t</a>, enum in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-diff-flags-t" title="enum hb_buffer_diff_flags_t">hb_buffer_diff_flags_t</a>, enum in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
@@ -184,103 +223,107 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t">hb_buffer_flags_t</a>, enum in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t">hb_buffer_flags_t</a>, enum in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-cluster-level" title="hb_buffer_get_cluster_level ()">hb_buffer_get_cluster_level</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-cluster-level" title="hb_buffer_get_cluster_level ()">hb_buffer_get_cluster_level</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-content-type" title="hb_buffer_get_content_type ()">hb_buffer_get_content_type</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-content-type" title="hb_buffer_get_content_type ()">hb_buffer_get_content_type</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-direction" title="hb_buffer_get_direction ()">hb_buffer_get_direction</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-direction" title="hb_buffer_get_direction ()">hb_buffer_get_direction</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-empty" title="hb_buffer_get_empty ()">hb_buffer_get_empty</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-empty" title="hb_buffer_get_empty ()">hb_buffer_get_empty</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-flags" title="hb_buffer_get_flags ()">hb_buffer_get_flags</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-flags" title="hb_buffer_get_flags ()">hb_buffer_get_flags</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-glyph-infos" title="hb_buffer_get_glyph_infos ()">hb_buffer_get_glyph_infos</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-glyph-infos" title="hb_buffer_get_glyph_infos ()">hb_buffer_get_glyph_infos</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-glyph-positions" title="hb_buffer_get_glyph_positions ()">hb_buffer_get_glyph_positions</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-glyph-positions" title="hb_buffer_get_glyph_positions ()">hb_buffer_get_glyph_positions</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-language" title="hb_buffer_get_language ()">hb_buffer_get_language</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-invisible-glyph" title="hb_buffer_get_invisible_glyph ()">hb_buffer_get_invisible_glyph</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-length" title="hb_buffer_get_length ()">hb_buffer_get_length</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-language" title="hb_buffer_get_language ()">hb_buffer_get_language</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-replacement-codepoint" title="hb_buffer_get_replacement_codepoint ()">hb_buffer_get_replacement_codepoint</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-length" title="hb_buffer_get_length ()">hb_buffer_get_length</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-script" title="hb_buffer_get_script ()">hb_buffer_get_script</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-replacement-codepoint" title="hb_buffer_get_replacement_codepoint ()">hb_buffer_get_replacement_codepoint</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-segment-properties" title="hb_buffer_get_segment_properties ()">hb_buffer_get_segment_properties</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-script" title="hb_buffer_get_script ()">hb_buffer_get_script</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-unicode-funcs" title="hb_buffer_get_unicode_funcs ()">hb_buffer_get_unicode_funcs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-segment-properties" title="hb_buffer_get_segment_properties ()">hb_buffer_get_segment_properties</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-user-data" title="hb_buffer_get_user_data ()">hb_buffer_get_user_data</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-unicode-funcs" title="hb_buffer_get_unicode_funcs ()">hb_buffer_get_unicode_funcs</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-guess-segment-properties" title="hb_buffer_guess_segment_properties ()">hb_buffer_guess_segment_properties</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-user-data" title="hb_buffer_get_user_data ()">hb_buffer_get_user_data</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-message-func-t" title="hb_buffer_message_func_t ()">hb_buffer_message_func_t</a>, user_function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-guess-segment-properties" title="hb_buffer_guess_segment_properties ()">hb_buffer_guess_segment_properties</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-normalize-glyphs" title="hb_buffer_normalize_glyphs ()">hb_buffer_normalize_glyphs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-message-func-t" title="hb_buffer_message_func_t ()">hb_buffer_message_func_t</a>, user_function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-pre-allocate" title="hb_buffer_pre_allocate ()">hb_buffer_pre_allocate</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-normalize-glyphs" title="hb_buffer_normalize_glyphs ()">hb_buffer_normalize_glyphs</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reference" title="hb_buffer_reference ()">hb_buffer_reference</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-pre-allocate" title="hb_buffer_pre_allocate ()">hb_buffer_pre_allocate</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS" title="HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT">HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT</a>, macro in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reference" title="hb_buffer_reference ()">hb_buffer_reference</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reset" title="hb_buffer_reset ()">hb_buffer_reset</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS" title="HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT">HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT</a>, macro in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reverse" title="hb_buffer_reverse ()">hb_buffer_reverse</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reset" title="hb_buffer_reset ()">hb_buffer_reset</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reverse-clusters" title="hb_buffer_reverse_clusters ()">hb_buffer_reverse_clusters</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reverse" title="hb_buffer_reverse ()">hb_buffer_reverse</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reverse-range" title="hb_buffer_reverse_range ()">hb_buffer_reverse_range</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reverse-clusters" title="hb_buffer_reverse_clusters ()">hb_buffer_reverse_clusters</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reverse-range" title="hb_buffer_reverse_range ()">hb_buffer_reverse_range</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
@@ -288,79 +331,83 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t">hb_buffer_serialize_flags_t</a>, enum in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t">hb_buffer_serialize_flags_t</a>, enum in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-from-string" title="hb_buffer_serialize_format_from_string ()">hb_buffer_serialize_format_from_string</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-from-string" title="hb_buffer_serialize_format_from_string ()">hb_buffer_serialize_format_from_string</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t">hb_buffer_serialize_format_t</a>, enum in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t">hb_buffer_serialize_format_t</a>, enum in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-to-string" title="hb_buffer_serialize_format_to_string ()">hb_buffer_serialize_format_to_string</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-to-string" title="hb_buffer_serialize_format_to_string ()">hb_buffer_serialize_format_to_string</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()">hb_buffer_serialize_glyphs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()">hb_buffer_serialize_glyphs</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-list-formats" title="hb_buffer_serialize_list_formats ()">hb_buffer_serialize_list_formats</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-list-formats" title="hb_buffer_serialize_list_formats ()">hb_buffer_serialize_list_formats</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-cluster-level" title="hb_buffer_set_cluster_level ()">hb_buffer_set_cluster_level</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-cluster-level" title="hb_buffer_set_cluster_level ()">hb_buffer_set_cluster_level</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-content-type" title="hb_buffer_set_content_type ()">hb_buffer_set_content_type</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-content-type" title="hb_buffer_set_content_type ()">hb_buffer_set_content_type</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()">hb_buffer_set_direction</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()">hb_buffer_set_direction</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-flags" title="hb_buffer_set_flags ()">hb_buffer_set_flags</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-flags" title="hb_buffer_set_flags ()">hb_buffer_set_flags</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-language" title="hb_buffer_set_language ()">hb_buffer_set_language</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-invisible-glyph" title="hb_buffer_set_invisible_glyph ()">hb_buffer_set_invisible_glyph</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-length" title="hb_buffer_set_length ()">hb_buffer_set_length</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-language" title="hb_buffer_set_language ()">hb_buffer_set_language</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-message-func" title="hb_buffer_set_message_func ()">hb_buffer_set_message_func</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-length" title="hb_buffer_set_length ()">hb_buffer_set_length</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()">hb_buffer_set_replacement_codepoint</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-message-func" title="hb_buffer_set_message_func ()">hb_buffer_set_message_func</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-script" title="hb_buffer_set_script ()">hb_buffer_set_script</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()">hb_buffer_set_replacement_codepoint</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-segment-properties" title="hb_buffer_set_segment_properties ()">hb_buffer_set_segment_properties</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-script" title="hb_buffer_set_script ()">hb_buffer_set_script</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-unicode-funcs" title="hb_buffer_set_unicode_funcs ()">hb_buffer_set_unicode_funcs</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-segment-properties" title="hb_buffer_set_segment_properties ()">hb_buffer_set_segment_properties</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-user-data" title="hb_buffer_set_user_data ()">hb_buffer_set_user_data</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-unicode-funcs" title="hb_buffer_set_unicode_funcs ()">hb_buffer_set_unicode_funcs</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-t">hb_buffer_t</a>, typedef in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-user-data" title="hb_buffer_set_user_data ()">hb_buffer_set_user_data</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t">hb_buffer_t</a>, typedef in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<a name="idxC"></a><h3 class="title">C</h3>
@@ -369,6 +416,30 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#HB-COLOR:CAPS" title="HB_COLOR()">HB_COLOR</a>, macro in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-color-get-alpha" title="hb_color_get_alpha()">hb_color_get_alpha</a>, macro in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-color-get-blue" title="hb_color_get_blue()">hb_color_get_blue</a>, macro in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-color-get-green" title="hb_color_get_green()">hb_color_get_green</a>, macro in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-color-get-red" title="hb_color_get_red()">hb_color_get_red</a>, macro in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-color-t" title="hb_color_t">hb_color_t</a>, typedef in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="harfbuzz-hb-coretext.html#hb-coretext-face-create" title="hb_coretext_face_create ()">hb_coretext_face_create</a>, function in <a class="link" href="harfbuzz-hb-coretext.html" title="hb-coretext">hb-coretext</a>
</dt>
<dd></dd>
@@ -439,6 +510,26 @@
<dd></dd>
<a name="idxF"></a><h3 class="title">F</h3>
<dt>
+<a class="link" href="harfbuzz-hb-face.html#hb-face-builder-add-table" title="hb_face_builder_add_table ()">hb_face_builder_add_table</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-face.html#hb-face-builder-create" title="hb_face_builder_create ()">hb_face_builder_create</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-face.html#hb-face-collect-unicodes" title="hb_face_collect_unicodes ()">hb_face_collect_unicodes</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-face.html#hb-face-collect-variation-selectors" title="hb_face_collect_variation_selectors ()">hb_face_collect_variation_selectors</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-face.html#hb-face-collect-variation-unicodes" title="hb_face_collect_variation_unicodes ()">hb_face_collect_variation_unicodes</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="harfbuzz-hb-face.html#hb-face-count" title="hb_face_count ()">hb_face_count</a>, function in <a class="link" href="harfbuzz-hb-face.html" title="hb-face">hb-face</a>
</dt>
<dd></dd>
@@ -519,15 +610,23 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-feature-from-string" title="hb_feature_from_string ()">hb_feature_from_string</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
+<a class="link" href="harfbuzz-hb-shape.html#hb-feature-from-string" title="hb_feature_from_string ()">hb_feature_from_string</a>, function in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-shape.html#HB-FEATURE-GLOBAL-END:CAPS" title="HB_FEATURE_GLOBAL_END">HB_FEATURE_GLOBAL_END</a>, macro in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-feature-t-struct" title="hb_feature_t">hb_feature_t</a>, struct in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
+<a class="link" href="harfbuzz-hb-shape.html#HB-FEATURE-GLOBAL-START:CAPS" title="HB_FEATURE_GLOBAL_START">HB_FEATURE_GLOBAL_START</a>, macro in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-feature-to-string" title="hb_feature_to_string ()">hb_feature_to_string</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
+<a class="link" href="harfbuzz-hb-shape.html#hb-feature-t-struct" title="hb_feature_t">hb_feature_t</a>, struct in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-shape.html#hb-feature-to-string" title="hb_feature_to_string ()">hb_feature_to_string</a>, function in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
</dt>
<dd></dd>
<dt>
@@ -595,7 +694,7 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-funcs-set-glyph-func" title="hb_font_funcs_set_glyph_func ()">hb_font_funcs_set_glyph_func</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-advances-func" title="hb_font_funcs_set_glyph_h_advances_func ()">hb_font_funcs_set_glyph_h_advances_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
</dt>
<dd></dd>
<dt>
@@ -603,7 +702,7 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-kerning-func" title="hb_font_funcs_set_glyph_h_kerning_func ()">hb_font_funcs_set_glyph_h_kerning_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-funcs-set-glyph-h-kerning-func" title="hb_font_funcs_set_glyph_h_kerning_func ()">hb_font_funcs_set_glyph_h_kerning_func</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<dt>
@@ -615,11 +714,15 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-advances-func" title="hb_font_funcs_set_glyph_v_advances_func ()">hb_font_funcs_set_glyph_v_advances_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-advance-func" title="hb_font_funcs_set_glyph_v_advance_func ()">hb_font_funcs_set_glyph_v_advance_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-kerning-func" title="hb_font_funcs_set_glyph_v_kerning_func ()">hb_font_funcs_set_glyph_v_kerning_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-funcs-set-glyph-v-kerning-func" title="hb_font_funcs_set_glyph_v_kerning_func ()">hb_font_funcs_set_glyph_v_kerning_func</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<dt>
@@ -627,6 +730,10 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-nominal-glyphs-func" title="hb_font_funcs_set_nominal_glyphs_func ()">hb_font_funcs_set_nominal_glyphs_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-nominal-glyph-func" title="hb_font_funcs_set_nominal_glyph_func ()">hb_font_funcs_set_nominal_glyph_func</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
</dt>
<dd></dd>
@@ -671,6 +778,14 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-advances-for-direction" title="hb_font_get_glyph_advances_for_direction ()">hb_font_get_glyph_advances_for_direction</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-advances-func-t" title="hb_font_get_glyph_advances_func_t ()">hb_font_get_glyph_advances_func_t</a>, user_function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-advance-for-direction" title="hb_font_get_glyph_advance_for_direction ()">hb_font_get_glyph_advance_for_direction</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
</dt>
<dd></dd>
@@ -719,15 +834,23 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-h-advances" title="hb_font_get_glyph_h_advances ()">hb_font_get_glyph_h_advances</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-h-advances-func-t" title="hb_font_get_glyph_h_advances_func_t">hb_font_get_glyph_h_advances_func_t</a>, typedef in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-h-advance-func-t" title="hb_font_get_glyph_h_advance_func_t">hb_font_get_glyph_h_advance_func_t</a>, typedef in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-h-kerning" title="hb_font_get_glyph_h_kerning ()">hb_font_get_glyph_h_kerning</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-h-kerning" title="hb_font_get_glyph_h_kerning ()">hb_font_get_glyph_h_kerning</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-h-kerning-func-t" title="hb_font_get_glyph_h_kerning_func_t">hb_font_get_glyph_h_kerning_func_t</a>, typedef in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-h-kerning-func-t" title="hb_font_get_glyph_h_kerning_func_t">hb_font_get_glyph_h_kerning_func_t</a>, typedef in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<dt>
@@ -739,11 +862,11 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-kerning-for-direction" title="hb_font_get_glyph_kerning_for_direction ()">hb_font_get_glyph_kerning_for_direction</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-kerning-for-direction" title="hb_font_get_glyph_kerning_for_direction ()">hb_font_get_glyph_kerning_for_direction</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-kerning-func-t" title="hb_font_get_glyph_kerning_func_t ()">hb_font_get_glyph_kerning_func_t</a>, user_function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-kerning-func-t" title="hb_font_get_glyph_kerning_func_t ()">hb_font_get_glyph_kerning_func_t</a>, user_function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<dt>
@@ -767,15 +890,23 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-v-advances" title="hb_font_get_glyph_v_advances ()">hb_font_get_glyph_v_advances</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-v-advances-func-t" title="hb_font_get_glyph_v_advances_func_t">hb_font_get_glyph_v_advances_func_t</a>, typedef in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-v-advance-func-t" title="hb_font_get_glyph_v_advance_func_t">hb_font_get_glyph_v_advance_func_t</a>, typedef in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-v-kerning" title="hb_font_get_glyph_v_kerning ()">hb_font_get_glyph_v_kerning</a>, function in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-v-kerning" title="hb_font_get_glyph_v_kerning ()">hb_font_get_glyph_v_kerning</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-v-kerning-func-t" title="hb_font_get_glyph_v_kerning_func_t">hb_font_get_glyph_v_kerning_func_t</a>, typedef in <a class="link" href="harfbuzz-hb-font.html" title="hb-font">hb-font</a>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-v-kerning-func-t" title="hb_font_get_glyph_v_kerning_func_t">hb_font_get_glyph_v_kerning_func_t</a>, typedef in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<dt>
@@ -964,19 +1095,15 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-glyph-flags-t" title="enum hb_glyph_flags_t">hb_glyph_flags_t</a>, enum in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-get-glyph-flags" title="hb_glyph_info_get_glyph_flags ()">hb_glyph_info_get_glyph_flags</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-flags-t" title="enum hb_glyph_flags_t">hb_glyph_flags_t</a>, enum in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t-struct" title="hb_glyph_info_t">hb_glyph_info_t</a>, struct in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-get-glyph-flags" title="hb_glyph_info_get_glyph_flags ()">hb_glyph_info_get_glyph_flags</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-glyph-position-t-struct" title="hb_glyph_position_t">hb_glyph_position_t</a>, struct in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t-struct" title="hb_glyph_position_t">hb_glyph_position_t</a>, struct in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
@@ -1044,10 +1171,18 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-map-get-type" title="hb_gobject_map_get_type ()">hb_gobject_map_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-memory-mode-get-type" title="hb_gobject_memory_mode_get_type ()">hb_gobject_memory_mode_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
</dt>
<dd></dd>
<dt>
+<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-ot-color-palette-flags-get-type" title="hb_gobject_ot_color_palette_flags_get_type ()">hb_gobject_ot_color_palette_flags_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-ot-layout-glyph-class-get-type" title="hb_gobject_ot_layout_glyph_class_get_type ()">hb_gobject_ot_layout_glyph_class_get_type</a>, function in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
</dt>
<dd></dd>
@@ -1152,10 +1287,18 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-MAP:CAPS" title="HB_GOBJECT_TYPE_MAP">HB_GOBJECT_TYPE_MAP</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-MEMORY-MODE:CAPS" title="HB_GOBJECT_TYPE_MEMORY_MODE">HB_GOBJECT_TYPE_MEMORY_MODE</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
</dt>
<dd></dd>
<dt>
+<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-OT-COLOR-PALETTE-FLAGS:CAPS" title="HB_GOBJECT_TYPE_OT_COLOR_PALETTE_FLAGS">HB_GOBJECT_TYPE_OT_COLOR_PALETTE_FLAGS</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-OT-LAYOUT-GLYPH-CLASS:CAPS" title="HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS">HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS</a>, macro in <a class="link" href="harfbuzz-hb-gobject.html" title="hb-gobject">hb-gobject</a>
</dt>
<dd></dd>
@@ -1232,10 +1375,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-graphite2.html#hb-graphite2-font-get-gr-font" title="hb_graphite2_font_get_gr_font ()">hb_graphite2_font_get_gr_font</a>, function in <a class="link" href="harfbuzz-hb-graphite2.html" title="hb-graphite2">hb-graphite2</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-graphite2.html#HB-GRAPHITE2-TAG-SILF:CAPS" title="HB_GRAPHITE2_TAG_SILF">HB_GRAPHITE2_TAG_SILF</a>, macro in <a class="link" href="harfbuzz-hb-graphite2.html" title="hb-graphite2">hb-graphite2</a>
</dt>
<dd></dd>
@@ -1275,67 +1414,67 @@
<dd></dd>
<a name="idxM"></a><h3 class="title">M</h3>
<dt>
-hb_map_allocation_successful, function in hb-map
+<a class="link" href="harfbuzz-hb-map.html#hb-map-allocation-successful" title="hb_map_allocation_successful ()">hb_map_allocation_successful</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
</dt>
<dd></dd>
<dt>
-hb_map_clear, function in hb-map
+<a class="link" href="harfbuzz-hb-map.html#hb-map-clear" title="hb_map_clear ()">hb_map_clear</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
</dt>
<dd></dd>
<dt>
-hb_map_create, function in hb-map
+<a class="link" href="harfbuzz-hb-map.html#hb-map-create" title="hb_map_create ()">hb_map_create</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
</dt>
<dd></dd>
<dt>
-hb_map_del, function in hb-map
+<a class="link" href="harfbuzz-hb-map.html#hb-map-del" title="hb_map_del ()">hb_map_del</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
</dt>
<dd></dd>
<dt>
-hb_map_destroy, function in hb-map
+<a class="link" href="harfbuzz-hb-map.html#hb-map-destroy" title="hb_map_destroy ()">hb_map_destroy</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
</dt>
<dd></dd>
<dt>
-hb_map_get, function in hb-map
+<a class="link" href="harfbuzz-hb-map.html#hb-map-get" title="hb_map_get ()">hb_map_get</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
</dt>
<dd></dd>
<dt>
-hb_map_get_empty, function in hb-map
+<a class="link" href="harfbuzz-hb-map.html#hb-map-get-empty" title="hb_map_get_empty ()">hb_map_get_empty</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
</dt>
<dd></dd>
<dt>
-hb_map_get_population, function in hb-map
+<a class="link" href="harfbuzz-hb-map.html#hb-map-get-population" title="hb_map_get_population ()">hb_map_get_population</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
</dt>
<dd></dd>
<dt>
-hb_map_get_user_data, function in hb-map
+<a class="link" href="harfbuzz-hb-map.html#hb-map-get-user-data" title="hb_map_get_user_data ()">hb_map_get_user_data</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
</dt>
<dd></dd>
<dt>
-hb_map_has, function in hb-map
+<a class="link" href="harfbuzz-hb-map.html#hb-map-has" title="hb_map_has ()">hb_map_has</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
</dt>
<dd></dd>
<dt>
-hb_map_is_empty, function in hb-map
+<a class="link" href="harfbuzz-hb-map.html#hb-map-is-empty" title="hb_map_is_empty ()">hb_map_is_empty</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
</dt>
<dd></dd>
<dt>
-hb_map_reference, function in hb-map
+<a class="link" href="harfbuzz-hb-map.html#hb-map-reference" title="hb_map_reference ()">hb_map_reference</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
</dt>
<dd></dd>
<dt>
-hb_map_set, function in hb-map
+<a class="link" href="harfbuzz-hb-map.html#hb-map-set" title="hb_map_set ()">hb_map_set</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
</dt>
<dd></dd>
<dt>
-hb_map_set_user_data, function in hb-map
+<a class="link" href="harfbuzz-hb-map.html#hb-map-set-user-data" title="hb_map_set_user_data ()">hb_map_set_user_data</a>, function in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
</dt>
<dd></dd>
<dt>
-hb_map_t, typedef in hb-map
+<a class="link" href="harfbuzz-hb-map.html#hb-map-t">hb_map_t</a>, typedef in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
</dt>
<dd></dd>
<dt>
-HB_MAP_VALUE_INVALID, macro in hb-map
+<a class="link" href="harfbuzz-hb-map.html#HB-MAP-VALUE-INVALID:CAPS" title="HB_MAP_VALUE_INVALID">HB_MAP_VALUE_INVALID</a>, macro in <a class="link" href="harfbuzz-hb-map.html" title="hb-map">hb-map</a>
</dt>
<dd></dd>
<dt>
@@ -1348,10 +1487,66 @@ HB_MAP_VALUE_INVALID, macro in hb-map
<dd></dd>
<a name="idxO"></a><h3 class="title">O</h3>
<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-glyph-get-layers" title="hb_ot_color_glyph_get_layers ()">hb_ot_color_glyph_get_layers</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-glyph-reference-png" title="hb_ot_color_glyph_reference_png ()">hb_ot_color_glyph_reference_png</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-glyph-reference-svg" title="hb_ot_color_glyph_reference_svg ()">hb_ot_color_glyph_reference_svg</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-has-layers" title="hb_ot_color_has_layers ()">hb_ot_color_has_layers</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-has-palettes" title="hb_ot_color_has_palettes ()">hb_ot_color_has_palettes</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-has-png" title="hb_ot_color_has_png ()">hb_ot_color_has_png</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-has-svg" title="hb_ot_color_has_svg ()">hb_ot_color_has_svg</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-color-get-name-id" title="hb_ot_color_palette_color_get_name_id ()">hb_ot_color_palette_color_get_name_id</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-flags-t" title="enum hb_ot_color_palette_flags_t">hb_ot_color_palette_flags_t</a>, enum in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-get-colors" title="hb_ot_color_palette_get_colors ()">hb_ot_color_palette_get_colors</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-get-count" title="hb_ot_color_palette_get_count ()">hb_ot_color_palette_get_count</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-get-flags" title="hb_ot_color_palette_get_flags ()">hb_ot_color_palette_get_flags</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-get-name-id" title="hb_ot_color_palette_get_name_id ()">hb_ot_color_palette_get_name_id</a>, function in <a class="link" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">hb-ot-color</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="harfbuzz-hb-ot-font.html#hb-ot-font-set-funcs" title="hb_ot_font_set_funcs ()">hb_ot_font_set_funcs</a>, function in <a class="link" href="harfbuzz-hb-ot-font.html" title="hb-ot-font">hb-ot-font</a>
</dt>
<dd></dd>
<dt>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-collect-features" title="hb_ot_layout_collect_features ()">hb_ot_layout_collect_features</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-collect-lookups" title="hb_ot_layout_collect_lookups ()">hb_ot_layout_collect_lookups</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
</dt>
<dd></dd>
@@ -1360,10 +1555,18 @@ HB_MAP_VALUE_INVALID, macro in hb-map
</dt>
<dd></dd>
<dt>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-feature-get-characters" title="hb_ot_layout_feature_get_characters ()">hb_ot_layout_feature_get_characters</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-feature-get-lookups" title="hb_ot_layout_feature_get_lookups ()">hb_ot_layout_feature_get_lookups</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
</dt>
<dd></dd>
<dt>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-feature-get-name-ids" title="hb_ot_layout_feature_get_name_ids ()">hb_ot_layout_feature_get_name_ids</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-feature-with-variations-get-lookups" title="hb_ot_layout_feature_with_variations_get_lookups ()">hb_ot_layout_feature_with_variations_get_lookups</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
</dt>
<dd></dd>
@@ -1456,15 +1659,11 @@ HB_MAP_VALUE_INVALID, macro in hb-map
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-script-find-language" title="hb_ot_layout_script_find_language ()">hb_ot_layout_script_find_language</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-script-get-language-tags" title="hb_ot_layout_script_get_language_tags ()">hb_ot_layout_script_get_language_tags</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-choose-script" title="hb_ot_layout_table_choose_script ()">hb_ot_layout_table_choose_script</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-script-select-language" title="hb_ot_layout_script_select_language ()">hb_ot_layout_script_select_language</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
</dt>
<dd></dd>
<dt>
@@ -1472,7 +1671,7 @@ HB_MAP_VALUE_INVALID, macro in hb-map
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-find-script" title="hb_ot_layout_table_find_script ()">hb_ot_layout_table_find_script</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-ot-layout-table-find-script" title="hb_ot_layout_table_find_script ()">hb_ot_layout_table_find_script</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<dt>
@@ -1488,6 +1687,10 @@ HB_MAP_VALUE_INVALID, macro in hb-map
</dt>
<dd></dd>
<dt>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-select-script" title="hb_ot_layout_table_select_script ()">hb_ot_layout_table_select_script</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="harfbuzz-hb-ot-math.html#hb-ot-math-constant-t" title="enum hb_ot_math_constant_t">hb_ot_math_constant_t</a>, enum in <a class="link" href="harfbuzz-hb-ot-math.html" title="hb-ot-math">hb-ot-math</a>
</dt>
<dd></dd>
@@ -1548,6 +1751,34 @@ HB_MAP_VALUE_INVALID, macro in hb-map
</dt>
<dd></dd>
<dt>
+<a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-MAX-TAGS-PER-LANGUAGE:CAPS" title="HB_OT_MAX_TAGS_PER_LANGUAGE">HB_OT_MAX_TAGS_PER_LANGUAGE</a>, macro in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-MAX-TAGS-PER-SCRIPT:CAPS" title="HB_OT_MAX_TAGS_PER_SCRIPT">HB_OT_MAX_TAGS_PER_SCRIPT</a>, macro in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-get-utf16" title="hb_ot_name_get_utf16 ()">hb_ot_name_get_utf16</a>, function in <a class="link" href="harfbuzz-hb-ot-name.html" title="hb-ot-name">hb-ot-name</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-get-utf32" title="hb_ot_name_get_utf32 ()">hb_ot_name_get_utf32</a>, function in <a class="link" href="harfbuzz-hb-ot-name.html" title="hb-ot-name">hb-ot-name</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-get-utf8" title="hb_ot_name_get_utf8 ()">hb_ot_name_get_utf8</a>, function in <a class="link" href="harfbuzz-hb-ot-name.html" title="hb-ot-name">hb-ot-name</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t">hb_ot_name_id_t</a>, typedef in <a class="link" href="harfbuzz-hb-ot-name.html" title="hb-ot-name">hb-ot-name</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-list-names" title="hb_ot_name_list_names ()">hb_ot_name_list_names</a>, function in <a class="link" href="harfbuzz-hb-ot-name.html" title="hb-ot-name">hb-ot-name</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="harfbuzz-hb-ot-shape.html#hb-ot-shape-glyphs-closure" title="hb_ot_shape_glyphs_closure ()">hb_ot_shape_glyphs_closure</a>, function in <a class="link" href="harfbuzz-hb-ot-shape.html" title="hb-ot-shape">hb-ot-shape</a>
</dt>
<dd></dd>
@@ -1556,19 +1787,23 @@ HB_MAP_VALUE_INVALID, macro in hb-map
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-ot-tag.html#hb-ot-tags-from-script" title="hb_ot_tags_from_script ()">hb_ot_tags_from_script</a>, function in <a class="link" href="harfbuzz-hb-ot-tag.html" title="hb-ot-tag">hb-ot-tag</a>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-tags-from-script-and-language" title="hb_ot_tags_from_script_and_language ()">hb_ot_tags_from_script_and_language</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-tags-to-script-and-language" title="hb_ot_tags_to_script_and_language ()">hb_ot_tags_to_script_and_language</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-ot-tag.html#HB-OT-TAG-DEFAULT-LANGUAGE:CAPS" title="HB_OT_TAG_DEFAULT_LANGUAGE">HB_OT_TAG_DEFAULT_LANGUAGE</a>, macro in <a class="link" href="harfbuzz-hb-ot-tag.html" title="hb-ot-tag">hb-ot-tag</a>
+<a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-BASE:CAPS" title="HB_OT_TAG_BASE">HB_OT_TAG_BASE</a>, macro in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-ot-tag.html#HB-OT-TAG-DEFAULT-SCRIPT:CAPS" title="HB_OT_TAG_DEFAULT_SCRIPT">HB_OT_TAG_DEFAULT_SCRIPT</a>, macro in <a class="link" href="harfbuzz-hb-ot-tag.html" title="hb-ot-tag">hb-ot-tag</a>
+<a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-DEFAULT-LANGUAGE:CAPS" title="HB_OT_TAG_DEFAULT_LANGUAGE">HB_OT_TAG_DEFAULT_LANGUAGE</a>, macro in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-ot-tag.html#hb-ot-tag-from-language" title="hb_ot_tag_from_language ()">hb_ot_tag_from_language</a>, function in <a class="link" href="harfbuzz-hb-ot-tag.html" title="hb-ot-tag">hb-ot-tag</a>
+<a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-DEFAULT-SCRIPT:CAPS" title="HB_OT_TAG_DEFAULT_SCRIPT">HB_OT_TAG_DEFAULT_SCRIPT</a>, macro in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
</dt>
<dd></dd>
<dt>
@@ -1592,63 +1827,79 @@ HB_MAP_VALUE_INVALID, macro in hb-map
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-ot-tag.html#hb-ot-tag-to-language" title="hb_ot_tag_to_language ()">hb_ot_tag_to_language</a>, function in <a class="link" href="harfbuzz-hb-ot-tag.html" title="hb-ot-tag">hb-ot-tag</a>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-tag-to-language" title="hb_ot_tag_to_language ()">hb_ot_tag_to_language</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-tag-to-script" title="hb_ot_tag_to_script ()">hb_ot_tag_to_script</a>, function in <a class="link" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">hb-ot-layout</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-ot-tag.html#hb-ot-tag-to-script" title="hb_ot_tag_to_script ()">hb_ot_tag_to_script</a>, function in <a class="link" href="harfbuzz-hb-ot-tag.html" title="hb-ot-tag">hb-ot-tag</a>
+<a class="link" href="harfbuzz-hb-ot-var.html#HB-OT-TAG-VAR-AXIS-ITALIC:CAPS" title="HB_OT_TAG_VAR_AXIS_ITALIC">HB_OT_TAG_VAR_AXIS_ITALIC</a>, macro in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
</dt>
<dd></dd>
<dt>
-HB_OT_TAG_VAR_AXIS_ITALIC, macro in hb-ot-var
+<a class="link" href="harfbuzz-hb-ot-var.html#HB-OT-TAG-VAR-AXIS-OPTICAL-SIZE:CAPS" title="HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE">HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE</a>, macro in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
</dt>
<dd></dd>
<dt>
-HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE, macro in hb-ot-var
+<a class="link" href="harfbuzz-hb-ot-var.html#HB-OT-TAG-VAR-AXIS-SLANT:CAPS" title="HB_OT_TAG_VAR_AXIS_SLANT">HB_OT_TAG_VAR_AXIS_SLANT</a>, macro in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
</dt>
<dd></dd>
<dt>
-HB_OT_TAG_VAR_AXIS_SLANT, macro in hb-ot-var
+<a class="link" href="harfbuzz-hb-ot-var.html#HB-OT-TAG-VAR-AXIS-WEIGHT:CAPS" title="HB_OT_TAG_VAR_AXIS_WEIGHT">HB_OT_TAG_VAR_AXIS_WEIGHT</a>, macro in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
</dt>
<dd></dd>
<dt>
-HB_OT_TAG_VAR_AXIS_WEIGHT, macro in hb-ot-var
+<a class="link" href="harfbuzz-hb-ot-var.html#HB-OT-TAG-VAR-AXIS-WIDTH:CAPS" title="HB_OT_TAG_VAR_AXIS_WIDTH">HB_OT_TAG_VAR_AXIS_WIDTH</a>, macro in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
</dt>
<dd></dd>
<dt>
-HB_OT_TAG_VAR_AXIS_WIDTH, macro in hb-ot-var
+<a class="link" href="harfbuzz-hb-ot-var.html#hb-ot-var-axis-flags-t" title="enum hb_ot_var_axis_flags_t">hb_ot_var_axis_flags_t</a>, enum in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
</dt>
<dd></dd>
<dt>
-hb_ot_var_axis_t, struct in hb-ot-var
+<a class="link" href="harfbuzz-hb-ot-var.html#hb-ot-var-find-axis-info" title="hb_ot_var_find_axis_info ()">hb_ot_var_find_axis_info</a>, function in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
</dt>
<dd></dd>
<dt>
-hb_ot_var_find_axis, function in hb-ot-var
+<a class="link" href="harfbuzz-hb-ot-var.html#hb-ot-var-get-axis-count" title="hb_ot_var_get_axis_count ()">hb_ot_var_get_axis_count</a>, function in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
</dt>
<dd></dd>
<dt>
-hb_ot_var_get_axes, function in hb-ot-var
+<a class="link" href="harfbuzz-hb-ot-var.html#hb-ot-var-get-axis-infos" title="hb_ot_var_get_axis_infos ()">hb_ot_var_get_axis_infos</a>, function in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
</dt>
<dd></dd>
<dt>
-hb_ot_var_get_axis_count, function in hb-ot-var
+<a class="link" href="harfbuzz-hb-ot-var.html#hb-ot-var-get-named-instance-count" title="hb_ot_var_get_named_instance_count ()">hb_ot_var_get_named_instance_count</a>, function in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
</dt>
<dd></dd>
<dt>
-hb_ot_var_has_data, function in hb-ot-var
+<a class="link" href="harfbuzz-hb-ot-var.html#hb-ot-var-has-data" title="hb_ot_var_has_data ()">hb_ot_var_has_data</a>, function in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
</dt>
<dd></dd>
<dt>
-hb_ot_var_normalize_coords, function in hb-ot-var
+<a class="link" href="harfbuzz-hb-ot-var.html#hb-ot-var-named-instance-get-design-coords" title="hb_ot_var_named_instance_get_design_coords ()">hb_ot_var_named_instance_get_design_coords</a>, function in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
</dt>
<dd></dd>
<dt>
-hb_ot_var_normalize_variations, function in hb-ot-var
+<a class="link" href="harfbuzz-hb-ot-var.html#hb-ot-var-named-instance-get-postscript-name-id" title="hb_ot_var_named_instance_get_postscript_name_id ()">hb_ot_var_named_instance_get_postscript_name_id</a>, function in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
</dt>
<dd></dd>
<dt>
-HB_OT_VAR_NO_AXIS_INDEX, macro in hb-ot-var
+<a class="link" href="harfbuzz-hb-ot-var.html#hb-ot-var-named-instance-get-subfamily-name-id" title="hb_ot_var_named_instance_get_subfamily_name_id ()">hb_ot_var_named_instance_get_subfamily_name_id</a>, function in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-var.html#hb-ot-var-normalize-coords" title="hb_ot_var_normalize_coords ()">hb_ot_var_normalize_coords</a>, function in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-ot-var.html#hb-ot-var-normalize-variations" title="hb_ot_var_normalize_variations ()">hb_ot_var_normalize_variations</a>, function in <a class="link" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">hb-ot-var</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-deprecated.html#HB-OT-VAR-NO-AXIS-INDEX:CAPS" title="HB_OT_VAR_NO_AXIS_INDEX">HB_OT_VAR_NO_AXIS_INDEX</a>, macro in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<a name="idxP"></a><h3 class="title">P</h3>
@@ -1687,19 +1938,19 @@ HB_OT_VAR_NO_AXIS_INDEX, macro in hb-ot-var
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#HB-SEGMENT-PROPERTIES-DEFAULT:CAPS" title="HB_SEGMENT_PROPERTIES_DEFAULT">HB_SEGMENT_PROPERTIES_DEFAULT</a>, macro in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#HB-SEGMENT-PROPERTIES-DEFAULT:CAPS" title="HB_SEGMENT_PROPERTIES_DEFAULT">HB_SEGMENT_PROPERTIES_DEFAULT</a>, macro in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-equal" title="hb_segment_properties_equal ()">hb_segment_properties_equal</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-equal" title="hb_segment_properties_equal ()">hb_segment_properties_equal</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-hash" title="hb_segment_properties_hash ()">hb_segment_properties_hash</a>, function in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-hash" title="hb_segment_properties_hash ()">hb_segment_properties_hash</a>, function in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t-struct" title="hb_segment_properties_t">hb_segment_properties_t</a>, struct in <a class="link" href="harfbuzz-Buffers.html" title="Buffers">Buffers</a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t-struct" title="hb_segment_properties_t">hb_segment_properties_t</a>, struct in <a class="link" href="harfbuzz-hb-buffer.html" title="hb-buffer">hb-buffer</a>
</dt>
<dd></dd>
<dt>
@@ -1763,10 +2014,6 @@ HB_OT_VAR_NO_AXIS_INDEX, macro in hb-ot-var
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-deprecated.html#hb-set-invert" title="hb_set_invert ()">hb_set_invert</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-set.html#hb-set-is-empty" title="hb_set_is_empty ()">hb_set_is_empty</a>, function in <a class="link" href="harfbuzz-hb-set.html" title="hb-set">hb-set</a>
</dt>
<dd></dd>
@@ -1827,15 +2074,15 @@ HB_OT_VAR_NO_AXIS_INDEX, macro in hb-ot-var
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-shape" title="hb_shape ()">hb_shape</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
+<a class="link" href="harfbuzz-hb-shape.html#hb-shape" title="hb_shape ()">hb_shape</a>, function in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-shape-full" title="hb_shape_full ()">hb_shape_full</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
+<a class="link" href="harfbuzz-hb-shape.html#hb-shape-full" title="hb_shape_full ()">hb_shape_full</a>, function in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-Shaping.html#hb-shape-list-shapers" title="hb_shape_list_shapers ()">hb_shape_list_shapers</a>, function in <a class="link" href="harfbuzz-Shaping.html" title="Shaping">Shaping</a>
+<a class="link" href="harfbuzz-hb-shape.html#hb-shape-list-shapers" title="hb_shape_list_shapers ()">hb_shape_list_shapers</a>, function in <a class="link" href="harfbuzz-hb-shape.html" title="hb-shape">hb-shape</a>
</dt>
<dd></dd>
<dt>
@@ -1941,18 +2188,10 @@ HB_OT_VAR_NO_AXIS_INDEX, macro in hb-ot-var
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-decompose-compatibility" title="hb_unicode_decompose_compatibility ()">hb_unicode_decompose_compatibility</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-decompose-func-t" title="hb_unicode_decompose_func_t ()">hb_unicode_decompose_func_t</a>, user_function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-eastasian-width" title="hb_unicode_eastasian_width ()">hb_unicode_eastasian_width</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-create" title="hb_unicode_funcs_create ()">hb_unicode_funcs_create</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
</dt>
<dd></dd>
@@ -1997,18 +2236,10 @@ HB_OT_VAR_NO_AXIS_INDEX, macro in hb-ot-var
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-decompose-compatibility-func" title="hb_unicode_funcs_set_decompose_compatibility_func ()">hb_unicode_funcs_set_decompose_compatibility_func</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-decompose-func" title="hb_unicode_funcs_set_decompose_func ()">hb_unicode_funcs_set_decompose_func</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-eastasian-width-func" title="hb_unicode_funcs_set_eastasian_width_func ()">hb_unicode_funcs_set_eastasian_width_func</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-general-category-func" title="hb_unicode_funcs_set_general_category_func ()">hb_unicode_funcs_set_general_category_func</a>, function in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
</dt>
<dd></dd>
@@ -2041,7 +2272,11 @@ HB_OT_VAR_NO_AXIS_INDEX, macro in hb-ot-var
</dt>
<dd></dd>
<dt>
-<a class="link" href="harfbuzz-hb-unicode.html#HB-UNICODE-MAX-DECOMPOSITION-LEN:CAPS" title="HB_UNICODE_MAX_DECOMPOSITION_LEN">HB_UNICODE_MAX_DECOMPOSITION_LEN</a>, macro in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
+<a class="link" href="harfbuzz-hb-unicode.html#HB-UNICODE-MAX:CAPS" title="HB_UNICODE_MAX">HB_UNICODE_MAX</a>, macro in <a class="link" href="harfbuzz-hb-unicode.html" title="hb-unicode">hb-unicode</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-deprecated.html#HB-UNICODE-MAX-DECOMPOSITION-LEN:CAPS" title="HB_UNICODE_MAX_DECOMPOSITION_LEN">HB_UNICODE_MAX_DECOMPOSITION_LEN</a>, macro in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<dt>
@@ -2127,6 +2362,6 @@ HB_OT_VAR_NO_AXIS_INDEX, macro in hb-ot-var
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/buffers-language-script-and-direction.html b/docs/html/buffers-language-script-and-direction.html
index c5309a6..d88dc05 100644
--- a/docs/html/buffers-language-script-and-direction.html
+++ b/docs/html/buffers-language-script-and-direction.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt01.html" title="Part I. User's manual">
-<link rel="prev" href="hello-harfbuzz.html" title="Hello, HarfBuzz">
+<link rel="prev" href="aat-shaping.html" title="AAT shaping">
<link rel="next" href="adding-text-to-the-buffer.html" title="Adding text to the buffer">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,7 +16,7 @@
<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="p" href="aat-shaping.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">
@@ -39,14 +39,15 @@
<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
+ As we saw in our <span class="emphasis"><em>Getting Started</em></span> 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
+ HarfBuzz manages the memory of objects (such as buffers) that it
+ creates, 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">
@@ -82,6 +83,6 @@ void somefunc(hb_buffer_t *buffer) {
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/building.html b/docs/html/building.html
index ea051f9..6454786 100644
--- a/docs/html/building.html
+++ b/docs/html/building.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Building: HarfBuzz Manual</title>
+<title>Building HarfBuzz: 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="install-harfbuzz.html" title="Install HarfBuzz">
-<link rel="prev" href="install-harfbuzz.html" title="Install HarfBuzz">
-<link rel="next" href="hello-harfbuzz.html" title="Hello, HarfBuzz">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="install-harfbuzz.html" title="Installing HarfBuzz">
+<link rel="prev" href="install-harfbuzz.html" title="Installing HarfBuzz">
+<link rel="next" href="getting-started.html" title="Getting started with HarfBuzz">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -17,64 +17,402 @@
<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="install-harfbuzz.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="install-harfbuzz.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="hello-harfbuzz.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="getting-started.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="building"></a>Building</h2></div></div></div>
+<a name="building"></a>Building HarfBuzz</h2></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="building.linux"></a>Building on Linux</h3></div></div></div>
+<p>
+ <span class="emphasis"><em>(1)</em></span> To build HarfBuzz on Linux, you must first install the
+ development packages for FreeType, Cairo, and GLib. The exact
+ commands required for this step will vary depending on
+ the Linux distribution you use.
+ </p>
<p>
- On Linux, install the development packages for FreeType, Cairo, and GLib.
- For example, on Ubuntu / Debian, you would do:
+ For example, on an Ubuntu or Debian system, you would run:
</p>
<pre class="programlisting">
-<span class="command"><strong>sudo apt-get install</strong></span> <span class="package">gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev</span>
+ <span class="command"><strong>sudo apt install</strong></span> <span class="package">gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev</span>
</pre>
<p>
- whereas on Fedora, RHEL, CentOS, and other Red Hat based systems you would do:
+ On Fedora, RHEL, CentOS, or other Red-Hat–based systems, you would run:
+ </p>
+<pre class="programlisting">
+ <span class="command"><strong>sudo yum install</strong></span> <span class="package">gcc gcc-c++ freetype-devel glib2-devel cairo-devel</span>
+ </pre>
+<p>
+
+ </p>
+<p>
+ <span class="emphasis"><em>(2)</em></span> The next step depends on whether you
+ are building from the source in a downloaded release tarball or
+ from the source directly from the git repository.
+ </p>
+<p>
+ <span class="emphasis"><em>(2)(a)</em></span> If you downloaded the HarfBuzz
+ source code in a tarball, you can now extract the source.
+ </p>
+<p>
+ From a shell in the top-level directory of the extracted source
+ code, you can run <span class="command"><strong>./configure</strong></span> followed by
+ <span class="command"><strong>make</strong></span> as with any other standard package.
+ </p>
+<p>
+ This should leave you with a shared
+ library in the <code class="filename">src/</code> directory, and a few
+ utility programs including <span class="command"><strong>hb-view</strong></span> and
+ <span class="command"><strong>hb-shape</strong></span> under the <code class="filename">util/</code>
+ directory.
+ </p>
+<p>
+ <span class="emphasis"><em>(2)(b)</em></span> If you are building from the source in the HarfBuzz git
+ repository, rather than installing from a downloaded tarball
+ release, then you must install two more auxiliary tools before you
+ can build for the first time: <span class="package">pkg-config</span> and
+ <a class="ulink" href="http://www.complang.org/ragel/" target="_top">ragel</a>.
+ </p>
+<p>
+ On Ubuntu or Debian, run:
</p>
<pre class="programlisting">
-<span class="command"><strong>sudo yum install</strong></span> <span class="package">gcc gcc-c++ freetype-devel glib2-devel cairo-devel</span>
+ <span class="command"><strong>sudo apt-get install</strong></span> <span class="package">autoconf automake libtool pkg-config ragel gtk-doc-tools</span>
</pre>
<p>
- or using MacPorts:
+ On Fedora, RHEL, CentOS, run:
</p>
<pre class="programlisting">
-<span class="command"><strong>sudo port install</strong></span> <span class="package">freetype glib2 cairo</span>
+ <span class="command"><strong>sudo yum install</strong></span> <span class="package">autoconf automake libtool pkgconfig ragel gtk-doc</span>
</pre>
<p>
+
</p>
<p>
- If you are using a tarball, you can now proceed to running
- <span class="command"><strong>configure</strong></span> and <span class="command"><strong>make</strong></span> as with any
- other standard package. That should leave you with a shared library in
- <code class="filename">src/</code>, and a few utility programs including hb-view
- and hb-shape under <code class="filename">util/</code>.
+ With <span class="package">pkg-config</span> and <span class="package">ragel</span>
+ installed, you can now run <span class="command"><strong>./autogen.sh</strong></span>,
+ followed by <span class="command"><strong>./configure</strong></span> and
+ <span class="command"><strong>make</strong></span> to build HarfBuzz.
</p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="building.windows"></a>Building on Windows</h3></div></div></div>
<p>
- If you are bootstrapping from git, you need a few more tools before you
- can run <code class="filename">autogen.sh</code> for the first time. Namely,
- pkg-config and <a class="ulink" href="http://www.complang.org/ragel/" target="_top">ragel</a>.
- Again, on Ubuntu / Debian:
+ On Windows, consider using Microsoft's free <a class="ulink" href="https://github.com/Microsoft/vcpkg" target="_top">vcpkg</a> utility
+ to build HarfBuzz, its dependencies, and other open-source
+ libraries.
+ </p>
+<p>
+ If you need to build HarfBuzz from source, first put the
+ <span class="package">ragel</span> binary on your
+ <code class="literal">PATH</code>, then follow the appveyor CI cmake
+ <a class="ulink" href="https://github.com/harfbuzz/harfbuzz/blob/master/appveyor.yml" target="_top">build
+ instructions</a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="building.macos"></a>Building on macOS</h3></div></div></div>
+<p>
+ There are two ways to build HarfBuzz on Mac systems: MacPorts
+ and Homebrew. The process is similar to the process used on a
+ Linux system.
+ </p>
+<p>
+ <span class="emphasis"><em>(1)</em></span> You must first install the
+ development packages for FreeType, Cairo, and GLib. If you are
+ using MacPorts, you should run:
</p>
<pre class="programlisting">
-<span class="command"><strong>sudo apt-get install</strong></span> <span class="package">autoconf automake libtool pkg-config ragel gtk-doc-tools</span>
+ <span class="command"><strong>sudo port install</strong></span> <span class="package">freetype glib2 cairo</span>
</pre>
<p>
- and on Fedora, RHEL, CentOS:
</p>
+<p>
+ If you are using Homebrew, you should run:
+ </p>
+<pre class="programlisting">
+ <span class="command"><strong>brew install</strong></span> <span class="package">freetype glib cairo</span>
+ </pre>
+<p>
+ </p>
+<p>
+ <span class="emphasis"><em>(2)</em></span> The next step depends on whether you are building from the
+ source in a downloaded release tarball or from the source directly
+ from the git repository.
+ </p>
+<p>
+ <span class="emphasis"><em>(2)(a)</em></span> If you are installing HarfBuzz
+ from a downloaded tarball release, extract the tarball and
+ open a Terminal in the extracted source-code directory. Run:
+ </p>
<pre class="programlisting">
-<span class="command"><strong>sudo yum install</strong></span> <span class="package">autoconf automake libtool pkgconfig ragel gtk-doc</span>
- </pre>
+ <span class="command"><strong>./configure</strong></span>
+ </pre>
+<p>
+ followed by:
+ </p>
+<pre class="programlisting">
+ <span class="command"><strong>make</strong></span>
+ </pre>
+<p>
+ to build HarfBuzz.
+ </p>
<p>
- or using MacPorts:
+ <span class="emphasis"><em>(2)(b)</em></span> Alternatively, if you are building
+ HarfBuzz from the source in the HarfBuzz git repository, then
+ you must install several built-time dependencies before
+ proceeding.
+ </p>
+<p>If you are
+ using MacPorts, you should run:
</p>
<pre class="programlisting">
-<span class="command"><strong>sudo port install</strong></span> <span class="package">autoconf automake libtool pkgconfig ragel gtk-doc</span>
+ <span class="command"><strong>sudo port install</strong></span> <span class="package">autoconf automake libtool pkgconfig ragel gtk-doc</span>
</pre>
<p>
- </p>
+ to install the build dependencies.
+ </p>
+<p>If you are using Homebrew, you should run:
+ </p>
+<pre class="programlisting">
+ <span class="command"><strong>brew install</strong></span> <span class="package">autoconf automake libtool pkgconfig ragel gtk-doc</span>
+ </pre>
+<p>
+ Finally, you can run:
+ </p>
+<pre class="programlisting">
+ <span class="command"><strong>./autogen.sh</strong></span>
+ </pre>
+<p>
+ </p>
+<p>
+ <span class="emphasis"><em>(3)</em></span> You can now build HarfBuzz (on either
+ a MacPorts or a Homebrew system) by running:
+ </p>
+<pre class="programlisting">
+ <span class="command"><strong>./configure</strong></span>
+ </pre>
+<p>
+ followed by:
+ </p>
+<pre class="programlisting">
+ <span class="command"><strong>make</strong></span>
+ </pre>
+<p>
+ </p>
+<p>
+ This should leave you with a shared
+ library in the <code class="filename">src/</code> directory, and a few
+ utility programs including <span class="command"><strong>hb-view</strong></span> and
+ <span class="command"><strong>hb-shape</strong></span> under the <code class="filename">util/</code>
+ directory.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="configuration"></a>Configuration options</h3></div></div></div>
+<p>
+ The instructions in the "Building HarfBuzz" section will build
+ the source code under its default configuration. If needed,
+ the following additional configuration options are available.
+ </p>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-libstdc++</strong></span></span></p></td>
+<td>
+<p>
+ Allow linking with libstdc++. <span class="emphasis"><em>(Default = no)</em></span>
+ </p>
+<p>
+ This option enables or disables linking HarfBuzz to the
+ system's libstdc++ library.
+ </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-glib</strong></span></span></p></td>
+<td>
+<p>
+ Use <a class="ulink" href="https://developer.gnome.org/glib/" target="_top">GLib</a>. <span class="emphasis"><em>(Default = auto)</em></span>
+ </p>
+<p>
+ This option enables or disables usage of the GLib
+ library. The default setting is to check for the
+ presence of GLib and, if it is found, build with
+ GLib support. GLib is native to GNU/Linux systems but is
+ available on other operating system as well.
+ </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-gobject</strong></span></span></p></td>
+<td>
+<p>
+ Use <a class="ulink" href="https://developer.gnome.org/gobject/stable/" target="_top">GObject</a>. <span class="emphasis"><em>(Default = no)</em></span>
+ </p>
+<p>
+ This option enables or disables usage of the GObject
+ library. The default setting is to check for the
+ presence of GObject and, if it is found, build with
+ GObject support. GObject is native to GNU/Linux systems but is
+ available on other operating system as well.
+ </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-cairo</strong></span></span></p></td>
+<td>
+<p>
+ Use <a class="ulink" href="https://cairographics.org/" target="_top">Cairo</a>. <span class="emphasis"><em>(Default = auto)</em></span>
+ </p>
+<p>
+ This option enables or disables usage of the Cairo
+ graphics-rendering library. The default setting is to
+ check for the presence of Cairo and, if it is found,
+ build with Cairo support.
+ </p>
+<p>
+ Note: Cairo is used only by the HarfBuzz
+ command-line utilities, and not by the HarfBuzz library.
+ </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-fontconfig</strong></span></span></p></td>
+<td>
+<p>
+ Use <a class="ulink" href="https://www.freedesktop.org/wiki/Software/fontconfig/" target="_top">Fontconfig</a>. <span class="emphasis"><em>(Default = auto)</em></span>
+ </p>
+<p>
+ This option enables or disables usage of the Fontconfig
+ library, which provides font-matching functions and
+ provides access to font properties. The default setting
+ is to check for the presence of Fontconfig and, if it is
+ found, build with Fontconfig support.
+ </p>
+<p>
+ Note: Fontconfig is used only by the HarfBuzz
+ command-line utilities, and not by the HarfBuzz library.
+ </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-icu</strong></span></span></p></td>
+<td>
+<p>
+ Use the <a class="ulink" href="http://site.icu-project.org/home" target="_top">ICU</a> library. <span class="emphasis"><em>(Default = auto)</em></span>
+ </p>
+<p>
+ This option enables or disables usage of the
+ <span class="emphasis"><em>International Components for
+ Unicode</em></span> (ICU) library, which provides access
+ to Unicode Character Database (UCD) properties as well
+ as normalization and conversion functions. The default
+ setting is to check for the presence of ICU and, if it
+ is found, build with ICU support.
+ </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-ucdn</strong></span></span></p></td>
+<td>
+<p>
+ Use HarfBuzz's <a class="ulink" href="https://github.com/harfbuzz/harfbuzz/tree/master/src/hb-ucdn" target="_top">built-in UCDN library</a>. <span class="emphasis"><em>(Default = auto)</em></span>
+ </p>
+<p>
+ The HarfBuzz source tree includes a <span class="emphasis"><em>Unicode
+ Database and Normalization</em></span> (UCDN) library
+ that provides access to basic character properties in
+ the Unicode Character Database (UCD) as well as low-level
+ normalization functions. HarfBuzz can be built without
+ this UCDN support if the usage of a different UCDN
+ library is desired.
+ </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-graphite2</strong></span></span></p></td>
+<td>
+<p>
+ Use the <a class="ulink" href="http://graphite.sil.org/" target="_top">Graphite2</a> library. <span class="emphasis"><em>(Default = no)</em></span>
+ </p>
+<p>
+ This option enables or disables usage of the Graphite2
+ library, which provides support for the Graphite shaping
+ model.
+ </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-freetype</strong></span></span></p></td>
+<td>
+<p>
+ Use the <a class="ulink" href="https://www.freetype.org/" target="_top">FreeType</a> library. <span class="emphasis"><em>(Default = auto)</em></span>
+ </p>
+<p>
+ This option enables or disables usage of the FreeType
+ font-rendering library. The default setting is to check for the
+ presence of FreeType and, if it is found, build with
+ FreeType support.
+ </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-uniscribe</strong></span></span></p></td>
+<td>
+<p>
+ Use the <a class="ulink" href="https://docs.microsoft.com/en-us/windows/desktop/intl/uniscribe" target="_top">Uniscribe</a>
+ library (experimental). <span class="emphasis"><em>(Default = no)</em></span>
+ </p>
+<p>
+ This option enables or disables usage of the Uniscribe
+ font-rendering library. Uniscribe is available on
+ Windows systems. Uniscribe support is used only for
+ testing purposes and does not need to be enabled for
+ HarfBuzz to run on Windows systems.
+ </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-directwrite</strong></span></span></p></td>
+<td>
+<p>
+ Use the <a class="ulink" href="https://docs.microsoft.com/en-us/windows/desktop/directwrite/direct-write-portal" target="_top">DirectWrite</a> library (experimental). <span class="emphasis"><em>(Default = no)</em></span>
+ </p>
+<p>
+ This option enables or disables usage of the DirectWrite
+ font-rendering library. DirectWrite is available on
+ Windows systems. DirectWrite support is used only for
+ testing purposes and does not need to be enabled for
+ HarfBuzz to run on Windows systems.
+ </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-coretext</strong></span></span></p></td>
+<td>
+<p>
+ Use the <a class="ulink" href="https://developer.apple.com/documentation/coretext" target="_top">CoreText</a> library. <span class="emphasis"><em>(Default = no)</em></span>
+ </p>
+<p>
+ This option enables or disables usage of the CoreText
+ library. CoreText is available on macOS and iOS systems.
+ </p>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/ch01s03.html b/docs/html/ch01s03.html
new file mode 100644
index 0000000..afce4d1
--- /dev/null
+++ b/docs/html/ch01s03.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>What does HarfBuzz do?: 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="what-is-harfbuzz.html" title="What is HarfBuzz?">
+<link rel="prev" href="why-do-i-need-a-shaping-engine.html" title="Why do I need a shaping engine?">
+<link rel="next" href="what-harfbuzz-doesnt-do.html" title="What HarfBuzz doesn't do">
+<meta name="generator" content="GTK-Doc V1.25 (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="what-is-harfbuzz.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="why-do-i-need-a-shaping-engine.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="what-harfbuzz-doesnt-do.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="id-1.2.2.6"></a>What does HarfBuzz do?</h2></div></div></div>
+<p>
+ HarfBuzz provides text shaping through a cross-platform
+ C API that accepts sequences of Unicode codepoints as input. Currently,
+ the following OpenType shaping models are supported:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ Indic (covering Devanagari, Bengali, Gujarati,
+ Gurmukhi, Kannada, Malayalam, Oriya, Tamil, Telugu, and
+ Sinhala)
+ </p></li>
+<li class="listitem"><p>
+ Arabic (covering Arabic, N'Ko, Syriac, and Mongolian)
+ </p></li>
+<li class="listitem"><p>
+ Thai and Lao
+ </p></li>
+<li class="listitem"><p>
+ Khmer
+ </p></li>
+<li class="listitem"><p>
+ Myanmar
+ </p></li>
+<li class="listitem"><p>
+ Tibetan
+ </p></li>
+<li class="listitem"><p>
+ Hangul
+ </p></li>
+<li class="listitem"><p>
+ Hebrew
+ </p></li>
+<li class="listitem"><p>
+ The Universal Shaping Engine or <span class="emphasis"><em>USE</em></span>
+ (covering complex scripts not covered by the above shaping
+ models)
+ </p></li>
+<li class="listitem"><p>
+ A default shaping model for non-complex scripts
+ (covering Latin, Cyrillic, Greek, Armenian, Georgian, Tifinagh,
+ and many others)
+ </p></li>
+<li class="listitem"><p>
+ Emoji (including emoji modifier sequences, flag sequences,
+ and ZWJ sequences)
+ </p></li>
+</ul></div>
+<p>
+ In addition to OpenType shaping, HarfBuzz supports the latest
+ version of Graphite shaping (the "Graphite 2" model) and AAT
+ shaping.
+ </p>
+<p>
+ HarfBuzz can read and understand TrueType fonts (.ttf), TrueType
+ collections (.ttc), and OpenType fonts (.otf, including those
+ fonts that contain TrueType-style outlines and those that
+ contain PostScript CFF or CFF2 outlines).
+ </p>
+<p>
+ HarfBuzz is designed and tested to run on top of the FreeType
+ font renderer. It can run on Linux, Android, Windows, macOS, and
+ iOS systems.
+ </p>
+<p>
+ In addition to its core shaping functionality, HarfBuzz provides
+ functions for accessing other font features, including optional
+ GSUB and GPOS OpenType features, as well as
+ all color-font formats (<code class="literal">CBDT</code>,
+ <code class="literal">sbix</code>, <code class="literal">COLR/CPAL</code>, and
+ <code class="literal">SVG-OT</code>) and OpenType variable fonts. HarfBuzz
+ also includes a font-subsetting feature. HarfBuzz can perform
+ some low-level math-shaping operations, although it does not
+ currently perform full shaping for mathematical typesetting.
+ </p>
+<p>
+ A suite of command-line utilities is also provided in the
+ source-code tree, designed to help users test and debug
+ HarfBuzz's features on real-world fonts and input.
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/ch03s02.html b/docs/html/ch03s02.html
new file mode 100644
index 0000000..e3f5af9
--- /dev/null
+++ b/docs/html/ch03s02.html
@@ -0,0 +1,150 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Terminology: 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="getting-started.html" title="Getting started with HarfBuzz">
+<link rel="prev" href="getting-started.html" title="Getting started with HarfBuzz">
+<link rel="next" href="ch03s03.html" title="A simple shaping example">
+<meta name="generator" content="GTK-Doc V1.25 (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="getting-started.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="getting-started.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="ch03s03.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="id-1.2.4.3"></a>Terminology</h2></div></div></div>
+<p>
+
+ </p>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">script</span></p></td>
+<td>
+<p>
+ In text shaping, a <span class="emphasis"><em>script</em></span> is a
+ writing system: a set of symbols, rules, and conventions
+ that is used to represent a language or multiple
+ languages.
+ </p>
+<p>
+ In general computing lingo, the word "script" can also
+ be used to mean an executable program (usually one
+ written in a human-readable programming language). For
+ the sake of clarity, HarfBuzz documents will always use
+ more specific terminology when referring to this
+ meaning, such as "Python script" or "shell script." In
+ all other instances, "script" refers to a writing system.
+ </p>
+<p>
+ For developers using HarfBuzz, it is important to note
+ the distinction between a script and a language. Most
+ scripts are used to write a variety of different
+ languages, and many languages may be written in more
+ than one script.
+ </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term">shaper</span></p></td>
+<td><p>
+ In HarfBuzz, a <span class="emphasis"><em>shaper</em></span> is a
+ handler for a specific script-shaping model. HarfBuzz
+ implements separate shapers for Indic, Arabic, Thai and
+ Lao, Khmer, Myanmar, Tibetan, Hangul, Hebrew, the
+ Universal Shaping Engine (USE), and a default shaper for
+ non-complex scripts.
+ </p></td>
+</tr>
+<tr>
+<td><p><span class="term">cluster</span></p></td>
+<td>
+<p>
+ In text shaping, a <span class="emphasis"><em>cluster</em></span> is a
+ sequence of codepoints that must be treated as an
+ indivisible unit. Clusters can include code-point
+ sequences that form a ligature or base-and-mark
+ sequences. Tracking and preserving clusters is important
+ when shaping operations might separate or reorder
+ code points.
+ </p>
+<p>
+ HarfBuzz provides three cluster
+ <span class="emphasis"><em>levels</em></span> that implement different
+ approaches to the problem of preserving clusters during
+ shaping operations.
+ </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term">grapheme</span></p></td>
+<td>
+<p>
+ In linguistics, a <span class="emphasis"><em>grapheme</em></span> is one
+ of the indivisible units that make up a writing system or
+ script. Often, graphemes are individual symbols (letters,
+ numbers, punctuation marks, logograms, etc.) but,
+ depending on the writing system, a particular grapheme
+ might correspond to a sequence of several Unicode code
+ points.
+ </p>
+<p>
+ In practice, HarfBuzz and other text-shaping engines
+ are not generally concerned with graphemes. However, it
+ is important for developers using HarfBuzz to recognize
+ that there is a difference between graphemes and shaping
+ clusters (see above). The two concepts may overlap
+ frequently, but there is no guarantee that they will be
+ identical.
+ </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term">syllable</span></p></td>
+<td>
+<p>
+ In linguistics, a <span class="emphasis"><em>syllable</em></span> is an
+ a sequence of sounds that makes up a building block of a
+ particular language. Every language has its own set of
+ rules describing what constitutes a valid syllable.
+ </p>
+<p>
+ For text-shaping purposes, the various definitions of
+ "syllable" are important because script-specific shaping
+ operations may be applied at the syllable level. For
+ example, a reordering rule might specify that a vowel
+ mark be reordered to the beginning of the syllable.
+ </p>
+<p>
+ Syllables will consist of one or more Unicode code
+ points. The definition of a syllable for a particular
+ writing system might correspond to how HarfBuzz
+ identifies clusters (see above) for the same writing
+ system. However, it is important for developers using
+ HarfBuzz to recognize that there is a difference between
+ syllables and shaping clusters. The two concepts may
+ overlap frequently, but there is no guarantee that they
+ will be identical.
+ </p>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/ch03s03.html b/docs/html/ch03s03.html
new file mode 100644
index 0000000..1905b84
--- /dev/null
+++ b/docs/html/ch03s03.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>A simple shaping example: 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="getting-started.html" title="Getting started with HarfBuzz">
+<link rel="prev" href="ch03s02.html" title="Terminology">
+<link rel="next" href="shaping-concepts.html" title="Shaping concepts">
+<meta name="generator" content="GTK-Doc V1.25 (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="getting-started.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="ch03s02.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="shaping-concepts.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="id-1.2.4.4"></a>A simple shaping example</h2></div></div></div>
+<p>
+ Below is the simplest HarfBuzz shaping example possible.
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
+ Create a buffer and put your text in it.
+ </p></li></ol></div>
+<pre class="programlisting">
+ #include &lt;hb.h&gt;
+ hb_buffer_t *buf;
+ buf = hb_buffer_create();
+ hb_buffer_add_utf8(buf, text, -1, 0, -1);
+ </pre>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem" value="2"><p>
+ Guess the script, language and direction of the buffer.
+ </p></li></ol></div>
+<pre class="programlisting">
+ hb_buffer_set_direction(buf, HB_DIRECTION_LTR);
+ hb_buffer_set_script(buf, HB_SCRIPT_LATIN);
+ hb_buffer_set_language(buf, hb_language_from_string("en", -1));
+ </pre>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem" value="3"><p>
+ Create a face and a font, using FreeType for now.
+ </p></li></ol></div>
+<pre class="programlisting">
+ #include &lt;hb-ft.h&gt;
+ FT_New_Face(ft_library, font_path, index, &amp;face);
+ FT_Set_Char_Size(face, 0, 1000, 0, 0);
+ hb_font_t *font = hb_ft_font_create(face);
+ </pre>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem" value="4"><p>
+ Shape!
+ </p></li></ol></div>
+<pre class="programlisting">
+ hb_shape(font, buf, NULL, 0);
+ </pre>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem" value="5"><p>
+ Get the glyph and position information.
+ </p></li></ol></div>
+<pre class="programlisting">
+ hb_glyph_info_t *glyph_info = hb_buffer_get_glyph_infos(buf, &amp;glyph_count);
+ hb_glyph_position_t *glyph_pos = hb_buffer_get_glyph_positions(buf, &amp;glyph_count);
+ </pre>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem" value="6"><p>
+ Iterate over each glyph.
+ </p></li></ol></div>
+<pre class="programlisting">
+ for (i = 0; i &lt; glyph_count; ++i) {
+ glyphid = glyph_info[i].codepoint;
+ x_offset = glyph_pos[i].x_offset / 64.0;
+ y_offset = glyph_pos[i].y_offset / 64.0;
+ x_advance = glyph_pos[i].x_advance / 64.0;
+ y_advance = glyph_pos[i].y_advance / 64.0;
+ draw_glyph(glyphid, cursor_x + x_offset, cursor_y + y_offset);
+ cursor_x += x_advance;
+ cursor_y += y_advance;
+ }
+ </pre>
+<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem" value="7"><p>
+ Tidy up.
+ </p></li></ol></div>
+<pre class="programlisting">
+ hb_buffer_destroy(buf);
+ hb_font_destroy(hb_ft_font);
+ </pre>
+<p>
+ This example shows enough to get us started using HarfBuzz. In
+ the sections that follow, we will use the remainder of
+ HarfBuzz's API to refine and extend the example and improve its
+ text-shaping capabilities.
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/ch08.html b/docs/html/ch08.html
deleted file mode 100644
index 2de5896..0000000
--- a/docs/html/ch08.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>HarfBuzz API: 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="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="pt02.html" title="Part II. Reference manual">
-<link rel="next" href="harfbuzz-hb.html" title="hb">
-<meta name="generator" content="GTK-Doc V1.27.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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="pt02.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb.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="id-1.3.3"></a>HarfBuzz API</h2></div></div></div>
-<div class="toc"><dl class="toc">
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb.html">hb</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-common.html">hb-common</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-unicode.html">hb-unicode</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-Buffers.html">Buffers</a></span><span class="refpurpose"> — Input and output buffers</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-blob.html">hb-blob</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-face.html">hb-face</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-font.html">hb-font</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-Shaping.html">Shaping</a></span><span class="refpurpose"> — Conversion of text strings into positioned glyphs</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-version.html">hb-version</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-deprecated.html">hb-deprecated</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-set.html">hb-set</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot.html">hb-ot</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-layout.html">hb-ot-layout</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-tag.html">hb-ot-tag</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-font.html">hb-ot-font</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-shape.html">hb-ot-shape</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-math.html">hb-ot-math</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-shape-plan.html">hb-shape-plan</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-glib.html">hb-glib</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-icu.html">hb-icu</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ft.html">hb-ft</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-graphite2.html">hb-graphite2</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-uniscribe.html">hb-uniscribe</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-coretext.html">hb-coretext</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-gobject.html">hb-gobject</a></span><span class="refpurpose"></span>
-</dt>
-</dl></div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/ch09.html b/docs/html/ch09.html
new file mode 100644
index 0000000..1c709c4
--- /dev/null
+++ b/docs/html/ch09.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Core API: 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="pt02.html" title="Part II. Reference manual">
+<link rel="prev" href="pt02.html" title="Part II. Reference manual">
+<link rel="next" href="harfbuzz-hb-blob.html" title="hb-blob">
+<meta name="generator" content="GTK-Doc V1.25 (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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="pt02.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-blob.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="id-1.3.4"></a>Core API</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-blob.html">hb-blob</a></span><span class="refpurpose"> — Binary data containers</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-buffer.html">hb-buffer</a></span><span class="refpurpose"> — Input and output buffers</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-common.html">hb-common</a></span><span class="refpurpose"> — Common data types</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-deprecated.html">hb-deprecated</a></span><span class="refpurpose"> — Deprecated API</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-face.html">hb-face</a></span><span class="refpurpose"> — Font face objects</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-font.html">hb-font</a></span><span class="refpurpose"> — Font objects</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-map.html">hb-map</a></span><span class="refpurpose"> — Object representing integer to integer mapping</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-set.html">hb-set</a></span><span class="refpurpose"> — Object representing a set of integers</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-shape-plan.html">hb-shape-plan</a></span><span class="refpurpose"> — Object representing a shaping plan</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-shape.html">hb-shape</a></span><span class="refpurpose"> — Conversion of text strings into positioned glyphs</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-unicode.html">hb-unicode</a></span><span class="refpurpose"> — Unicode character property access</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-version.html">hb-version</a></span><span class="refpurpose"> — Information about the version of HarfBuzz in use</span>
+</dt>
+</dl></div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/ch10.html b/docs/html/ch10.html
new file mode 100644
index 0000000..a80ab8c
--- /dev/null
+++ b/docs/html/ch10.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>OpenType API: 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="pt02.html" title="Part II. Reference manual">
+<link rel="prev" href="harfbuzz-hb-version.html" title="hb-version">
+<link rel="next" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">
+<meta name="generator" content="GTK-Doc V1.25 (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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-version.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-ot-color.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="id-1.3.5"></a>OpenType API</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-color.html">hb-ot-color</a></span><span class="refpurpose"> — OpenType Color Fonts</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-font.html">hb-ot-font</a></span><span class="refpurpose"> — OpenType font implementation</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-layout.html">hb-ot-layout</a></span><span class="refpurpose"> — OpenType Layout</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-math.html">hb-ot-math</a></span><span class="refpurpose"> — OpenType Math information</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-name.html">hb-ot-name</a></span><span class="refpurpose"> — OpenType font name information</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-shape.html">hb-ot-shape</a></span><span class="refpurpose"> — OpenType shaping support</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-var.html">hb-ot-var</a></span><span class="refpurpose"> — OpenType Font Variations</span>
+</dt>
+</dl></div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/ch11.html b/docs/html/ch11.html
new file mode 100644
index 0000000..3c9039c
--- /dev/null
+++ b/docs/html/ch11.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Apple Advanced Typography API: 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="pt02.html" title="Part II. Reference manual">
+<link rel="prev" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">
+<link rel="next" href="harfbuzz-hb-aat-layout.html" title="hb-aat-layout">
+<meta name="generator" content="GTK-Doc V1.25 (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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-ot-var.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-aat-layout.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="id-1.3.6"></a>Apple Advanced Typography API</h2></div></div></div>
+<div class="toc"><dl class="toc"><dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-aat-layout.html">hb-aat-layout</a></span><span class="refpurpose"> — Apple Advanced Typography Layout</span>
+</dt></dl></div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/ch12.html b/docs/html/ch12.html
new file mode 100644
index 0000000..0c63823
--- /dev/null
+++ b/docs/html/ch12.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Integration API: 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="pt02.html" title="Part II. Reference manual">
+<link rel="prev" href="harfbuzz-hb-aat-layout.html" title="hb-aat-layout">
+<link rel="next" href="harfbuzz-hb-coretext.html" title="hb-coretext">
+<meta name="generator" content="GTK-Doc V1.25 (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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-aat-layout.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-coretext.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="id-1.3.7"></a>Integration API</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-coretext.html">hb-coretext</a></span><span class="refpurpose"> — CoreText integration</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-ft.html">hb-ft</a></span><span class="refpurpose"> — FreeType integration</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-glib.html">hb-glib</a></span><span class="refpurpose"> — GLib integration</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-gobject.html">hb-gobject</a></span><span class="refpurpose"> — GObject integration</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-graphite2.html">hb-graphite2</a></span><span class="refpurpose"> — Graphite2 integration</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-icu.html">hb-icu</a></span><span class="refpurpose"> — ICU integration</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-uniscribe.html">hb-uniscribe</a></span><span class="refpurpose"> — Windows integration</span>
+</dt>
+</dl></div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/clusters.html b/docs/html/clusters.html
index 2b3078f..9162099 100644
--- a/docs/html/clusters.html
+++ b/docs/html/clusters.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>: HarfBuzz Manual</title>
+<title>Clusters: HarfBuzz Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt01.html" title="Part I. User's manual">
<link rel="prev" href="using-your-own-font-functions.html" title="Using your own font functions">
-<link rel="next" href="a-clustering-example-for-levels-0-and-1.html" title="A clustering example for levels 0 and 1">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="next" href="working-with-harfbuzz-clusters.html" title="Working with HarfBuzz clusters">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -17,81 +17,109 @@
<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="using-your-own-font-functions.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="a-clustering-example-for-levels-0-and-1.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="working-with-harfbuzz-clusters.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 class="titlepage"><div><div><h2 class="title">
+<a name="clusters"></a>Clusters</h2></div></div></div>
<div class="toc"><dl class="toc">
-<dt><span class="sect1"><a href="clusters.html#clusters">Clusters</a></span></dt>
-<dt><span class="sect1"><a href="a-clustering-example-for-levels-0-and-1.html">A clustering example for levels 0 and 1</a></span></dt>
-<dt><span class="sect1"><a href="reordering-in-levels-0-and-1.html">Reordering in levels 0 and 1</a></span></dt>
-<dt><span class="sect1"><a href="the-distinction-between-levels-0-and-1.html">The distinction between levels 0 and 1</a></span></dt>
-<dt><span class="sect1"><a href="level-2.html">Level 2</a></span></dt>
+<dt><span class="section"><a href="clusters.html#clusters-and-shaping">Clusters and shaping</a></span></dt>
+<dt><span class="section"><a href="working-with-harfbuzz-clusters.html">Working with HarfBuzz clusters</a></span></dt>
+<dt><span class="section"><a href="a-clustering-example-for-levels-0-and-1.html">A clustering example for levels 0 and 1</a></span></dt>
+<dt><span class="section"><a href="reordering-in-levels-0-and-1.html">Reordering in levels 0 and 1</a></span></dt>
+<dt><span class="section"><a href="the-distinction-between-levels-0-and-1.html">The distinction between levels 0 and 1</a></span></dt>
+<dt><span class="section"><a href="level-2.html">Level 2</a></span></dt>
<dd><dl>
-<dt><span class="sect2"><a href="level-2.html#ligatures-with-combining-marks">Ligatures with combining marks</a></span></dt>
-<dt><span class="sect2"><a href="level-2.html#reordering">Reordering</a></span></dt>
+<dt><span class="section"><a href="level-2.html#ligatures-with-combining-marks-in-level-2">Ligatures with combining marks in level 2</a></span></dt>
+<dt><span class="section"><a href="level-2.html#reordering-in-level-2">Reordering in level 2</a></span></dt>
+<dt><span class="section"><a href="level-2.html#other-considerations-in-level-2">Other considerations in level 2</a></span></dt>
</dl></dd>
</dl></div>
-<div class="sect1">
+<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="clusters"></a>Clusters</h2></div></div></div>
+<a name="clusters-and-shaping"></a>Clusters and shaping</h2></div></div></div>
<p>
- In shaping text, a <span class="emphasis"><em>cluster</em></span> is a sequence of
- code points that needs to be treated as a single, indivisible unit.
- </p>
+ In text shaping, a <span class="emphasis"><em>cluster</em></span> is a sequence of
+ characters that needs to be treated as a single, indivisible
+ unit. A single letter or symbol can be a cluster of its
+ own. Other clusters correspond to longer subsequences of the
+ input code points — such as a ligature or conjunct form
+ — and require the shaper to ensure that the cluster is not
+ broken during the shaping process.
+ </p>
<p>
- When you add text to a HB buffer, each character is associated with
- a <span class="emphasis"><em>cluster value</em></span>. This is an arbitrary number as
- far as HB is concerned.
- </p>
+ A cluster is distinct from a <span class="emphasis"><em>grapheme</em></span>,
+ which is the smallest unit of meaning in a writing system or
+ script.
+ </p>
<p>
- Most clients will use UTF-8, UTF-16, or UTF-32 indices, but the
- actual number does not matter. Moreover, it is not required for the
- cluster values to be monotonically increasing, but pretty much all
- of HB's tests are performed on monotonically increasing cluster
- numbers. Nevertheless, there is no such assumption in the code
- itself. With that in mind, let's examine what happens with cluster
- values during shaping under each cluster-level.
- </p>
+ The definitions of the two terms are similar. However, clusters
+ are only relevant for script shaping and glyph layout. In
+ contrast, graphemes are a property of the underlying script, and
+ are of interest when client programs implement orthographic
+ or linguistic functionality.
+ </p>
<p>
- HarfBuzz provides three <span class="emphasis"><em>levels</em></span> of clustering
- support. Level 0 is the default behavior and reproduces the behavior
- of the old HarfBuzz library. Level 1 tweaks this behavior slightly
- to produce better results, so level 1 clustering is recommended for
- code that is not required to implement backward compatibility with
- the old HarfBuzz.
- </p>
+ For example, two individual letters are often two separate
+ graphemes. When two letters form a ligature, however, they
+ combine into a single glyph. They are then part of the same
+ cluster and are treated as a unit by the shaping engine —
+ even though the two original, underlying letters remain separate
+ graphemes.
+ </p>
<p>
- Level 2 differs significantly in how it treats cluster values.
- Levels 0 and 1 both process ligatures and glyph decomposition by
- merging clusters; level 2 does not.
- </p>
+ HarfBuzz is concerned with clusters, <span class="emphasis"><em>not</em></span>
+ with graphemes — although client programs using HarfBuzz
+ may still care about graphemes for other reasons from time to time.
+ </p>
<p>
- The conceptual model for what the cluster values mean, in levels 0
- and 1, is this:
- </p>
-<div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc; ">
+ During the shaping process, there are several shaping operations
+ that may merge adjacent characters (for example, when two code
+ points form a ligature or a conjunct form and are replaced by a
+ single glyph) or split one character into several (for example,
+ when decomposing a code point through the
+ <code class="literal">ccmp</code> feature). Operations like these alter
+ clusters; HarfBuzz tracks the changes to ensure that no clusters
+ get lost or broken during shaping.
+ </p>
+<p>
+ HarfBuzz records cluster information independently from how
+ shaping operations affect the individual glyphs returned in an
+ output buffer. Consequently, a client program using HarfBuzz can
+ utilize the cluster information to implement features such as:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ Correctly positioning the cursor within a shaped text run,
+ even when characters have formed ligatures, composed or
+ decomposed, reordered, or undergone other shaping operations.
+ </p></li>
<li class="listitem"><p>
- the sequence of cluster values will always remain monotone
- </p></li>
+ Correctly highlighting a text selection that includes some,
+ but not all, of the characters in a word.
+ </p></li>
<li class="listitem"><p>
- each value represents a single cluster
- </p></li>
+ Applying text attributes (such as color or underlining) to
+ part, but not all, of a word.
+ </p></li>
<li class="listitem"><p>
- each cluster contains one or more glyphs and one or more
- characters
- </p></li>
+ Generating output document formats (such as PDF) with
+ embedded text that can be fully extracted.
+ </p></li>
+<li class="listitem"><p>
+ Determining the mapping between input characters and output
+ glyphs, such as which glyphs are ligatures.
+ </p></li>
+<li class="listitem"><p>
+ Performing line-breaking, justification, and other
+ line-level or paragraph-level operations that must be done
+ after shaping is complete, but which require examining
+ character-level properties.
+ </p></li>
</ul></div>
-<p>
- Assuming that initial cluster numbers were monotonically increasing
- and distinct, then all adjacent glyphs having the same cluster
- number belong to the same cluster, and all characters belong to the
- cluster that has the highest number not larger than their initial
- cluster number. This will become clearer with an example.
- </p>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/complex-scripts.html b/docs/html/complex-scripts.html
new file mode 100644
index 0000000..4ee994b
--- /dev/null
+++ b/docs/html/complex-scripts.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Complex scripts: 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="shaping-concepts.html" title="Shaping concepts">
+<link rel="prev" href="shaping-concepts.html" title="Shaping concepts">
+<link rel="next" href="shaping-operations.html" title="Shaping operations">
+<meta name="generator" content="GTK-Doc V1.25 (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="shaping-concepts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="shaping-concepts.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="shaping-operations.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="complex-scripts"></a>Complex scripts</h2></div></div></div>
+<p>
+ In text-shaping terminology, scripts are generally classified as
+ either <span class="emphasis"><em>complex</em></span> or <span class="emphasis"><em>non-complex</em></span>.
+ </p>
+<p>
+ Complex scripts are those for which transforming the input
+ sequence into the final layout requires some combination of
+ operations—such as context-dependent substitutions,
+ context-dependent mark positioning, glyph-to-glyph joining,
+ glyph reordering, or glyph stacking.
+ </p>
+<p>
+ In some complex scripts, the shaping rules require that a text
+ run be divided into syllables before the operations can be
+ applied. Other complex scripts may apply shaping operations over
+ entire words or over the entire text run, with no subdivision
+ required.
+ </p>
+<p>
+ Non-complex scripts, by definition, do not require these
+ operations. However, correctly shaping a text run in a
+ non-complex script may still involve Unicode normalization,
+ ligature substitutions, mark positioning, kerning, and applying
+ other font features. The key difference is that a text run in a
+ non-complex script can be processed sequentially and in the same
+ order as the input sequence of Unicode codepoints, without
+ requiring an analysis stage.
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/customizing-unicode-functions.html b/docs/html/customizing-unicode-functions.html
index 2167383..090b871 100644
--- a/docs/html/customizing-unicode-functions.html
+++ b/docs/html/customizing-unicode-functions.html
@@ -8,7 +8,7 @@
<link rel="up" href="buffers-language-script-and-direction.html" title="Buffers, language, script and direction">
<link rel="prev" href="what-about-the-other-scripts.html" title="What about the other scripts?">
<link rel="next" href="fonts-and-faces.html" title="Fonts and faces">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -26,6 +26,6 @@
</p>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/deprecated-api-index.html b/docs/html/deprecated-api-index.html
index fb043a8..5162862 100644
--- a/docs/html/deprecated-api-index.html
+++ b/docs/html/deprecated-api-index.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="api-index-1-6-0.html" title="Index of new symbols in 1.6.0">
-<link rel="next" href="annotation-glossary.html" title="Annotation Glossary">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="api-index-full.html" title="API Index">
+<link rel="next" href="api-index-2-1-0.html" title="Index of new symbols in 2.1.0">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -17,13 +17,15 @@
 <span class="dim">|</span> 
<a class="shortcut" href="#idxF">F</a>
 <span class="dim">|</span> 
- <a class="shortcut" href="#idxG">G</a>
+ <a class="shortcut" href="#idxO">O</a>
 <span class="dim">|</span> 
- <a class="shortcut" href="#idxS">S</a></span></td>
+ <a class="shortcut" href="#idxS">S</a>
+  <span class="dim">|</span> 
+ <a class="shortcut" href="#idxU">U</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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="api-index-1-6-0.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="annotation-glossary.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="api-index-full.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-2-1-0.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h2 class="title">
@@ -39,16 +41,44 @@
<dd></dd>
<a name="idxF"></a><h3 class="title">F</h3>
<dt>
-<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-funcs-set-glyph-func" title="hb_font_funcs_set_glyph_func ()">hb_font_funcs_set_glyph_func</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-funcs-set-glyph-h-kerning-func" title="hb_font_funcs_set_glyph_h_kerning_func ()">hb_font_funcs_set_glyph_h_kerning_func</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-funcs-set-glyph-v-kerning-func" title="hb_font_funcs_set_glyph_v_kerning_func ()">hb_font_funcs_set_glyph_v_kerning_func</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<dt>
<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-func-t" title="hb_font_get_glyph_func_t ()">hb_font_get_glyph_func_t</a>, user_function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
-<a name="idxG"></a><h3 class="title">G</h3>
<dt>
-<a class="link" href="harfbuzz-hb-graphite2.html#hb-graphite2-font-get-gr-font" title="hb_graphite2_font_get_gr_font ()">hb_graphite2_font_get_gr_font</a>, function in <a class="link" href="harfbuzz-hb-graphite2.html" title="hb-graphite2">hb-graphite2</a>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-h-kerning" title="hb_font_get_glyph_h_kerning ()">hb_font_get_glyph_h_kerning</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-h-kerning-func-t" title="hb_font_get_glyph_h_kerning_func_t">hb_font_get_glyph_h_kerning_func_t</a>, typedef in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-kerning-for-direction" title="hb_font_get_glyph_kerning_for_direction ()">hb_font_get_glyph_kerning_for_direction</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-kerning-func-t" title="hb_font_get_glyph_kerning_func_t ()">hb_font_get_glyph_kerning_func_t</a>, user_function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-v-kerning" title="hb_font_get_glyph_v_kerning ()">hb_font_get_glyph_v_kerning</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-v-kerning-func-t" title="hb_font_get_glyph_v_kerning_func_t">hb_font_get_glyph_v_kerning_func_t</a>, typedef in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
+</dt>
+<dd></dd>
+<a name="idxO"></a><h3 class="title">O</h3>
+<dt>
+<a class="link" href="harfbuzz-hb-deprecated.html#HB-OT-VAR-NO-AXIS-INDEX:CAPS" title="HB_OT_VAR_NO_AXIS_INDEX">HB_OT_VAR_NO_AXIS_INDEX</a>, macro in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
<a name="idxS"></a><h3 class="title">S</h3>
@@ -56,12 +86,13 @@
<a class="link" href="harfbuzz-hb-deprecated.html#HB-SCRIPT-CANADIAN-ABORIGINAL:CAPS" title="HB_SCRIPT_CANADIAN_ABORIGINAL">HB_SCRIPT_CANADIAN_ABORIGINAL</a>, macro in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
+<a name="idxU"></a><h3 class="title">U</h3>
<dt>
-<a class="link" href="harfbuzz-hb-deprecated.html#hb-set-invert" title="hb_set_invert ()">hb_set_invert</a>, function in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
+<a class="link" href="harfbuzz-hb-deprecated.html#HB-UNICODE-MAX-DECOMPOSITION-LEN:CAPS" title="HB_UNICODE_MAX_DECOMPOSITION_LEN">HB_UNICODE_MAX_DECOMPOSITION_LEN</a>, macro in <a class="link" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">hb-deprecated</a>
</dt>
<dd></dd>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/fonts-and-faces.html b/docs/html/fonts-and-faces.html
index a7abf0e..87dd7a6 100644
--- a/docs/html/fonts-and-faces.html
+++ b/docs/html/fonts-and-faces.html
@@ -8,7 +8,7 @@
<link rel="up" href="pt01.html" title="Part I. User's manual">
<link rel="prev" href="customizing-unicode-functions.html" title="Customizing Unicode functions">
<link rel="next" href="using-harfbuzzs-native-opentype-implementation.html" title="Using HarfBuzz's native OpenType implementation">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -35,6 +35,6 @@
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/getting-started.html b/docs/html/getting-started.html
new file mode 100644
index 0000000..3372136
--- /dev/null
+++ b/docs/html/getting-started.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Getting started with HarfBuzz: HarfBuzz Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="HarfBuzz Manual">
+<link rel="up" href="pt01.html" title="Part I. User's manual">
+<link rel="prev" href="building.html" title="Building HarfBuzz">
+<link rel="next" href="ch03s02.html" title="Terminology">
+<meta name="generator" content="GTK-Doc V1.25 (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="building.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="ch03s02.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="getting-started"></a>Getting started with HarfBuzz</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="getting-started.html#id-1.2.4.2">An overview of the HarfBuzz shaping API</a></span></dt>
+<dt><span class="section"><a href="ch03s02.html">Terminology</a></span></dt>
+<dt><span class="section"><a href="ch03s03.html">A simple shaping example</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="id-1.2.4.2"></a>An overview of the HarfBuzz shaping API</h2></div></div></div>
+<p>
+ The core of the HarfBuzz shaping API is the function
+ <code class="function">hb_shape()</code>. This function takes a font, a
+ buffer containing a string of Unicode codepoints and
+ (optionally) a list of font features as its input. It replaces
+ the codepoints in the buffer with the corresponding glyphs from
+ the font, correctly ordered and positioned, and with any of the
+ optional font features applied.
+ </p>
+<p>
+ In addition to holding the pre-shaping input (the Unicode
+ codepoints that comprise the input string) and the post-shaping
+ output (the glyphs and positions), a HarfBuzz buffer has several
+ properties that affect shaping. The most important are the
+ text-flow direction (e.g., left-to-right, right-to-left,
+ top-to-bottom, or bottom-to-top), the script tag, and the
+ language tag.
+ </p>
+<p>
+ For input string buffers, flags are available to denote when the
+ buffer represents the beginning or end of a paragraph, to
+ indicate whether or not to visibly render Unicode <code class="literal">Default
+ Ignorable</code> codepoints, and to modify the cluster-merging
+ behavior for the buffer. For shaped output buffers, the
+ individual X and Y offsets and <code class="literal">advances</code>
+ (the logical dimensions) of each glyph are
+ accessible. HarfBuzz also flags glyphs as
+ <code class="literal">UNSAFE_TO_BREAK</code> if breaking the string at
+ that glyph (e.g., in a line-breaking or hyphenation process)
+ would require re-shaping the text.
+ </p>
+<p>
+ HarfBuzz also provides methods to compare the contents of
+ buffers, join buffers, normalize buffer contents, and handle
+ invalid codepoints, as well as to determine the state of a
+ buffer (e.g., input codepoints or output glyphs). Buffer
+ lifecycles are managed and all buffers are reference-counted.
+ </p>
+<p>
+ Although the default <code class="function">hb_shape()</code> function is
+ sufficient for most use cases, a variant is also provide that
+ lets you specify which of HarfBuzz's shapers to use on a buffer.
+ </p>
+<p>
+ HarfBuzz can read TrueType fonts, TrueType collections, OpenType
+ fonts, and OpenType collections. Functions are provided to query
+ font objects about metrics, Unicode coverage, available tables and
+ features, and variation selectors. Individual glyphs can also be
+ queried for metrics, variations, and glyph names. OpenType
+ variable fonts are supported, and HarfBuzz allows you to set
+ variation-axis coordinates on font objects.
+ </p>
+<p>
+ HarfBuzz provides glue code to integrate with various other
+ libraries, including FreeType, GObject, and CoreText. Support
+ for integrating with Uniscribe and DirectWrite is experimental
+ at present.
+ </p>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/graphite-shaping.html b/docs/html/graphite-shaping.html
new file mode 100644
index 0000000..5285e3f
--- /dev/null
+++ b/docs/html/graphite-shaping.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Graphite shaping: 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="shaping-concepts.html" title="Shaping concepts">
+<link rel="prev" href="opentype-shaping-models.html" title="OpenType shaping models">
+<link rel="next" href="aat-shaping.html" title="AAT shaping">
+<meta name="generator" content="GTK-Doc V1.25 (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="shaping-concepts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="opentype-shaping-models.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="aat-shaping.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="graphite-shaping"></a>Graphite shaping</h2></div></div></div>
+<p>
+ In contrast to OpenType shaping, Graphite shaping does not
+ specify a predefined set of shaping models or a set of supported
+ scripts.
+ </p>
+<p>
+ Instead, each Graphite font contains a complete set of rules that
+ implement the required shaping model for the intended
+ script. These rules include finite-state machines to match
+ sequences of codepoints to the shaping operations to perform.
+ </p>
+<p>
+ Graphite shaping can perform the same shaping operations used in
+ OpenType shaping, as well as other functions that have not been
+ defined for OpenType shaping.
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-aat-layout.html b/docs/html/harfbuzz-hb-aat-layout.html
new file mode 100644
index 0000000..01fbdfa
--- /dev/null
+++ b/docs/html/harfbuzz-hb-aat-layout.html
@@ -0,0 +1,1755 @@
+<!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-aat-layout: 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="ch11.html" title="Apple Advanced Typography API">
+<link rel="prev" href="ch11.html" title="Apple Advanced Typography API">
+<link rel="next" href="ch12.html" title="Integration API">
+<meta name="generator" content="GTK-Doc V1.25 (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-aat-layout.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+ <a href="#harfbuzz-hb-aat-layout.object-hierarchy" class="shortcut">Object Hierarchy</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="ch11.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="ch11.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="ch12.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="harfbuzz-hb-aat-layout"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="harfbuzz-hb-aat-layout.top_of_page"></a>hb-aat-layout</span></h2>
+<p>hb-aat-layout — Apple Advanced Typography Layout</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="harfbuzz-hb-aat-layout.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t"><span class="returnvalue">hb_ot_name_id_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-aat-layout.html#hb-aat-layout-feature-type-get-name-id" title="hb_aat_layout_feature_type_get_name_id ()">hb_aat_layout_feature_type_get_name_id</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-aat-layout.html#hb-aat-layout-feature-type-get-selector-infos" title="hb_aat_layout_feature_type_get_selector_infos ()">hb_aat_layout_feature_type_get_selector_infos</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-aat-layout.html#hb-aat-layout-get-feature-types" title="hb_aat_layout_get_feature_types ()">hb_aat_layout_get_feature_types</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-aat-layout.html#hb-aat-layout-has-positioning" title="hb_aat_layout_has_positioning ()">hb_aat_layout_has_positioning</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-aat-layout.html#hb-aat-layout-has-substitution" title="hb_aat_layout_has_substitution ()">hb_aat_layout_has_substitution</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-aat-layout.html#hb-aat-layout-has-tracking" title="hb_aat_layout_has_tracking ()">hb_aat_layout_has_tracking</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-aat-layout.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-NO-SELECTOR-INDEX:CAPS" title="HB_AAT_LAYOUT_NO_SELECTOR_INDEX">HB_AAT_LAYOUT_NO_SELECTOR_INDEX</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-aat-layout.html#hb-aat-layout-feature-type-t" title="enum hb_aat_layout_feature_type_t">hb_aat_layout_feature_type_t</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-aat-layout.html#hb-aat-layout-feature-selector-t" title="enum hb_aat_layout_feature_selector_t">hb_aat_layout_feature_selector_t</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-aat-layout.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
+ <span class="lineart">├──</span> hb_aat_layout_feature_selector_t
+ <span class="lineart">╰──</span> hb_aat_layout_feature_type_t
+</pre>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-aat-layout.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb-aat.h&gt;
+</pre>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-aat-layout.description"></a><h2>Description</h2>
+<p>Functions for querying OpenType Layout features in the font face.</p>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-aat-layout.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="hb-aat-layout-feature-type-get-name-id"></a><h3>hb_aat_layout_feature_type_get_name_id ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t"><span class="returnvalue">hb_ot_name_id_t</span></a>
+hb_aat_layout_feature_type_get_name_id
+ (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-aat-layout.html#hb-aat-layout-feature-type-t" title="enum hb_aat_layout_feature_type_t"><span class="type">hb_aat_layout_feature_type_t</span></a> feature_type</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-aat-layout-feature-type-get-name-id.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>face</p></td>
+<td class="parameter_description"><p>a face object</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>feature_type</p></td>
+<td class="parameter_description"><p>feature id</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-aat-layout-feature-type-get-name-id.returns"></a><h4>Returns</h4>
+<p> Name ID index</p>
+</div>
+<p class="since">Since: 2.2.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-aat-layout-feature-type-get-selector-infos"></a><h3>hb_aat_layout_feature_type_get_selector_infos ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">int</span>
+hb_aat_layout_feature_type_get_selector_infos
+ (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-aat-layout.html#hb-aat-layout-feature-type-t" title="enum hb_aat_layout_feature_type_t"><span class="type">hb_aat_layout_feature_type_t</span></a> feature_type</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> start_offset</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *selector_count</code></em>,
+ <em class="parameter"><code><span class="type">hb_aat_layout_feature_selector_info_t</span> *selectors</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *default_index</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-aat-layout-get-feature-types"></a><h3>hb_aat_layout_get_feature_types ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">int</span>
+hb_aat_layout_get_feature_types (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> start_offset</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *feature_count</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-aat-layout.html#hb-aat-layout-feature-type-t" title="enum hb_aat_layout_feature_type_t"><span class="type">hb_aat_layout_feature_type_t</span></a> *features</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-aat-layout-get-feature-types.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>face</p></td>
+<td class="parameter_description"><p>a face object</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>start_offset</p></td>
+<td class="parameter_description"><p>iteration's start offset</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>feature_count</p></td>
+<td class="parameter_description"><p> buffer size as input, filled size as output. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>features</p></td>
+<td class="parameter_description"><p> features buffer. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Out parameter, where caller must allocate storage."><span class="acronym">out caller-allocates</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=feature_count]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-aat-layout-get-feature-types.returns"></a><h4>Returns</h4>
+<p> Number of all available feature types.</p>
+</div>
+<p class="since">Since: 2.2.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-aat-layout-has-positioning"></a><h3>hb_aat_layout_has_positioning ()</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_aat_layout_has_positioning (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-aat-layout-has-substitution"></a><h3>hb_aat_layout_has_substitution ()</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_aat_layout_has_substitution (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-aat-layout-has-tracking"></a><h3>hb_aat_layout_has_tracking ()</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_aat_layout_has_tracking (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-aat-layout.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="HB-AAT-LAYOUT-NO-SELECTOR-INDEX:CAPS"></a><h3>HB_AAT_LAYOUT_NO_SELECTOR_INDEX</h3>
+<pre class="programlisting">#define HB_AAT_LAYOUT_NO_SELECTOR_INDEX 0xFFFFu
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-aat-layout-feature-type-t"></a><h3>enum hb_aat_layout_feature_type_t</h3>
+<div class="refsect3">
+<a name="hb-aat-layout-feature-type-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-AAT-LAYOUT-FEATURE-TYPE-INVALID:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_INVALID</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-ALL-TYPOGRAPHIC:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-LIGATURES:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-CURISVE-CONNECTION:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_CURISVE_CONNECTION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-LETTER-CASE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-VERTICAL-SUBSTITUTION:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-LINGUISTIC-REARRANGEMENT:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-NUMBER-SPACING:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-SMART-SWASH-TYPE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-DIACRITICS-TYPE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-VERTICAL-POSITION:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-FRACTIONS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-OVERLAPPING-CHARACTERS-TYPE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-TYPOGRAPHIC-EXTRAS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-MATHEMATICAL-EXTRAS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-ORNAMENT-SETS-TYPE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-CHARACTER-ALTERNATIVES:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-DESIGN-COMPLEXITY-TYPE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-STYLE-OPTIONS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-CHARACTER-SHAPE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-NUMBER-CASE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-TEXT-SPACING:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-TRANSLITERATION:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-ANNOTATION-TYPE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-KANA-SPACING-TYPE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-IDEOGRAPHIC-SPACING-TYPE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-UNICODE-DECOMPOSITION-TYPE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-RUBY-KANA:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-CJK-SYMBOL-ALTERNATIVES-TYPE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-IDEOGRAPHIC-ALTERNATIVES-TYPE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-CJK-VERTICAL-ROMAN-PLACEMENT-TYPE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-ITALIC-CJK-ROMAN:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-CASE-SENSITIVE-LAYOUT:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-ALTERNATE-KANA:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-STYLISTIC-ALTERNATIVES:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-CONTEXTUAL-ALTERNATIVES:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-LOWER-CASE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-UPPER-CASE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-LANGUAGE-TAG-TYPE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_LANGUAGE_TAG_TYPE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-CJK-ROMAN-SPACING-TYPE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-TYPE-MAX-VALUE:CAPS"></a>_HB_AAT_LAYOUT_FEATURE_TYPE_MAX_VALUE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 2.2.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-aat-layout-feature-selector-t"></a><h3>enum hb_aat_layout_feature_selector_t</h3>
+<div class="refsect3">
+<a name="hb-aat-layout-feature-selector-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-AAT-LAYOUT-FEATURE-SELECTOR-INVALID:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_INVALID</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ALL-TYPE-FEATURES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ALL-TYPE-FEATURES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-REQUIRED-LIGATURES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-REQUIRED-LIGATURES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-COMMON-LIGATURES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-COMMON-LIGATURES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-RARE-LIGATURES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-RARE-LIGATURES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-LOGOS-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-LOGOS-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-REBUS-PICTURES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-REBUS-PICTURES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-DIPHTHONG-LIGATURES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-DIPHTHONG-LIGATURES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SQUARED-LIGATURES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SQUARED-LIGATURES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ABBREV-SQUARED-LIGATURES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ABBREV-SQUARED-LIGATURES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SYMBOL-LIGATURES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SYMBOL-LIGATURES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CONTEXTUAL-LIGATURES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CONTEXTUAL-LIGATURES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-HISTORICAL-LIGATURES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-HISTORICAL-LIGATURES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-UNCONNECTED:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_UNCONNECTED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-PARTIALLY-CONNECTED:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_PARTIALLY_CONNECTED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CURSIVE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CURSIVE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-UPPER-AND-LOWER-CASE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_AND_LOWER_CASE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ALL-CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_CAPS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ALL-LOWER-CASE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_LOWER_CASE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SMALL-CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SMALL_CAPS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-INITIAL-CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-INITIAL-CAPS-AND-SMALL-CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS_AND_SMALL_CAPS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SUBSTITUTE-VERTICAL-FORMS-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SUBSTITUTE-VERTICAL-FORMS-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-LINGUISTIC-REARRANGEMENT-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-LINGUISTIC-REARRANGEMENT-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-MONOSPACED-NUMBERS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_NUMBERS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-PROPORTIONAL-NUMBERS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_NUMBERS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-THIRD-WIDTH-NUMBERS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_NUMBERS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-QUARTER-WIDTH-NUMBERS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_NUMBERS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-WORD-INITIAL-SWASHES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-WORD-INITIAL-SWASHES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-WORD-FINAL-SWASHES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-WORD-FINAL-SWASHES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-LINE-INITIAL-SWASHES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-LINE-INITIAL-SWASHES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-LINE-FINAL-SWASHES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-LINE-FINAL-SWASHES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-NON-FINAL-SWASHES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-NON-FINAL-SWASHES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SHOW-DIACRITICS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SHOW_DIACRITICS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-HIDE-DIACRITICS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_HIDE_DIACRITICS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-DECOMPOSE-DIACRITICS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_DECOMPOSE_DIACRITICS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-NORMAL-POSITION:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_NORMAL_POSITION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SUPERIORS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SUPERIORS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-INFERIORS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_INFERIORS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ORDINALS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ORDINALS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SCIENTIFIC-INFERIORS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SCIENTIFIC_INFERIORS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-FRACTIONS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_FRACTIONS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-VERTICAL-FRACTIONS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_VERTICAL_FRACTIONS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-DIAGONAL-FRACTIONS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAGONAL_FRACTIONS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-PREVENT-OVERLAP-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-PREVENT-OVERLAP-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-HYPHENS-TO-EM-DASH-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-HYPHENS-TO-EM-DASH-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-HYPHEN-TO-EN-DASH-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-HYPHEN-TO-EN-DASH-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SLASHED-ZERO-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SLASHED-ZERO-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-FORM-INTERROBANG-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-FORM-INTERROBANG-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SMART-QUOTES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SMART-QUOTES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-PERIODS-TO-ELLIPSIS-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-PERIODS-TO-ELLIPSIS-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-HYPHEN-TO-MINUS-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-HYPHEN-TO-MINUS-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ASTERISK-TO-MULTIPLY-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ASTERISK-TO-MULTIPLY-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SLASH-TO-DIVIDE-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SLASH-TO-DIVIDE-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-INEQUALITY-LIGATURES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-INEQUALITY-LIGATURES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-EXPONENTS-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-EXPONENTS-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-MATHEMATICAL-GREEK-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-MATHEMATICAL-GREEK-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-ORNAMENTS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ORNAMENTS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-DINGBATS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_DINGBATS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-PI-CHARACTERS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_PI_CHARACTERS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-FLEURONS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_FLEURONS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-DECORATIVE-BORDERS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_DECORATIVE_BORDERS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-INTERNATIONAL-SYMBOLS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_INTERNATIONAL_SYMBOLS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-MATH-SYMBOLS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_MATH_SYMBOLS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-ALTERNATES:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ALTERNATES</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-DESIGN-LEVEL1:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL1</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-DESIGN-LEVEL2:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL2</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-DESIGN-LEVEL3:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL3</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-DESIGN-LEVEL4:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL4</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-DESIGN-LEVEL5:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL5</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-STYLE-OPTIONS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLE_OPTIONS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-DISPLAY-TEXT:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_DISPLAY_TEXT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ENGRAVED-TEXT:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ENGRAVED_TEXT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ILLUMINATED-CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ILLUMINATED_CAPS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-TITLING-CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_TITLING_CAPS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-TALL-CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_TALL_CAPS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-TRADITIONAL-CHARACTERS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_CHARACTERS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SIMPLIFIED-CHARACTERS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SIMPLIFIED_CHARACTERS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-JIS1978-CHARACTERS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1978_CHARACTERS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-JIS1983-CHARACTERS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1983_CHARACTERS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-JIS1990-CHARACTERS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1990_CHARACTERS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-TRADITIONAL-ALT-ONE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_ONE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-TRADITIONAL-ALT-TWO:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_TWO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-TRADITIONAL-ALT-THREE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_THREE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-TRADITIONAL-ALT-FOUR:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FOUR</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-TRADITIONAL-ALT-FIVE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FIVE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-EXPERT-CHARACTERS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPERT_CHARACTERS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-JIS2004-CHARACTERS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS2004_CHARACTERS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-HOJO-CHARACTERS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_HOJO_CHARACTERS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-NLCCHARACTERS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_NLCCHARACTERS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-TRADITIONAL-NAMES-CHARACTERS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_NAMES_CHARACTERS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-LOWER-CASE-NUMBERS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_NUMBERS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-UPPER-CASE-NUMBERS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_NUMBERS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-PROPORTIONAL-TEXT:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_TEXT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-MONOSPACED-TEXT:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_TEXT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-HALF-WIDTH-TEXT:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_TEXT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-THIRD-WIDTH-TEXT:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_TEXT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-QUARTER-WIDTH-TEXT:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_TEXT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ALT-PROPORTIONAL-TEXT:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_PROPORTIONAL_TEXT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ALT-HALF-WIDTH-TEXT:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_HALF_WIDTH_TEXT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-TRANSLITERATION:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_TRANSLITERATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-HANJA-TO-HANGUL:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-HIRAGANA-TO-KATAKANA:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_HIRAGANA_TO_KATAKANA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-KATAKANA-TO-HIRAGANA:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_KATAKANA_TO_HIRAGANA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-KANA-TO-ROMANIZATION:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_KANA_TO_ROMANIZATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ROMANIZATION-TO-HIRAGANA:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_HIRAGANA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ROMANIZATION-TO-KATAKANA:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_KATAKANA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-HANJA-TO-HANGUL-ALT-ONE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_ONE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-HANJA-TO-HANGUL-ALT-TWO:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_TWO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-HANJA-TO-HANGUL-ALT-THREE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_THREE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-ANNOTATION:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ANNOTATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-BOX-ANNOTATION:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_BOX_ANNOTATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ROUNDED-BOX-ANNOTATION:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ROUNDED_BOX_ANNOTATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CIRCLE-ANNOTATION:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CIRCLE_ANNOTATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-INVERTED-CIRCLE-ANNOTATION:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_CIRCLE_ANNOTATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-PARENTHESIS-ANNOTATION:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_PARENTHESIS_ANNOTATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-PERIOD-ANNOTATION:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIOD_ANNOTATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ROMAN-NUMERAL-ANNOTATION:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMAN_NUMERAL_ANNOTATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-DIAMOND-ANNOTATION:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAMOND_ANNOTATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-INVERTED-BOX-ANNOTATION:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_BOX_ANNOTATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-INVERTED-ROUNDED-BOX-ANNOTATION:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_ROUNDED_BOX_ANNOTATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-FULL-WIDTH-KANA:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_KANA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-PROPORTIONAL-KANA:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_KANA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-FULL-WIDTH-IDEOGRAPHS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_IDEOGRAPHS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-PROPORTIONAL-IDEOGRAPHS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_IDEOGRAPHS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-HALF-WIDTH-IDEOGRAPHS:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_IDEOGRAPHS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CANONICAL-COMPOSITION-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CANONICAL-COMPOSITION-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-COMPATIBILITY-COMPOSITION-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-COMPATIBILITY-COMPOSITION-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-TRANSCODING-COMPOSITION-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-TRANSCODING-COMPOSITION-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-RUBY-KANA:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_RUBY_KANA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-RUBY-KANA:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-RUBY-KANA-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-RUBY-KANA-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-CJK-SYMBOL-ALTERNATIVES:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_SYMBOL_ALTERNATIVES</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-SYMBOL-ALT-ONE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_ONE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-SYMBOL-ALT-TWO:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_TWO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-SYMBOL-ALT-THREE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_THREE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-SYMBOL-ALT-FOUR:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FOUR</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-SYMBOL-ALT-FIVE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FIVE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-IDEOGRAPHIC-ALTERNATIVES:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_IDEOGRAPHIC_ALTERNATIVES</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-IDEOGRAPHIC-ALT-ONE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_ONE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-IDEOGRAPHIC-ALT-TWO:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_TWO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-IDEOGRAPHIC-ALT-THREE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_THREE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-IDEOGRAPHIC-ALT-FOUR:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FOUR</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-IDEOGRAPHIC-ALT-FIVE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FIVE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-VERTICAL-ROMAN-CENTERED:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_CENTERED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-VERTICAL-ROMAN-HBASELINE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_HBASELINE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-CJK-ITALIC-ROMAN:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_ITALIC_ROMAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-ITALIC-ROMAN:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-ITALIC-ROMAN-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-ITALIC-ROMAN-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CASE-SENSITIVE-LAYOUT-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CASE-SENSITIVE-LAYOUT-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CASE-SENSITIVE-SPACING-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CASE-SENSITIVE-SPACING-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ALTERNATE-HORIZ-KANA-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ALTERNATE-HORIZ-KANA-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ALTERNATE-VERT-KANA-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-ALTERNATE-VERT-KANA-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-STYLISTIC-ALTERNATES:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLISTIC_ALTERNATES</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-ONE-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-ONE-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-TWO-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-TWO-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-THREE-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-THREE-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-FOUR-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-FOUR-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-FIVE-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-FIVE-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-SIX-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-SIX-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-SEVEN-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-SEVEN-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-EIGHT-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-EIGHT-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-NINE-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-NINE-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-TEN-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-TEN-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-ELEVEN-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-ELEVEN-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-TWELVE-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-TWELVE-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-THIRTEEN-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-THIRTEEN-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-FOURTEEN-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-FOURTEEN-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-FIFTEEN-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-FIFTEEN-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-SIXTEEN-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-SIXTEEN-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-SEVENTEEN-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-SEVENTEEN-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-EIGHTEEN-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-EIGHTEEN-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-NINETEEN-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-NINETEEN-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-TWENTY-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-TWENTY-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CONTEXTUAL-ALTERNATES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CONTEXTUAL-ALTERNATES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SWASH-ALTERNATES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-SWASH-ALTERNATES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CONTEXTUAL-SWASH-ALTERNATES-ON:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_ON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-CONTEXTUAL-SWASH-ALTERNATES-OFF:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_OFF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-DEFAULT-LOWER-CASE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_LOWER_CASE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-LOWER-CASE-SMALL-CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_SMALL_CAPS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-LOWER-CASE-PETITE-CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_PETITE_CAPS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-DEFAULT-UPPER-CASE:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_UPPER_CASE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-UPPER-CASE-SMALL-CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_SMALL_CAPS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-UPPER-CASE-PETITE-CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_PETITE_CAPS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-HALF-WIDTH-CJK-ROMAN:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_CJK_ROMAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-PROPORTIONAL-CJK-ROMAN:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_CJK_ROMAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-DEFAULT-CJK-ROMAN:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_CJK_ROMAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-FULL-WIDTH-CJK-ROMAN:CAPS"></a>HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_CJK_ROMAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-AAT-LAYOUT-FEATURE-SELECTOR-MAX-VALUE:CAPS"></a>_HB_AAT_LAYOUT_FEATURE_SELECTOR_MAX_VALUE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 2.2.0</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-blob.html b/docs/html/harfbuzz-hb-blob.html
index b3d9a76..9fa3967 100644
--- a/docs/html/harfbuzz-hb-blob.html
+++ b/docs/html/harfbuzz-hb-blob.html
@@ -5,10 +5,10 @@
<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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-Buffers.html" title="Buffers">
-<link rel="next" href="harfbuzz-hb-face.html" title="hb-face">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch09.html" title="Core API">
+<link rel="prev" href="ch09.html" title="Core API">
+<link rel="next" href="harfbuzz-hb-buffer.html" title="hb-buffer">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,16 +19,16 @@
<a href="#harfbuzz-hb-blob.object-hierarchy" class="shortcut">Object Hierarchy</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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-Buffers.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-face.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="u" href="ch09.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="ch09.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</p>
+<p>hb-blob — Binary data containers</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -174,14 +174,23 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-blob.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
<span class="lineart">╰──</span> hb_blob_t
- <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
+ <a href="/usr/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
<span class="lineart">╰──</span> hb_memory_mode_t
</pre>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-blob.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb.h&gt;
+</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>
@@ -272,7 +281,7 @@ hb_blob_create_from_file (<em class="parameter"><code>const <span class="type">c
<a name="hb-blob-create-from-file.returns"></a><h4>Returns</h4>
<p> A hb_blob_t pointer with the content of the file</p>
</div>
-<p class="since">Since: 1.7.7</p>
+<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">
@@ -354,7 +363,7 @@ hb_blob_copy_writable_or_fail (<em class="parameter"><code><a class="link" href=
<a name="hb-blob-copy-writable-or-fail.returns"></a><h4>Returns</h4>
<p> New blob, or nullptr if allocation failed.</p>
</div>
-<p class="since">Since: 1.8.0</p>
+<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">
@@ -446,7 +455,7 @@ fails.</p>
</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_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>
@@ -454,7 +463,7 @@ fails.</p>
</div>
<div class="refsect3">
<a name="hb-blob-get-data-writable.returns"></a><h4>Returns</h4>
-<p>Writable blob data,
+<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>
@@ -469,7 +478,7 @@ hb_blob_get_empty (<em class="parameter"><code><span class="type">void</span></c
<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> 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>
@@ -712,6 +721,6 @@ is not needed anymore.</p></td>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-Buffers.html b/docs/html/harfbuzz-hb-buffer.html
index af4e7a3..b9f3695 100644
--- a/docs/html/harfbuzz-Buffers.html
+++ b/docs/html/harfbuzz-hb-buffer.html
@@ -2,38 +2,38 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Buffers: HarfBuzz Manual</title>
+<title>hb-buffer: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-unicode.html" title="hb-unicode">
-<link rel="next" href="harfbuzz-hb-blob.html" title="hb-blob">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch09.html" title="Core API">
+<link rel="prev" href="harfbuzz-hb-blob.html" title="hb-blob">
+<link rel="next" href="harfbuzz-hb-common.html" title="hb-common">
+<meta name="generator" content="GTK-Doc V1.25 (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-Buffers.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
- <a href="#harfbuzz-Buffers.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+ <a href="#harfbuzz-hb-buffer.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+ <a href="#harfbuzz-hb-buffer.object-hierarchy" class="shortcut">Object Hierarchy</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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-unicode.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-blob.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="u" href="ch09.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-blob.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-common.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
-<a name="harfbuzz-Buffers"></a><div class="titlepage"></div>
+<a name="harfbuzz-hb-buffer"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
-<h2><span class="refentrytitle"><a name="harfbuzz-Buffers.top_of_page"></a>Buffers</span></h2>
-<p>Buffers — Input and output buffers</p>
+<h2><span class="refentrytitle"><a name="harfbuzz-hb-buffer.top_of_page"></a>hb-buffer</span></h2>
+<p>hb-buffer — Input and output buffers</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="harfbuzz-Buffers.functions"></a><h2>Functions</h2>
+<a name="harfbuzz-hb-buffer.functions"></a><h2>Functions</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="functions_return">
@@ -42,26 +42,26 @@
<tbody>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-create" title="hb_buffer_create ()">hb_buffer_create</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-create" title="hb_buffer_create ()">hb_buffer_create</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reference" title="hb_buffer_reference ()">hb_buffer_reference</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reference" title="hb_buffer_reference ()">hb_buffer_reference</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-empty" title="hb_buffer_get_empty ()">hb_buffer_get_empty</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-empty" title="hb_buffer_get_empty ()">hb_buffer_get_empty</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -69,7 +69,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-destroy" title="hb_buffer_destroy ()">hb_buffer_destroy</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-destroy" title="hb_buffer_destroy ()">hb_buffer_destroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -77,7 +77,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reset" title="hb_buffer_reset ()">hb_buffer_reset</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reset" title="hb_buffer_reset ()">hb_buffer_reset</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -85,7 +85,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-clear-contents" title="hb_buffer_clear_contents ()">hb_buffer_clear_contents</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-clear-contents" title="hb_buffer_clear_contents ()">hb_buffer_clear_contents</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -93,7 +93,7 @@
<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-Buffers.html#hb-buffer-pre-allocate" title="hb_buffer_pre_allocate ()">hb_buffer_pre_allocate</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-pre-allocate" title="hb_buffer_pre_allocate ()">hb_buffer_pre_allocate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -101,7 +101,7 @@
<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-Buffers.html#hb-buffer-allocation-successful" title="hb_buffer_allocation_successful ()">hb_buffer_allocation_successful</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-allocation-successful" title="hb_buffer_allocation_successful ()">hb_buffer_allocation_successful</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -109,7 +109,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add" title="hb_buffer_add ()">hb_buffer_add</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add" title="hb_buffer_add ()">hb_buffer_add</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -117,7 +117,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()">hb_buffer_add_codepoints</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()">hb_buffer_add_codepoints</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -125,7 +125,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-utf32" title="hb_buffer_add_utf32 ()">hb_buffer_add_utf32</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf32" title="hb_buffer_add_utf32 ()">hb_buffer_add_utf32</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -133,7 +133,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-utf16" title="hb_buffer_add_utf16 ()">hb_buffer_add_utf16</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf16" title="hb_buffer_add_utf16 ()">hb_buffer_add_utf16</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -141,7 +141,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-utf8" title="hb_buffer_add_utf8 ()">hb_buffer_add_utf8</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf8" title="hb_buffer_add_utf8 ()">hb_buffer_add_utf8</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -149,7 +149,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-latin1" title="hb_buffer_add_latin1 ()">hb_buffer_add_latin1</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-latin1" title="hb_buffer_add_latin1 ()">hb_buffer_add_latin1</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -157,7 +157,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-append" title="hb_buffer_append ()">hb_buffer_append</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-append" title="hb_buffer_append ()">hb_buffer_append</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -165,15 +165,15 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-content-type" title="hb_buffer_set_content_type ()">hb_buffer_set_content_type</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-content-type" title="hb_buffer_set_content_type ()">hb_buffer_set_content_type</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t"><span class="returnvalue">hb_buffer_content_type_t</span></a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t"><span class="returnvalue">hb_buffer_content_type_t</span></a>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-content-type" title="hb_buffer_get_content_type ()">hb_buffer_get_content_type</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-content-type" title="hb_buffer_get_content_type ()">hb_buffer_get_content_type</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -181,7 +181,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()">hb_buffer_set_direction</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()">hb_buffer_set_direction</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -189,7 +189,7 @@
<a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="returnvalue">hb_direction_t</span></a>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-direction" title="hb_buffer_get_direction ()">hb_buffer_get_direction</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-direction" title="hb_buffer_get_direction ()">hb_buffer_get_direction</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -197,7 +197,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-script" title="hb_buffer_set_script ()">hb_buffer_set_script</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-script" title="hb_buffer_set_script ()">hb_buffer_set_script</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -205,7 +205,7 @@
<a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-script" title="hb_buffer_get_script ()">hb_buffer_get_script</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-script" title="hb_buffer_get_script ()">hb_buffer_get_script</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -213,7 +213,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-language" title="hb_buffer_set_language ()">hb_buffer_set_language</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-language" title="hb_buffer_set_language ()">hb_buffer_set_language</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -221,7 +221,7 @@
<a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="returnvalue">hb_language_t</span></a>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-language" title="hb_buffer_get_language ()">hb_buffer_get_language</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-language" title="hb_buffer_get_language ()">hb_buffer_get_language</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -229,15 +229,15 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-flags" title="hb_buffer_set_flags ()">hb_buffer_set_flags</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-flags" title="hb_buffer_set_flags ()">hb_buffer_set_flags</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="returnvalue">hb_buffer_flags_t</span></a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="returnvalue">hb_buffer_flags_t</span></a>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-flags" title="hb_buffer_get_flags ()">hb_buffer_get_flags</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-flags" title="hb_buffer_get_flags ()">hb_buffer_get_flags</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -245,15 +245,15 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-cluster-level" title="hb_buffer_set_cluster_level ()">hb_buffer_set_cluster_level</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-cluster-level" title="hb_buffer_set_cluster_level ()">hb_buffer_set_cluster_level</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t"><span class="returnvalue">hb_buffer_cluster_level_t</span></a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t"><span class="returnvalue">hb_buffer_cluster_level_t</span></a>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-cluster-level" title="hb_buffer_get_cluster_level ()">hb_buffer_get_cluster_level</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-cluster-level" title="hb_buffer_get_cluster_level ()">hb_buffer_get_cluster_level</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -261,14 +261,14 @@
<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-Buffers.html#hb-buffer-set-length" title="hb_buffer_set_length ()">hb_buffer_set_length</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-length" title="hb_buffer_set_length ()">hb_buffer_set_length</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-Buffers.html#hb-buffer-get-length" title="hb_buffer_get_length ()">hb_buffer_get_length</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-length" title="hb_buffer_get_length ()">hb_buffer_get_length</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -276,7 +276,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-segment-properties" title="hb_buffer_set_segment_properties ()">hb_buffer_set_segment_properties</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-segment-properties" title="hb_buffer_set_segment_properties ()">hb_buffer_set_segment_properties</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -284,7 +284,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-segment-properties" title="hb_buffer_get_segment_properties ()">hb_buffer_get_segment_properties</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-segment-properties" title="hb_buffer_get_segment_properties ()">hb_buffer_get_segment_properties</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -292,7 +292,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-guess-segment-properties" title="hb_buffer_guess_segment_properties ()">hb_buffer_guess_segment_properties</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-guess-segment-properties" title="hb_buffer_guess_segment_properties ()">hb_buffer_guess_segment_properties</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -300,7 +300,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-unicode-funcs" title="hb_buffer_set_unicode_funcs ()">hb_buffer_set_unicode_funcs</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-unicode-funcs" title="hb_buffer_set_unicode_funcs ()">hb_buffer_set_unicode_funcs</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -308,7 +308,7 @@
<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="returnvalue">hb_unicode_funcs_t</span></a> *
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-unicode-funcs" title="hb_buffer_get_unicode_funcs ()">hb_buffer_get_unicode_funcs</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-unicode-funcs" title="hb_buffer_get_unicode_funcs ()">hb_buffer_get_unicode_funcs</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -316,7 +316,7 @@
<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-Buffers.html#hb-buffer-set-user-data" title="hb_buffer_set_user_data ()">hb_buffer_set_user_data</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-user-data" title="hb_buffer_set_user_data ()">hb_buffer_set_user_data</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -324,23 +324,31 @@
<span class="returnvalue">void</span> *
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-user-data" title="hb_buffer_get_user_data ()">hb_buffer_get_user_data</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-user-data" title="hb_buffer_get_user_data ()">hb_buffer_get_user_data</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t"><span class="returnvalue">hb_glyph_info_t</span></a> *
+<span class="returnvalue">hb_glyph_info_t</span> *
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-glyph-infos" title="hb_buffer_get_glyph_infos ()">hb_buffer_get_glyph_infos</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-glyph-infos" title="hb_buffer_get_glyph_infos ()">hb_buffer_get_glyph_infos</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-glyph-position-t"><span class="returnvalue">hb_glyph_position_t</span></a> *
+<a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t"><span class="returnvalue">hb_glyph_position_t</span></a> *
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-glyph-positions" title="hb_buffer_get_glyph_positions ()">hb_buffer_get_glyph_positions</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-glyph-positions" title="hb_buffer_get_glyph_positions ()">hb_buffer_get_glyph_positions</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="returnvalue">hb_codepoint_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-invisible-glyph" title="hb_buffer_get_invisible_glyph ()">hb_buffer_get_invisible_glyph</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -348,7 +356,15 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()">hb_buffer_set_replacement_codepoint</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-invisible-glyph" title="hb_buffer_set_invisible_glyph ()">hb_buffer_set_invisible_glyph</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-buffer.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()">hb_buffer_set_replacement_codepoint</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -356,7 +372,7 @@
<a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="returnvalue">hb_codepoint_t</span></a>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-replacement-codepoint" title="hb_buffer_get_replacement_codepoint ()">hb_buffer_get_replacement_codepoint</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-replacement-codepoint" title="hb_buffer_get_replacement_codepoint ()">hb_buffer_get_replacement_codepoint</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -364,7 +380,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-normalize-glyphs" title="hb_buffer_normalize_glyphs ()">hb_buffer_normalize_glyphs</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-normalize-glyphs" title="hb_buffer_normalize_glyphs ()">hb_buffer_normalize_glyphs</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -372,7 +388,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reverse" title="hb_buffer_reverse ()">hb_buffer_reverse</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reverse" title="hb_buffer_reverse ()">hb_buffer_reverse</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -380,7 +396,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reverse-range" title="hb_buffer_reverse_range ()">hb_buffer_reverse_range</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reverse-range" title="hb_buffer_reverse_range ()">hb_buffer_reverse_range</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -388,14 +404,14 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-reverse-clusters" title="hb_buffer_reverse_clusters ()">hb_buffer_reverse_clusters</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reverse-clusters" title="hb_buffer_reverse_clusters ()">hb_buffer_reverse_clusters</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-Buffers.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()">hb_buffer_serialize_glyphs</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()">hb_buffer_serialize_glyphs</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -403,29 +419,29 @@
<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-Buffers.html#hb-buffer-deserialize-glyphs" title="hb_buffer_deserialize_glyphs ()">hb_buffer_deserialize_glyphs</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-deserialize-glyphs" title="hb_buffer_deserialize_glyphs ()">hb_buffer_deserialize_glyphs</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="returnvalue">hb_buffer_serialize_format_t</span></a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="returnvalue">hb_buffer_serialize_format_t</span></a>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-from-string" title="hb_buffer_serialize_format_from_string ()">hb_buffer_serialize_format_from_string</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-from-string" title="hb_buffer_serialize_format_from_string ()">hb_buffer_serialize_format_from_string</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-Buffers.html#hb-buffer-serialize-format-to-string" title="hb_buffer_serialize_format_to_string ()">hb_buffer_serialize_format_to_string</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-to-string" title="hb_buffer_serialize_format_to_string ()">hb_buffer_serialize_format_to_string</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-Buffers.html#hb-buffer-serialize-list-formats" title="hb_buffer_serialize_list_formats ()">hb_buffer_serialize_list_formats</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-list-formats" title="hb_buffer_serialize_list_formats ()">hb_buffer_serialize_list_formats</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -433,22 +449,22 @@
<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-Buffers.html#hb-segment-properties-equal" title="hb_segment_properties_equal ()">hb_segment_properties_equal</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-equal" title="hb_segment_properties_equal ()">hb_segment_properties_equal</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-Buffers.html#hb-segment-properties-hash" title="hb_segment_properties_hash ()">hb_segment_properties_hash</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-hash" title="hb_segment_properties_hash ()">hb_segment_properties_hash</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-diff-flags-t" title="enum hb_buffer_diff_flags_t"><span class="returnvalue">hb_buffer_diff_flags_t</span></a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-diff-flags-t" title="enum hb_buffer_diff_flags_t"><span class="returnvalue">hb_buffer_diff_flags_t</span></a>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-diff" title="hb_buffer_diff ()">hb_buffer_diff</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-diff" title="hb_buffer_diff ()">hb_buffer_diff</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -456,15 +472,15 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-message-func" title="hb_buffer_set_message_func ()">hb_buffer_set_message_func</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-message-func" title="hb_buffer_set_message_func ()">hb_buffer_set_message_func</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-Buffers.html#hb-glyph-flags-t" title="enum hb_glyph_flags_t"><span class="returnvalue">hb_glyph_flags_t</span></a>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-flags-t" title="enum hb_glyph_flags_t"><span class="returnvalue">hb_glyph_flags_t</span></a>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-get-glyph-flags" title="hb_glyph_info_get_glyph_flags ()">hb_glyph_info_get_glyph_flags</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-get-glyph-flags" title="hb_glyph_info_get_glyph_flags ()">hb_glyph_info_get_glyph_flags</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -472,14 +488,14 @@
<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">
-<span class="c_punctuation">(</span><a class="link" href="harfbuzz-Buffers.html#hb-buffer-message-func-t" title="hb_buffer_message_func_t ()">*hb_buffer_message_func_t</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
+<span class="c_punctuation">(</span><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-message-func-t" title="hb_buffer_message_func_t ()">*hb_buffer_message_func_t</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
</table></div>
</div>
-<a name="hb-buffer-t"></a><a name="hb-glyph-info-t"></a><a name="hb-glyph-position-t"></a><a name="hb-segment-properties-t"></a><div class="refsect1">
-<a name="harfbuzz-Buffers.other"></a><h2>Types and Values</h2>
+<a name="hb-buffer-t"></a><a name="hb-glyph-position-t"></a><a name="hb-segment-properties-t"></a><div class="refsect1">
+<a name="harfbuzz-hb-buffer.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="name">
@@ -488,71 +504,66 @@
<tbody>
<tr>
<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#HB-SEGMENT-PROPERTIES-DEFAULT:CAPS" title="HB_SEGMENT_PROPERTIES_DEFAULT">HB_SEGMENT_PROPERTIES_DEFAULT</a></td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#HB-SEGMENT-PROPERTIES-DEFAULT:CAPS" title="HB_SEGMENT_PROPERTIES_DEFAULT">HB_SEGMENT_PROPERTIES_DEFAULT</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS" title="HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT">HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT</a></td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS" title="HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT">HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT</a></td>
</tr>
<tr>
<td class="typedef_keyword">typedef</td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t">hb_buffer_t</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword"> </td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t-struct" title="hb_glyph_info_t">hb_glyph_info_t</a></td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t">hb_buffer_t</a></td>
</tr>
<tr>
<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-glyph-flags-t" title="enum hb_glyph_flags_t">hb_glyph_flags_t</a></td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-flags-t" title="enum hb_glyph_flags_t">hb_glyph_flags_t</a></td>
</tr>
<tr>
<td class="datatype_keyword"> </td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-glyph-position-t-struct" title="hb_glyph_position_t">hb_glyph_position_t</a></td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t-struct" title="hb_glyph_position_t">hb_glyph_position_t</a></td>
</tr>
<tr>
<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t">hb_buffer_content_type_t</a></td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t">hb_buffer_content_type_t</a></td>
</tr>
<tr>
<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t">hb_buffer_flags_t</a></td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t">hb_buffer_flags_t</a></td>
</tr>
<tr>
<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t">hb_buffer_cluster_level_t</a></td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t">hb_buffer_cluster_level_t</a></td>
</tr>
<tr>
<td class="datatype_keyword"> </td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t-struct" title="hb_segment_properties_t">hb_segment_properties_t</a></td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t-struct" title="hb_segment_properties_t">hb_segment_properties_t</a></td>
</tr>
<tr>
<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t">hb_buffer_serialize_format_t</a></td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t">hb_buffer_serialize_format_t</a></td>
</tr>
<tr>
<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t">hb_buffer_serialize_flags_t</a></td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t">hb_buffer_serialize_flags_t</a></td>
</tr>
<tr>
<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-diff-flags-t" title="enum hb_buffer_diff_flags_t">hb_buffer_diff_flags_t</a></td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-diff-flags-t" title="enum hb_buffer_diff_flags_t">hb_buffer_diff_flags_t</a></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
-<a name="harfbuzz-Buffers.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+<a name="harfbuzz-hb-buffer.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
<span class="lineart">├──</span> hb_buffer_t
- <span class="lineart">├──</span> hb_glyph_info_t
<span class="lineart">├──</span> hb_glyph_position_t
<span class="lineart">╰──</span> hb_segment_properties_t
- <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
+ <a href="/usr/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
<span class="lineart">├──</span> hb_buffer_cluster_level_t
<span class="lineart">├──</span> hb_buffer_content_type_t
<span class="lineart">╰──</span> hb_buffer_serialize_format_t
- <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GFlags</a>
+ <a href="/usr/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GFlags</a>
<span class="lineart">├──</span> hb_buffer_diff_flags_t
<span class="lineart">├──</span> hb_buffer_flags_t
<span class="lineart">├──</span> hb_buffer_serialize_flags_t
@@ -560,30 +571,30 @@
</pre>
</div>
<div class="refsect1">
-<a name="harfbuzz-Buffers.includes"></a><h2>Includes</h2>
+<a name="harfbuzz-hb-buffer.includes"></a><h2>Includes</h2>
<pre class="synopsis">#include &lt;hb.h&gt;
</pre>
</div>
<div class="refsect1">
-<a name="harfbuzz-Buffers.description"></a><h2>Description</h2>
+<a name="harfbuzz-hb-buffer.description"></a><h2>Description</h2>
<p>Buffers serve dual role in HarfBuzz; they hold the input characters that are
-passed <a class="link" href="harfbuzz-Shaping.html#hb-shape" title="hb_shape ()"><code class="function">hb_shape()</code></a>, and after shaping they hold the output glyphs.</p>
+passed to <a class="link" href="harfbuzz-hb-shape.html#hb-shape" title="hb_shape ()"><code class="function">hb_shape()</code></a>, and after shaping they hold the output glyphs.</p>
</div>
<div class="refsect1">
-<a name="harfbuzz-Buffers.functions_details"></a><h2>Functions</h2>
+<a name="harfbuzz-hb-buffer.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
<a name="hb-buffer-create"></a><h3>hb_buffer_create ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
hb_buffer_create (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Creates a new <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> with all properties to defaults.</p>
+<p>Creates a new <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> with all properties to defaults.</p>
<p><span class="annotation">[Xconstructor]</span></p>
<div class="refsect3">
<a name="hb-buffer-create.returns"></a><h4>Returns</h4>
-<p>A newly allocated <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> with a reference count of 1. The initial
-reference count should be released with <a class="link" href="harfbuzz-Buffers.html#hb-buffer-destroy" title="hb_buffer_destroy ()"><code class="function">hb_buffer_destroy()</code></a> when you are done
-using the <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>. This function never returns <code class="literal">NULL</code>. If memory cannot
-be allocated, a special <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> object will be returned on which
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-allocation-successful" title="hb_buffer_allocation_successful ()"><code class="function">hb_buffer_allocation_successful()</code></a> returns <code class="literal">false</code>. </p>
+<p>A newly allocated <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> with a reference count of 1. The initial
+reference count should be released with <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-destroy" title="hb_buffer_destroy ()"><code class="function">hb_buffer_destroy()</code></a> when you are done
+using the <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>. This function never returns <code class="literal">NULL</code>. If memory cannot
+be allocated, a special <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> object will be returned on which
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-allocation-successful" title="hb_buffer_allocation_successful ()"><code class="function">hb_buffer_allocation_successful()</code></a> returns <code class="literal">false</code>. </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>
@@ -591,12 +602,12 @@ be allocated, a special <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"
<hr>
<div class="refsect2">
<a name="hb-buffer-reference"></a><h3>hb_buffer_reference ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
-hb_buffer_reference (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
+hb_buffer_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
<p>Increases the reference count on <em class="parameter"><code>buffer</code></em>
by one. This prevents <em class="parameter"><code>buffer</code></em>
from
-being destroyed until a matching call to <a class="link" href="harfbuzz-Buffers.html#hb-buffer-destroy" title="hb_buffer_destroy ()"><code class="function">hb_buffer_destroy()</code></a> is made.</p>
+being destroyed until a matching call to <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-destroy" title="hb_buffer_destroy ()"><code class="function">hb_buffer_destroy()</code></a> is made.</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-buffer-reference.parameters"></a><h4>Parameters</h4>
@@ -608,14 +619,14 @@ being destroyed until a matching call to <a class="link" href="harfbuzz-Buffers.
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="hb-buffer-reference.returns"></a><h4>Returns</h4>
-<p>The referenced <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>. </p>
+<p>The referenced <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>. </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>
@@ -623,7 +634,7 @@ being destroyed until a matching call to <a class="link" href="harfbuzz-Buffers.
<hr>
<div class="refsect2">
<a name="hb-buffer-get-empty"></a><h3>hb_buffer_get_empty ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="returnvalue">hb_buffer_t</span></a> *
hb_buffer_get_empty (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<div class="refsect3">
<a name="hb-buffer-get-empty.returns"></a><h4>Returns</h4>
@@ -636,13 +647,13 @@ hb_buffer_get_empty (<em class="parameter"><code><span class="type">void</span><
<div class="refsect2">
<a name="hb-buffer-destroy"></a><h3>hb_buffer_destroy ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+hb_buffer_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
<p>Deallocate the <em class="parameter"><code>buffer</code></em>
.
Decreases the reference count on <em class="parameter"><code>buffer</code></em>
by one. If the result is zero, then
<em class="parameter"><code>buffer</code></em>
- and all associated resources are freed. See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-reference" title="hb_buffer_reference ()"><code class="function">hb_buffer_reference()</code></a>.</p>
+ and all associated resources are freed. See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reference" title="hb_buffer_reference ()"><code class="function">hb_buffer_reference()</code></a>.</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-buffer-destroy.parameters"></a><h4>Parameters</h4>
@@ -654,7 +665,7 @@ Decreases the reference count on <em class="parameter"><code>buffer</code></em>
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -665,9 +676,9 @@ Decreases the reference count on <em class="parameter"><code>buffer</code></em>
<div class="refsect2">
<a name="hb-buffer-reset"></a><h3>hb_buffer_reset ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_reset (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+hb_buffer_reset (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
<p>Resets the buffer to its initial status, as if it was just newly created
-with <a class="link" href="harfbuzz-Buffers.html#hb-buffer-create" title="hb_buffer_create ()"><code class="function">hb_buffer_create()</code></a>.</p>
+with <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-create" title="hb_buffer_create ()"><code class="function">hb_buffer_create()</code></a>.</p>
<div class="refsect3">
<a name="hb-buffer-reset.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -678,7 +689,7 @@ with <a class="link" href="harfbuzz-Buffers.html#hb-buffer-create" title="hb_buf
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -689,8 +700,8 @@ with <a class="link" href="harfbuzz-Buffers.html#hb-buffer-create" title="hb_buf
<div class="refsect2">
<a name="hb-buffer-clear-contents"></a><h3>hb_buffer_clear_contents ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_clear_contents (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>Similar to <a class="link" href="harfbuzz-Buffers.html#hb-buffer-reset" title="hb_buffer_reset ()"><code class="function">hb_buffer_reset()</code></a>, but does not clear the Unicode functions and
+hb_buffer_clear_contents (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<p>Similar to <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reset" title="hb_buffer_reset ()"><code class="function">hb_buffer_reset()</code></a>, but does not clear the Unicode functions and
the replacement code point.</p>
<div class="refsect3">
<a name="hb-buffer-clear-contents.parameters"></a><h4>Parameters</h4>
@@ -702,7 +713,7 @@ the replacement code point.</p>
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -713,7 +724,7 @@ the replacement code point.</p>
<div class="refsect2">
<a name="hb-buffer-pre-allocate"></a><h3>hb_buffer_pre_allocate ()</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_buffer_pre_allocate (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+hb_buffer_pre_allocate (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> size</code></em>);</pre>
<p>Pre allocates memory for <em class="parameter"><code>buffer</code></em>
to fit at least <em class="parameter"><code>size</code></em>
@@ -729,7 +740,7 @@ hb_buffer_pre_allocate (<em class="parameter"><code><a class="link" href="harfbu
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
@@ -751,7 +762,7 @@ memory allocation succeeded, <code class="literal">false</code> otherwise.</p>
<div class="refsect2">
<a name="hb-buffer-allocation-successful"></a><h3>hb_buffer_allocation_successful ()</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_buffer_allocation_successful (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+hb_buffer_allocation_successful (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
<p>Check if allocating memory for the buffer succeeded.</p>
<div class="refsect3">
<a name="hb-buffer-allocation-successful.parameters"></a><h4>Parameters</h4>
@@ -763,7 +774,7 @@ hb_buffer_allocation_successful (<em class="parameter"><code><a class="link" hre
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -779,7 +790,7 @@ memory allocation succeeded, <code class="literal">false</code> otherwise.</p>
<div class="refsect2">
<a name="hb-buffer-add"></a><h3>hb_buffer_add ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_add (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+hb_buffer_add (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> codepoint</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> cluster</code></em>);</pre>
<p>Appends a character with the Unicode value of <em class="parameter"><code>codepoint</code></em>
@@ -804,7 +815,7 @@ caller to ensure it is a valid Unicode code point.</p>
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
@@ -827,7 +838,7 @@ caller to ensure it is a valid Unicode code point.</p>
<div class="refsect2">
<a name="hb-buffer-add-codepoints"></a><h3>hb_buffer_add_codepoints ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_add_codepoints (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+hb_buffer_add_codepoints (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *text</code></em>,
<em class="parameter"><code><span class="type">int</span> text_length</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
@@ -862,12 +873,12 @@ to ensure it contains a valid Unicode code points.</p>
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>a <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> to append characters to.</p></td>
+<td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> to append characters to.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>text</p></td>
-<td class="parameter_description"><p>an array of Unicode code points to append. </p></td>
+<td class="parameter_description"><p> an array of Unicode code points to append. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_length]</span></td>
</tr>
<tr>
@@ -899,15 +910,15 @@ end of <em class="parameter"><code>text</code></em>
<div class="refsect2">
<a name="hb-buffer-add-utf32"></a><h3>hb_buffer_add_utf32 ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_add_utf32 (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+hb_buffer_add_utf32 (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code>const <span class="type">uint32_t</span> *text</code></em>,
<em class="parameter"><code><span class="type">int</span> text_length</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
<em class="parameter"><code><span class="type">int</span> item_length</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()"><code class="function">hb_buffer_add_codepoints()</code></a>.</p>
+<p>See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()"><code class="function">hb_buffer_add_codepoints()</code></a>.</p>
<p>Replaces invalid UTF-32 characters with the <em class="parameter"><code>buffer</code></em>
replacement code point,
-see <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()"><code class="function">hb_buffer_set_replacement_codepoint()</code></a>.</p>
+see <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()"><code class="function">hb_buffer_set_replacement_codepoint()</code></a>.</p>
<div class="refsect3">
<a name="hb-buffer-add-utf32.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -919,12 +930,12 @@ see <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepo
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>text</p></td>
-<td class="parameter_description"><p>an array of UTF-32 characters to append. </p></td>
+<td class="parameter_description"><p> an array of UTF-32 characters to append. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_length]</span></td>
</tr>
<tr>
@@ -956,15 +967,15 @@ end of <em class="parameter"><code>text</code></em>
<div class="refsect2">
<a name="hb-buffer-add-utf16"></a><h3>hb_buffer_add_utf16 ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_add_utf16 (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+hb_buffer_add_utf16 (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code>const <span class="type">uint16_t</span> *text</code></em>,
<em class="parameter"><code><span class="type">int</span> text_length</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
<em class="parameter"><code><span class="type">int</span> item_length</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()"><code class="function">hb_buffer_add_codepoints()</code></a>.</p>
+<p>See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()"><code class="function">hb_buffer_add_codepoints()</code></a>.</p>
<p>Replaces invalid UTF-16 characters with the <em class="parameter"><code>buffer</code></em>
replacement code point,
-see <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()"><code class="function">hb_buffer_set_replacement_codepoint()</code></a>.</p>
+see <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()"><code class="function">hb_buffer_set_replacement_codepoint()</code></a>.</p>
<div class="refsect3">
<a name="hb-buffer-add-utf16.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -976,12 +987,12 @@ see <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepo
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>text</p></td>
-<td class="parameter_description"><p>an array of UTF-16 characters to append. </p></td>
+<td class="parameter_description"><p> an array of UTF-16 characters to append. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_length]</span></td>
</tr>
<tr>
@@ -1013,15 +1024,15 @@ end of <em class="parameter"><code>text</code></em>
<div class="refsect2">
<a name="hb-buffer-add-utf8"></a><h3>hb_buffer_add_utf8 ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_add_utf8 (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+hb_buffer_add_utf8 (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code>const <span class="type">char</span> *text</code></em>,
<em class="parameter"><code><span class="type">int</span> text_length</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
<em class="parameter"><code><span class="type">int</span> item_length</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()"><code class="function">hb_buffer_add_codepoints()</code></a>.</p>
+<p>See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()"><code class="function">hb_buffer_add_codepoints()</code></a>.</p>
<p>Replaces invalid UTF-8 characters with the <em class="parameter"><code>buffer</code></em>
replacement code point,
-see <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()"><code class="function">hb_buffer_set_replacement_codepoint()</code></a>.</p>
+see <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()"><code class="function">hb_buffer_set_replacement_codepoint()</code></a>.</p>
<div class="refsect3">
<a name="hb-buffer-add-utf8.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1033,12 +1044,12 @@ see <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepo
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>text</p></td>
-<td class="parameter_description"><p>an array of UTF-8
+<td class="parameter_description"><p> an array of UTF-8
characters to append. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_length][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
</tr>
@@ -1071,12 +1082,12 @@ end of <em class="parameter"><code>text</code></em>
<div class="refsect2">
<a name="hb-buffer-add-latin1"></a><h3>hb_buffer_add_latin1 ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_add_latin1 (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+hb_buffer_add_latin1 (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code>const <span class="type">uint8_t</span> *text</code></em>,
<em class="parameter"><code><span class="type">int</span> text_length</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
<em class="parameter"><code><span class="type">int</span> item_length</code></em>);</pre>
-<p>Similar to <a class="link" href="harfbuzz-Buffers.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()"><code class="function">hb_buffer_add_codepoints()</code></a>, but allows only access to first 256
+<p>Similar to <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()"><code class="function">hb_buffer_add_codepoints()</code></a>, but allows only access to first 256
Unicode code points that can fit in 8-bit strings.</p>
<div class="note">Has nothing to do with non-Unicode Latin-1 encoding.</div>
<div class="refsect3">
@@ -1090,12 +1101,12 @@ Unicode code points that can fit in 8-bit strings.</p>
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>text</p></td>
-<td class="parameter_description"><p>an array of UTF-8
+<td class="parameter_description"><p> an array of UTF-8
characters to append. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_length][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
</tr>
@@ -1128,8 +1139,8 @@ end of <em class="parameter"><code>text</code></em>
<div class="refsect2">
<a name="hb-buffer-append"></a><h3>hb_buffer_append ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_append (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *source</code></em>,
+hb_buffer_append (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *source</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> start</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> end</code></em>);</pre>
<p>Append (part of) contents of another buffer to this buffer.</p>
@@ -1144,12 +1155,12 @@ hb_buffer_append (<em class="parameter"><code><a class="link" href="harfbuzz-Buf
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>source</p></td>
-<td class="parameter_description"><p>source <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>source <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
@@ -1171,8 +1182,8 @@ hb_buffer_append (<em class="parameter"><code><a class="link" href="harfbuzz-Buf
<div class="refsect2">
<a name="hb-buffer-set-content-type"></a><h3>hb_buffer_set_content_type ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_content_type (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t"><span class="type">hb_buffer_content_type_t</span></a> content_type</code></em>);</pre>
+hb_buffer_set_content_type (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t"><span class="type">hb_buffer_content_type_t</span></a> content_type</code></em>);</pre>
<p>Sets the type of <em class="parameter"><code>buffer</code></em>
contents, buffers are either empty, contain
characters (before shaping) or glyphs (the result of shaping).</p>
@@ -1187,7 +1198,7 @@ characters (before shaping) or glyphs (the result of shaping).</p>
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
@@ -1203,9 +1214,9 @@ characters (before shaping) or glyphs (the result of shaping).</p>
<hr>
<div class="refsect2">
<a name="hb-buffer-get-content-type"></a><h3>hb_buffer_get_content_type ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t"><span class="returnvalue">hb_buffer_content_type_t</span></a>
-hb_buffer_get_content_type (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>see <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-content-type" title="hb_buffer_set_content_type ()"><code class="function">hb_buffer_set_content_type()</code></a>.</p>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t"><span class="returnvalue">hb_buffer_content_type_t</span></a>
+hb_buffer_get_content_type (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<p>see <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-content-type" title="hb_buffer_set_content_type ()"><code class="function">hb_buffer_set_content_type()</code></a>.</p>
<div class="refsect3">
<a name="hb-buffer-get-content-type.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1216,7 +1227,7 @@ hb_buffer_get_content_type (<em class="parameter"><code><a class="link" href="ha
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -1232,7 +1243,7 @@ contents.</p>
<div class="refsect2">
<a name="hb-buffer-set-direction"></a><h3>hb_buffer_set_direction ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_direction (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+hb_buffer_set_direction (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> direction</code></em>);</pre>
<p>Set the text flow direction of the buffer. No shaping can happen without
setting <em class="parameter"><code>buffer</code></em>
@@ -1253,7 +1264,7 @@ direction.</p>
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
@@ -1271,8 +1282,8 @@ direction.</p>
<div class="refsect2">
<a name="hb-buffer-get-direction"></a><h3>hb_buffer_get_direction ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="returnvalue">hb_direction_t</span></a>
-hb_buffer_get_direction (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()"><code class="function">hb_buffer_set_direction()</code></a></p>
+hb_buffer_get_direction (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<p>See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()"><code class="function">hb_buffer_set_direction()</code></a></p>
<div class="refsect3">
<a name="hb-buffer-get-direction.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1283,7 +1294,7 @@ hb_buffer_get_direction (<em class="parameter"><code><a class="link" href="harfb
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -1299,7 +1310,7 @@ hb_buffer_get_direction (<em class="parameter"><code><a class="link" href="harfb
<div class="refsect2">
<a name="hb-buffer-set-script"></a><h3>hb_buffer_set_script ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_script (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+hb_buffer_set_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> script</code></em>);</pre>
<p>Sets the script of <em class="parameter"><code>buffer</code></em>
to <em class="parameter"><code>script</code></em>
@@ -1321,7 +1332,7 @@ corresponding script from an ISO 15924 script tag.</p>
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
@@ -1338,8 +1349,8 @@ corresponding script from an ISO 15924 script tag.</p>
<div class="refsect2">
<a name="hb-buffer-get-script"></a><h3>hb_buffer_get_script ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
-hb_buffer_get_script (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-script" title="hb_buffer_set_script ()"><code class="function">hb_buffer_set_script()</code></a>.</p>
+hb_buffer_get_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<p>See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-script" title="hb_buffer_set_script ()"><code class="function">hb_buffer_set_script()</code></a>.</p>
<div class="refsect3">
<a name="hb-buffer-get-script.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1350,7 +1361,7 @@ hb_buffer_get_script (<em class="parameter"><code><a class="link" href="harfbuzz
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -1366,7 +1377,7 @@ hb_buffer_get_script (<em class="parameter"><code><a class="link" href="harfbuzz
<div class="refsect2">
<a name="hb-buffer-set-language"></a><h3>hb_buffer_set_language ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_language (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+hb_buffer_set_language (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> language</code></em>);</pre>
<p>Sets the language of <em class="parameter"><code>buffer</code></em>
to <em class="parameter"><code>language</code></em>
@@ -1375,7 +1386,7 @@ hb_buffer_set_language (<em class="parameter"><code><a class="link" href="harfbu
buffer which can result in applying language-specific behaviour. Languages
are orthogonal to the scripts, and though they are related, they are
different concepts and should not be confused with each other.</p>
-<p>Use <a class="link" href="harfbuzz-hb-common.html#hb-language-from-string" title="hb_language_from_string ()"><code class="function">hb_language_from_string()</code></a> to convert from ISO 639 language codes to
+<p>Use <a class="link" href="harfbuzz-hb-common.html#hb-language-from-string" title="hb_language_from_string ()"><code class="function">hb_language_from_string()</code></a> to convert from BCP 47 language tags to
<a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a>.</p>
<div class="refsect3">
<a name="hb-buffer-set-language.parameters"></a><h4>Parameters</h4>
@@ -1388,7 +1399,7 @@ different concepts and should not be confused with each other.</p>
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
@@ -1405,8 +1416,8 @@ different concepts and should not be confused with each other.</p>
<div class="refsect2">
<a name="hb-buffer-get-language"></a><h3>hb_buffer_get_language ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="returnvalue">hb_language_t</span></a>
-hb_buffer_get_language (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-language" title="hb_buffer_set_language ()"><code class="function">hb_buffer_set_language()</code></a>.</p>
+hb_buffer_get_language (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<p>See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-language" title="hb_buffer_set_language ()"><code class="function">hb_buffer_set_language()</code></a>.</p>
<div class="refsect3">
<a name="hb-buffer-get-language.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1417,7 +1428,7 @@ hb_buffer_get_language (<em class="parameter"><code><a class="link" href="harfbu
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -1433,11 +1444,11 @@ hb_buffer_get_language (<em class="parameter"><code><a class="link" href="harfbu
<div class="refsect2">
<a name="hb-buffer-set-flags"></a><h3>hb_buffer_set_flags ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_flags (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="type">hb_buffer_flags_t</span></a> flags</code></em>);</pre>
+hb_buffer_set_flags (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="type">hb_buffer_flags_t</span></a> flags</code></em>);</pre>
<p>Sets <em class="parameter"><code>buffer</code></em>
flags to <em class="parameter"><code>flags</code></em>
-. See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="type">hb_buffer_flags_t</span></a>.</p>
+. See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="type">hb_buffer_flags_t</span></a>.</p>
<div class="refsect3">
<a name="hb-buffer-set-flags.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1449,7 +1460,7 @@ hb_buffer_set_flags (<em class="parameter"><code><a class="link" href="harfbuzz-
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
@@ -1465,9 +1476,9 @@ hb_buffer_set_flags (<em class="parameter"><code><a class="link" href="harfbuzz-
<hr>
<div class="refsect2">
<a name="hb-buffer-get-flags"></a><h3>hb_buffer_get_flags ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="returnvalue">hb_buffer_flags_t</span></a>
-hb_buffer_get_flags (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-flags" title="hb_buffer_set_flags ()"><code class="function">hb_buffer_set_flags()</code></a>.</p>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="returnvalue">hb_buffer_flags_t</span></a>
+hb_buffer_get_flags (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<p>See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-flags" title="hb_buffer_set_flags ()"><code class="function">hb_buffer_set_flags()</code></a>.</p>
<div class="refsect3">
<a name="hb-buffer-get-flags.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1478,7 +1489,7 @@ hb_buffer_get_flags (<em class="parameter"><code><a class="link" href="harfbuzz-
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -1494,8 +1505,8 @@ flags.</p>
<div class="refsect2">
<a name="hb-buffer-set-cluster-level"></a><h3>hb_buffer_set_cluster_level ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_cluster_level (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t"><span class="type">hb_buffer_cluster_level_t</span></a> cluster_level</code></em>);</pre>
+hb_buffer_set_cluster_level (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t"><span class="type">hb_buffer_cluster_level_t</span></a> cluster_level</code></em>);</pre>
<div class="refsect3">
<a name="hb-buffer-set-cluster-level.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1506,7 +1517,7 @@ hb_buffer_set_cluster_level (<em class="parameter"><code><a class="link" href="h
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -1516,8 +1527,8 @@ hb_buffer_set_cluster_level (<em class="parameter"><code><a class="link" href="h
<hr>
<div class="refsect2">
<a name="hb-buffer-get-cluster-level"></a><h3>hb_buffer_get_cluster_level ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t"><span class="returnvalue">hb_buffer_cluster_level_t</span></a>
-hb_buffer_get_cluster_level (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t"><span class="returnvalue">hb_buffer_cluster_level_t</span></a>
+hb_buffer_get_cluster_level (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
<div class="refsect3">
<a name="hb-buffer-get-cluster-level.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1528,7 +1539,7 @@ hb_buffer_get_cluster_level (<em class="parameter"><code><a class="link" href="h
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -1539,9 +1550,9 @@ hb_buffer_get_cluster_level (<em class="parameter"><code><a class="link" href="h
<div class="refsect2">
<a name="hb-buffer-set-length"></a><h3>hb_buffer_set_length ()</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_buffer_set_length (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+hb_buffer_set_length (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> length</code></em>);</pre>
-<p>Similar to <a class="link" href="harfbuzz-Buffers.html#hb-buffer-pre-allocate" title="hb_buffer_pre_allocate ()"><code class="function">hb_buffer_pre_allocate()</code></a>, but clears any new items added at the
+<p>Similar to <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-pre-allocate" title="hb_buffer_pre_allocate ()"><code class="function">hb_buffer_pre_allocate()</code></a>, but clears any new items added at the
end.</p>
<div class="refsect3">
<a name="hb-buffer-set-length.parameters"></a><h4>Parameters</h4>
@@ -1554,7 +1565,7 @@ end.</p>
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
@@ -1577,7 +1588,7 @@ memory allocation succeeded, <code class="literal">false</code> otherwise.</p>
<div class="refsect2">
<a name="hb-buffer-get-length"></a><h3>hb_buffer_get_length ()</h3>
<pre class="programlisting">unsigned <span class="returnvalue">int</span>
-hb_buffer_get_length (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+hb_buffer_get_length (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
<p>Returns the number of items in the buffer.</p>
<div class="refsect3">
<a name="hb-buffer-get-length.parameters"></a><h4>Parameters</h4>
@@ -1589,7 +1600,7 @@ hb_buffer_get_length (<em class="parameter"><code><a class="link" href="harfbuzz
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -1606,11 +1617,11 @@ The value valid as long as buffer has not been modified.</p>
<div class="refsect2">
<a name="hb-buffer-set-segment-properties"></a><h3>hb_buffer_set_segment_properties ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_segment_properties (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>);</pre>
+hb_buffer_set_segment_properties (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>);</pre>
<p>Sets the segment properties of the buffer, a shortcut for calling
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()"><code class="function">hb_buffer_set_direction()</code></a>, <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-script" title="hb_buffer_set_script ()"><code class="function">hb_buffer_set_script()</code></a> and
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-language" title="hb_buffer_set_language ()"><code class="function">hb_buffer_set_language()</code></a> individually.</p>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()"><code class="function">hb_buffer_set_direction()</code></a>, <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-script" title="hb_buffer_set_script ()"><code class="function">hb_buffer_set_script()</code></a> and
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-language" title="hb_buffer_set_language ()"><code class="function">hb_buffer_set_language()</code></a> individually.</p>
<div class="refsect3">
<a name="hb-buffer-set-segment-properties.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1622,12 +1633,12 @@ hb_buffer_set_segment_properties (<em class="parameter"><code><a class="link" hr
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>props</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> to use.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> to use.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
@@ -1639,10 +1650,10 @@ hb_buffer_set_segment_properties (<em class="parameter"><code><a class="link" hr
<div class="refsect2">
<a name="hb-buffer-get-segment-properties"></a><h3>hb_buffer_get_segment_properties ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_get_segment_properties (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>);</pre>
+hb_buffer_get_segment_properties (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>);</pre>
<p>Sets <em class="parameter"><code>props</code></em>
- to the <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> of <em class="parameter"><code>buffer</code></em>
+ to the <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> of <em class="parameter"><code>buffer</code></em>
.</p>
<div class="refsect3">
<a name="hb-buffer-get-segment-properties.parameters"></a><h4>Parameters</h4>
@@ -1655,12 +1666,12 @@ hb_buffer_get_segment_properties (<em class="parameter"><code><a class="link" hr
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>props</p></td>
-<td class="parameter_description"><p>the output <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a>. </p></td>
+<td class="parameter_description"><p> the output <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a>. </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>
@@ -1672,14 +1683,14 @@ hb_buffer_get_segment_properties (<em class="parameter"><code><a class="link" hr
<div class="refsect2">
<a name="hb-buffer-guess-segment-properties"></a><h3>hb_buffer_guess_segment_properties ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_guess_segment_properties (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+hb_buffer_guess_segment_properties (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
<p>Sets unset buffer segment properties based on buffer Unicode
contents. If buffer is not empty, it must have content type
-<a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-CONTENT-TYPE-UNICODE:CAPS"><code class="literal">HB_BUFFER_CONTENT_TYPE_UNICODE</code></a>.</p>
+<a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-CONTENT-TYPE-UNICODE:CAPS"><code class="literal">HB_BUFFER_CONTENT_TYPE_UNICODE</code></a>.</p>
<p>If buffer script is not set (ie. is <a class="link" href="harfbuzz-hb-common.html#HB-SCRIPT-INVALID:CAPS"><code class="literal">HB_SCRIPT_INVALID</code></a>), it
will be set to the Unicode script of the first character in
-the buffer that has a script other than <code class="literal">HB_SCRIPT_COMMON</code>,
-<code class="literal">HB_SCRIPT_INHERITED</code>, and <code class="literal">HB_SCRIPT_UNKNOWN</code>.</p>
+the buffer that has a script other than <a class="link" href="harfbuzz-hb-common.html#HB-SCRIPT-COMMON:CAPS"><code class="literal">HB_SCRIPT_COMMON</code></a>,
+<a class="link" href="harfbuzz-hb-common.html#HB-SCRIPT-INHERITED:CAPS"><code class="literal">HB_SCRIPT_INHERITED</code></a>, and <a class="link" href="harfbuzz-hb-common.html#HB-SCRIPT-UNKNOWN:CAPS"><code class="literal">HB_SCRIPT_UNKNOWN</code></a>.</p>
<p>Next, if buffer direction is not set (ie. is <a class="link" href="harfbuzz-hb-common.html#HB-DIRECTION-INVALID:CAPS"><code class="literal">HB_DIRECTION_INVALID</code></a>),
it will be set to the natural horizontal direction of the
buffer script as returned by <a class="link" href="harfbuzz-hb-common.html#hb-script-get-horizontal-direction" title="hb_script_get_horizontal_direction ()"><code class="function">hb_script_get_horizontal_direction()</code></a>.
@@ -1688,7 +1699,9 @@ then <a class="link" href="harfbuzz-hb-common.html#HB-DIRECTION-LTR:CAPS"><code
<p>Finally, if buffer language is not set (ie. is <a class="link" href="harfbuzz-hb-common.html#HB-LANGUAGE-INVALID:CAPS" title="HB_LANGUAGE_INVALID"><code class="literal">HB_LANGUAGE_INVALID</code></a>),
it will be set to the process's default language as returned by
<a class="link" href="harfbuzz-hb-common.html#hb-language-get-default" title="hb_language_get_default ()"><code class="function">hb_language_get_default()</code></a>. This may change in the future by
-taking buffer script into consideration when choosing a language.</p>
+taking buffer script into consideration when choosing a language.
+Note that <a class="link" href="harfbuzz-hb-common.html#hb-language-get-default" title="hb_language_get_default ()"><code class="function">hb_language_get_default()</code></a> is NOT threadsafe the first time
+it is called. See documentation for that function for details.</p>
<div class="refsect3">
<a name="hb-buffer-guess-segment-properties.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1699,7 +1712,7 @@ taking buffer script into consideration when choosing a language.</p>
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -1710,7 +1723,7 @@ taking buffer script into consideration when choosing a language.</p>
<div class="refsect2">
<a name="hb-buffer-set-unicode-funcs"></a><h3>hb_buffer_set_unicode_funcs ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_unicode_funcs (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+hb_buffer_set_unicode_funcs (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *unicode_funcs</code></em>);</pre>
<div class="refsect3">
<a name="hb-buffer-set-unicode-funcs.parameters"></a><h4>Parameters</h4>
@@ -1722,7 +1735,7 @@ hb_buffer_set_unicode_funcs (<em class="parameter"><code><a class="link" href="h
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -1733,7 +1746,7 @@ hb_buffer_set_unicode_funcs (<em class="parameter"><code><a class="link" href="h
<div class="refsect2">
<a name="hb-buffer-get-unicode-funcs"></a><h3>hb_buffer_get_unicode_funcs ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="returnvalue">hb_unicode_funcs_t</span></a> *
-hb_buffer_get_unicode_funcs (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+hb_buffer_get_unicode_funcs (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
<div class="refsect3">
<a name="hb-buffer-get-unicode-funcs.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1744,7 +1757,7 @@ hb_buffer_get_unicode_funcs (<em class="parameter"><code><a class="link" href="h
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -1755,7 +1768,7 @@ hb_buffer_get_unicode_funcs (<em class="parameter"><code><a class="link" href="h
<div class="refsect2">
<a name="hb-buffer-set-user-data"></a><h3>hb_buffer_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_buffer_set_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+hb_buffer_set_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#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>,
@@ -1771,7 +1784,7 @@ hb_buffer_set_user_data (<em class="parameter"><code><a class="link" href="harfb
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -1782,7 +1795,7 @@ hb_buffer_set_user_data (<em class="parameter"><code><a class="link" href="harfb
<div class="refsect2">
<a name="hb-buffer-get-user-data"></a><h3>hb_buffer_get_user_data ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span> *
-hb_buffer_get_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+hb_buffer_get_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>);</pre>
<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">
@@ -1795,7 +1808,7 @@ hb_buffer_get_user_data (<em class="parameter"><code><a class="link" href="harfb
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -1805,8 +1818,8 @@ hb_buffer_get_user_data (<em class="parameter"><code><a class="link" href="harfb
<hr>
<div class="refsect2">
<a name="hb-buffer-get-glyph-infos"></a><h3>hb_buffer_get_glyph_infos ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t"><span class="returnvalue">hb_glyph_info_t</span></a> *
-hb_buffer_get_glyph_infos (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+<pre class="programlisting"><span class="returnvalue">hb_glyph_info_t</span> *
+hb_buffer_get_glyph_infos (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *length</code></em>);</pre>
<p>Returns <em class="parameter"><code>buffer</code></em>
glyph information array. Returned pointer
@@ -1823,12 +1836,12 @@ is valid as long as <em class="parameter"><code>buffer</code></em>
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>length</p></td>
-<td class="parameter_description"><p>output array length. </p></td>
+<td class="parameter_description"><p> output array length. </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>
@@ -1846,8 +1859,8 @@ The value valid as long as buffer has not been modified. </p>
<hr>
<div class="refsect2">
<a name="hb-buffer-get-glyph-positions"></a><h3>hb_buffer_get_glyph_positions ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-glyph-position-t"><span class="returnvalue">hb_glyph_position_t</span></a> *
-hb_buffer_get_glyph_positions (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t"><span class="returnvalue">hb_glyph_position_t</span></a> *
+hb_buffer_get_glyph_positions (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *length</code></em>);</pre>
<p>Returns <em class="parameter"><code>buffer</code></em>
glyph position array. Returned pointer
@@ -1864,12 +1877,12 @@ is valid as long as <em class="parameter"><code>buffer</code></em>
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>length</p></td>
-<td class="parameter_description"><p>output length. </p></td>
+<td class="parameter_description"><p> output length. </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>
@@ -1886,14 +1899,76 @@ The value valid as long as buffer has not been modified. </p>
</div>
<hr>
<div class="refsect2">
+<a name="hb-buffer-get-invisible-glyph"></a><h3>hb_buffer_get_invisible_glyph ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="returnvalue">hb_codepoint_t</span></a>
+hb_buffer_get_invisible_glyph (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<p>See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-invisible-glyph" title="hb_buffer_set_invisible_glyph ()"><code class="function">hb_buffer_set_invisible_glyph()</code></a>.</p>
+<div class="refsect3">
+<a name="hb-buffer-get-invisible-glyph.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>buffer</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-buffer-get-invisible-glyph.returns"></a><h4>Returns</h4>
+<p>The <em class="parameter"><code>buffer</code></em>
+invisible <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a>.</p>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-buffer-set-invisible-glyph"></a><h3>hb_buffer_set_invisible_glyph ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_buffer_set_invisible_glyph (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> invisible</code></em>);</pre>
+<p>Sets the <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> that replaces invisible characters in
+the shaping result. If set to zero (default), the glyph for the
+U+0020 SPACE character is used. Otherwise, this value is used
+verbatim.</p>
+<div class="refsect3">
+<a name="hb-buffer-set-invisible-glyph.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>buffer</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>invisible</p></td>
+<td class="parameter_description"><p>the invisible <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
<a name="hb-buffer-set-replacement-codepoint"></a><h3>hb_buffer_set_replacement_codepoint ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_replacement_codepoint (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+hb_buffer_set_replacement_codepoint (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> replacement</code></em>);</pre>
<p>Sets the <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> that replaces invalid entries for a given encoding
when adding text to <em class="parameter"><code>buffer</code></em>
.</p>
-<p>Default is <a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS" title="HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT"><code class="literal">HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT</code></a>.</p>
+<p>Default is <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS" title="HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT"><code class="literal">HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT</code></a>.</p>
<div class="refsect3">
<a name="hb-buffer-set-replacement-codepoint.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1905,7 +1980,7 @@ when adding text to <em class="parameter"><code>buffer</code></em>
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
@@ -1922,8 +1997,8 @@ when adding text to <em class="parameter"><code>buffer</code></em>
<div class="refsect2">
<a name="hb-buffer-get-replacement-codepoint"></a><h3>hb_buffer_get_replacement_codepoint ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="returnvalue">hb_codepoint_t</span></a>
-hb_buffer_get_replacement_codepoint (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()"><code class="function">hb_buffer_set_replacement_codepoint()</code></a>.</p>
+hb_buffer_get_replacement_codepoint (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+<p>See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()"><code class="function">hb_buffer_set_replacement_codepoint()</code></a>.</p>
<div class="refsect3">
<a name="hb-buffer-get-replacement-codepoint.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1934,7 +2009,7 @@ hb_buffer_get_replacement_codepoint (<em class="parameter"><code><a class="link"
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -1950,7 +2025,7 @@ replacement <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title=
<div class="refsect2">
<a name="hb-buffer-normalize-glyphs"></a><h3>hb_buffer_normalize_glyphs ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_normalize_glyphs (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+hb_buffer_normalize_glyphs (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
<p>Reorders a glyph buffer to have canonical in-cluster glyph order / position.
The resulting clusters should behave identical to pre-reordering clusters.</p>
<div class="note">This has nothing to do with Unicode normalization.</div>
@@ -1964,7 +2039,7 @@ The resulting clusters should behave identical to pre-reordering clusters.</p>
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -1975,7 +2050,7 @@ The resulting clusters should behave identical to pre-reordering clusters.</p>
<div class="refsect2">
<a name="hb-buffer-reverse"></a><h3>hb_buffer_reverse ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_reverse (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+hb_buffer_reverse (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
<p>Reverses buffer contents.</p>
<div class="refsect3">
<a name="hb-buffer-reverse.parameters"></a><h4>Parameters</h4>
@@ -1987,7 +2062,7 @@ hb_buffer_reverse (<em class="parameter"><code><a class="link" href="harfbuzz-Bu
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -1998,7 +2073,7 @@ hb_buffer_reverse (<em class="parameter"><code><a class="link" href="harfbuzz-Bu
<div class="refsect2">
<a name="hb-buffer-reverse-range"></a><h3>hb_buffer_reverse_range ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_reverse_range (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+hb_buffer_reverse_range (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> start</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> end</code></em>);</pre>
<p>Reverses buffer contents between start to end.</p>
@@ -2013,7 +2088,7 @@ hb_buffer_reverse_range (<em class="parameter"><code><a class="link" href="harfb
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
@@ -2035,7 +2110,7 @@ hb_buffer_reverse_range (<em class="parameter"><code><a class="link" href="harfb
<div class="refsect2">
<a name="hb-buffer-reverse-clusters"></a><h3>hb_buffer_reverse_clusters ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_reverse_clusters (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
+hb_buffer_reverse_clusters (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
<p>Reverses buffer clusters. That is, the buffer contents are
reversed, then each cluster (consecutive items having the
same cluster number) are reversed again.</p>
@@ -2049,7 +2124,7 @@ same cluster number) are reversed again.</p>
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -2060,21 +2135,21 @@ same cluster number) are reversed again.</p>
<div class="refsect2">
<a name="hb-buffer-serialize-glyphs"></a><h3>hb_buffer_serialize_glyphs ()</h3>
<pre class="programlisting">unsigned <span class="returnvalue">int</span>
-hb_buffer_serialize_glyphs (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+hb_buffer_serialize_glyphs (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> start</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> end</code></em>,
<em class="parameter"><code><span class="type">char</span> *buf</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> buf_size</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *buf_consumed</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> format</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t"><span class="type">hb_buffer_serialize_flags_t</span></a> flags</code></em>);</pre>
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> format</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t"><span class="type">hb_buffer_serialize_flags_t</span></a> flags</code></em>);</pre>
<p>Serializes <em class="parameter"><code>buffer</code></em>
into a textual representation of its glyph content,
useful for showing the contents of the buffer, for example during debugging.
There are currently two supported serialization formats:</p>
<div class="refsect3">
-<a name="id-1.3.3.5.12.46.5"></a><h4>text</h4>
+<a name="id-1.3.4.3.11.48.5"></a><h4>text</h4>
<p>A human-readable, plain text format.
The serialized glyphs will look something like:</p>
<p><code class="literal">
@@ -2085,25 +2160,25 @@ The serialized glyphs will look something like:</p>
<li class="listitem"><p>Glyphs are separated with <code class="literal">|</code></p></li>
<li class="listitem">
<p>Each glyph starts with glyph name, or glyph index if
-<a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-NO-GLYPH-NAMES:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES</span></a> flag is set. Then,</p>
+<a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-NO-GLYPH-NAMES:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES</span></a> flag is set. Then,</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
-<li class="listitem"><p>If <a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-NO-CLUSTERS:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS</span></a> is not set, <code class="literal">=</code> then <span class="type">hb_glyph_info_t.cluster</span>.</p></li>
+<li class="listitem"><p>If <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-NO-CLUSTERS:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS</span></a> is not set, <code class="literal">=</code> then <span class="type">hb_glyph_info_t.cluster</span>.</p></li>
<li class="listitem">
-<p>If <a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-NO-POSITIONS:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS</span></a> is not set, the <a class="link" href="harfbuzz-Buffers.html#hb-glyph-position-t"><span class="type">hb_glyph_position_t</span></a> in the format:</p>
+<p>If <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-NO-POSITIONS:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS</span></a> is not set, the <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t"><span class="type">hb_glyph_position_t</span></a> in the format:</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; ">
<li class="listitem"><p>If both <span class="type">hb_glyph_position_t.x_offset</span> and <span class="type">hb_glyph_position_t.y_offset</span> are not 0, <code class="literal">@x_offset,y_offset</code>. Then,</p></li>
<li class="listitem"><p><code class="literal">+x_advance</code>, then <code class="literal">,y_advance</code> if <span class="type">hb_glyph_position_t.y_advance</span> is not 0. Then,</p></li>
</ul></div>
</li>
-<li class="listitem"><p>If <a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-GLYPH-EXTENTS:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS</span></a> is set, the
+<li class="listitem"><p>If <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-GLYPH-EXTENTS:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS</span></a> is set, the
<span class="type">hb_glyph_extents_t</span> in the format
-<code class="literal">&amp;lt;x_bearing,y_bearing,width,height&amp;gt;</code></p></li>
+<code class="literal">&lt;x_bearing,y_bearing,width,height&gt;</code></p></li>
</ul></div>
</li>
</ul></div>
</div>
<div class="refsect3">
-<a name="id-1.3.3.5.12.46.6"></a><h4>json</h4>
+<a name="id-1.3.4.3.11.48.6"></a><h4>json</h4>
<p>TODO.</p>
</div>
<div class="refsect3">
@@ -2117,7 +2192,7 @@ The serialized glyphs will look something like:</p>
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> buffer.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> buffer.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
@@ -2134,7 +2209,7 @@ to serialize.</p></td>
</tr>
<tr>
<td class="parameter_name"><p>buf</p></td>
-<td class="parameter_description"><p>output string to
+<td class="parameter_description"><p> output string to
write serialized buffer into. </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>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=buf_size][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
</tr>
@@ -2146,24 +2221,24 @@ write serialized buffer into. </p></td>
</tr>
<tr>
<td class="parameter_name"><p>buf_consumed</p></td>
-<td class="parameter_description"><p>if not <code class="literal">NULL</code>, will be set to the number of byes written into <em class="parameter"><code>buf</code></em>
+<td class="parameter_description"><p> if not <code class="literal">NULL</code>, will be set to the number of byes written into <em class="parameter"><code>buf</code></em>
. </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>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>font</p></td>
-<td class="parameter_description"><p>the <a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> used to shape this buffer, needed to
+<td class="parameter_description"><p> the <a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> used to shape this buffer, needed to
read glyph names and extents. If <code class="literal">NULL</code>, and empty font will be used. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>format</p></td>
-<td class="parameter_description"><p>the <a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> to use for formatting the output.</p></td>
+<td class="parameter_description"><p>the <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> to use for formatting the output.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>flags</p></td>
-<td class="parameter_description"><p>the <a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t"><span class="type">hb_buffer_serialize_flags_t</span></a> that control what glyph properties
+<td class="parameter_description"><p>the <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t"><span class="type">hb_buffer_serialize_flags_t</span></a> that control what glyph properties
to serialize.</p></td>
<td class="parameter_annotations"> </td>
</tr>
@@ -2180,12 +2255,12 @@ to serialize.</p></td>
<div class="refsect2">
<a name="hb-buffer-deserialize-glyphs"></a><h3>hb_buffer_deserialize_glyphs ()</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_buffer_deserialize_glyphs (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+hb_buffer_deserialize_glyphs (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code>const <span class="type">char</span> *buf</code></em>,
<em class="parameter"><code><span class="type">int</span> buf_len</code></em>,
<em class="parameter"><code>const <span class="type">char</span> **end_ptr</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> format</code></em>);</pre>
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> format</code></em>);</pre>
<div class="refsect3">
<a name="hb-buffer-deserialize-glyphs.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2197,7 +2272,7 @@ hb_buffer_deserialize_glyphs (<em class="parameter"><code><a class="link" href="
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> buffer.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> buffer.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
@@ -2218,14 +2293,14 @@ hb_buffer_deserialize_glyphs (<em class="parameter"><code><a class="link" href="
<hr>
<div class="refsect2">
<a name="hb-buffer-serialize-format-from-string"></a><h3>hb_buffer_serialize_format_from_string ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="returnvalue">hb_buffer_serialize_format_t</span></a>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="returnvalue">hb_buffer_serialize_format_t</span></a>
hb_buffer_serialize_format_from_string
(<em class="parameter"><code>const <span class="type">char</span> *str</code></em>,
<em class="parameter"><code><span class="type">int</span> len</code></em>);</pre>
-<p>Parses a string into an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a>. Does not check if
+<p>Parses a string into an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a>. Does not check if
<em class="parameter"><code>str</code></em>
is a valid buffer serialization format, use
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-list-formats" title="hb_buffer_serialize_list_formats ()"><code class="function">hb_buffer_serialize_list_formats()</code></a> to get the list of supported formats.</p>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-list-formats" title="hb_buffer_serialize_list_formats ()"><code class="function">hb_buffer_serialize_list_formats()</code></a> to get the list of supported formats.</p>
<div class="refsect3">
<a name="hb-buffer-serialize-format-from-string.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2237,7 +2312,7 @@ hb_buffer_serialize_format_from_string
<tbody>
<tr>
<td class="parameter_name"><p>str</p></td>
-<td class="parameter_description"><p>a string to parse. </p></td>
+<td class="parameter_description"><p> a string to parse. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
</tr>
<tr>
@@ -2251,7 +2326,7 @@ hb_buffer_serialize_format_from_string
</div>
<div class="refsect3">
<a name="hb-buffer-serialize-format-from-string.returns"></a><h4>Returns</h4>
-<p>The parsed <a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a>.</p>
+<p>The parsed <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a>.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
</div>
@@ -2259,10 +2334,10 @@ hb_buffer_serialize_format_from_string
<div class="refsect2">
<a name="hb-buffer-serialize-format-to-string"></a><h3>hb_buffer_serialize_format_to_string ()</h3>
<pre class="programlisting">const <span class="returnvalue">char</span> *
-hb_buffer_serialize_format_to_string (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> format</code></em>);</pre>
+hb_buffer_serialize_format_to_string (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> format</code></em>);</pre>
<p>Converts <em class="parameter"><code>format</code></em>
to the string corresponding it, or <code class="literal">NULL</code> if it is not a valid
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a>.</p>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a>.</p>
<div class="refsect3">
<a name="hb-buffer-serialize-format-to-string.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2273,7 +2348,7 @@ hb_buffer_serialize_format_to_string (<em class="parameter"><code><a class="link
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>format</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> to convert.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> to convert.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -2303,9 +2378,9 @@ hb_buffer_serialize_list_formats (<em class="parameter"><code><span class="type"
<div class="refsect2">
<a name="hb-segment-properties-equal"></a><h3>hb_segment_properties_equal ()</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_segment_properties_equal (<em class="parameter"><code>const <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *a</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *b</code></em>);</pre>
-<p>Checks the equality of two <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a>'s.</p>
+hb_segment_properties_equal (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *a</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *b</code></em>);</pre>
+<p>Checks the equality of two <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a>'s.</p>
<div class="refsect3">
<a name="hb-segment-properties-equal.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2317,12 +2392,12 @@ hb_segment_properties_equal (<em class="parameter"><code>const <a class="link" h
<tbody>
<tr>
<td class="parameter_name"><p>a</p></td>
-<td class="parameter_description"><p>first <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> to compare.</p></td>
+<td class="parameter_description"><p>first <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> to compare.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>b</p></td>
-<td class="parameter_description"><p>second <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> to compare.</p></td>
+<td class="parameter_description"><p>second <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> to compare.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
@@ -2340,7 +2415,7 @@ equal those of <em class="parameter"><code>b</code></em>
<div class="refsect2">
<a name="hb-segment-properties-hash"></a><h3>hb_segment_properties_hash ()</h3>
<pre class="programlisting">unsigned <span class="returnvalue">int</span>
-hb_segment_properties_hash (<em class="parameter"><code>const <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *p</code></em>);</pre>
+hb_segment_properties_hash (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *p</code></em>);</pre>
<p>Creates a hash representing <em class="parameter"><code>p</code></em>
.</p>
<div class="refsect3">
@@ -2353,7 +2428,7 @@ hb_segment_properties_hash (<em class="parameter"><code>const <a class="link" hr
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>p</p></td>
-<td class="parameter_description"><p><a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> to hash.</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> to hash.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
@@ -2368,22 +2443,54 @@ hb_segment_properties_hash (<em class="parameter"><code>const <a class="link" hr
<hr>
<div class="refsect2">
<a name="hb-buffer-diff"></a><h3>hb_buffer_diff ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-buffer-diff-flags-t" title="enum hb_buffer_diff_flags_t"><span class="returnvalue">hb_buffer_diff_flags_t</span></a>
-hb_buffer_diff (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *reference</code></em>,
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-diff-flags-t" title="enum hb_buffer_diff_flags_t"><span class="returnvalue">hb_buffer_diff_flags_t</span></a>
+hb_buffer_diff (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *reference</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> dottedcircle_glyph</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> position_fuzz</code></em>);</pre>
-<p>If dottedcircle_glyph is (hb_codepoint_t) -1 then <a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-DIFF-FLAG-DOTTED-CIRCLE-PRESENT:CAPS"><code class="literal">HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT</code></a>
-and <a class="link" href="harfbuzz-Buffers.html#HB-BUFFER-DIFF-FLAG-NOTDEF-PRESENT:CAPS"><code class="literal">HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT</code></a> are never returned. This should be used by most
+<p>If dottedcircle_glyph is (hb_codepoint_t) -1 then <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-DIFF-FLAG-DOTTED-CIRCLE-PRESENT:CAPS"><code class="literal">HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT</code></a>
+and <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-DIFF-FLAG-NOTDEF-PRESENT:CAPS"><code class="literal">HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT</code></a> are never returned. This should be used by most
callers if just comparing two buffers is needed.</p>
+<div class="refsect3">
+<a name="hb-buffer-diff.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>buffer</p></td>
+<td class="parameter_description"><p>a buffer.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>reference</p></td>
+<td class="parameter_description"><p>other buffer to compare to.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>dottedcircle_glyph</p></td>
+<td class="parameter_description"><p>glyph id of U+25CC DOTTED CIRCLE, or (hb_codepont_t) -1.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>position_fuzz</p></td>
+<td class="parameter_description"><p>allowed absolute difference in position values.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
<p class="since">Since: <a class="link" href="api-index-1-5-0.html#api-index-1.5.0">1.5.0</a></p>
</div>
<hr>
<div class="refsect2">
<a name="hb-buffer-set-message-func"></a><h3>hb_buffer_set_message_func ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_buffer_set_message_func (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-message-func-t" title="hb_buffer_message_func_t ()"><span class="type">hb_buffer_message_func_t</span></a> func</code></em>,
+hb_buffer_set_message_func (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-message-func-t" title="hb_buffer_message_func_t ()"><span class="type">hb_buffer_message_func_t</span></a> func</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>
<div class="refsect3">
@@ -2397,7 +2504,7 @@ hb_buffer_set_message_func (<em class="parameter"><code><a class="link" href="ha
<tbody>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
@@ -2413,9 +2520,9 @@ hb_buffer_set_message_func (<em class="parameter"><code><a class="link" href="ha
<hr>
<div class="refsect2">
<a name="hb-glyph-info-get-glyph-flags"></a><h3>hb_glyph_info_get_glyph_flags ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-Buffers.html#hb-glyph-flags-t" title="enum hb_glyph_flags_t"><span class="returnvalue">hb_glyph_flags_t</span></a>
-hb_glyph_info_get_glyph_flags (<em class="parameter"><code>const <a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t"><span class="type">hb_glyph_info_t</span></a> *info</code></em>);</pre>
-<p>Returns glyph flags encoded within a <a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t"><span class="type">hb_glyph_info_t</span></a>.</p>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-flags-t" title="enum hb_glyph_flags_t"><span class="returnvalue">hb_glyph_flags_t</span></a>
+hb_glyph_info_get_glyph_flags (<em class="parameter"><code>const <span class="type">hb_glyph_info_t</span> *info</code></em>);</pre>
+<p>Returns glyph flags encoded within a <span class="type">hb_glyph_info_t</span>.</p>
<div class="refsect3">
<a name="hb-glyph-info-get-glyph-flags.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2426,14 +2533,14 @@ hb_glyph_info_get_glyph_flags (<em class="parameter"><code>const <a class="link"
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t"><span class="type">hb_glyph_info_t</span></a>.</p></td>
+<td class="parameter_description"><p>a <span class="type">hb_glyph_info_t</span>.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="hb-glyph-info-get-glyph-flags.returns"></a><h4>Returns</h4>
-<p>The <a class="link" href="harfbuzz-Buffers.html#hb-glyph-flags-t" title="enum hb_glyph_flags_t"><span class="type">hb_glyph_flags_t</span></a> encoded within <em class="parameter"><code>info</code></em>
+<p>The <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-flags-t" title="enum hb_glyph_flags_t"><span class="type">hb_glyph_flags_t</span></a> encoded within <em class="parameter"><code>info</code></em>
.</p>
</div>
<p class="since">Since: <a class="link" href="api-index-1-5-0.html#api-index-1.5.0">1.5.0</a></p>
@@ -2442,14 +2549,14 @@ hb_glyph_info_get_glyph_flags (<em class="parameter"><code>const <a class="link"
<div class="refsect2">
<a name="hb-buffer-message-func-t"></a><h3>hb_buffer_message_func_t ()</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>
-<span class="c_punctuation">(</span>*hb_buffer_message_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+<span class="c_punctuation">(</span>*hb_buffer_message_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
<em class="parameter"><code>const <span class="type">char</span> *message</code></em>,
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
</div>
</div>
<div class="refsect1">
-<a name="harfbuzz-Buffers.other_details"></a><h2>Types and Values</h2>
+<a name="harfbuzz-hb-buffer.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="HB-SEGMENT-PROPERTIES-DEFAULT:CAPS"></a><h3>HB_SEGMENT_PROPERTIES_DEFAULT</h3>
<pre class="programlisting">#define HB_SEGMENT_PROPERTIES_DEFAULT</pre>
@@ -2473,57 +2580,6 @@ and output glyphs and their information after shaping.</p>
</div>
<hr>
<div class="refsect2">
-<a name="hb-glyph-info-t-struct"></a><h3>hb_glyph_info_t</h3>
-<pre class="programlisting">typedef struct {
- hb_codepoint_t codepoint;
- hb_mask_t mask; /* Holds hb_glyph_flags_t after hb_shape(), plus other things. */
- uint32_t cluster;
-} hb_glyph_info_t;
-</pre>
-<p>The <a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t"><span class="type">hb_glyph_info_t</span></a> is the structure that holds information about the
-glyphs and their relation to input text.</p>
-<div class="refsect3">
-<a name="hb-glyph-info-t.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> <em class="structfield"><code><a name="hb-glyph-info-t-struct.codepoint"></a>codepoint</code></em>;</p></td>
-<td class="struct_member_description"><p>either a Unicode code point (before shaping) or a glyph index
-(after shaping).</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-mask-t" title="hb_mask_t"><span class="type">hb_mask_t</span></a> <em class="structfield"><code><a name="hb-glyph-info-t-struct.mask"></a>mask</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><span class="type">uint32_t</span> <em class="structfield"><code><a name="hb-glyph-info-t-struct.cluster"></a>cluster</code></em>;</p></td>
-<td class="struct_member_description"><p>the index of the character in the original text that corresponds
-to this <a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t"><span class="type">hb_glyph_info_t</span></a>, or whatever the client passes to
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-add" title="hb_buffer_add ()"><code class="function">hb_buffer_add()</code></a>. More than one <a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t"><span class="type">hb_glyph_info_t</span></a> can have the same
-<em class="parameter"><code>cluster</code></em>
-value, if they resulted from the same character (e.g. one
-to many glyph substitution), and when more than one character gets
-merged in the same glyph (e.g. many to one glyph substitution) the
-<a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t"><span class="type">hb_glyph_info_t</span></a> will have the smallest cluster value of them.
-By default some characters are merged into the same cluster
-(e.g. combining marks have the same cluster as their bases)
-even if they are separate glyphs, <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-cluster-level" title="hb_buffer_set_cluster_level ()"><code class="function">hb_buffer_set_cluster_level()</code></a>
-allow selecting more fine-grained cluster handling.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
<a name="hb-glyph-flags-t"></a><h3>enum hb_glyph_flags_t</h3>
<div class="refsect3">
<a name="hb-glyph-flags-t.members"></a><h4>Members</h4>
@@ -2557,12 +2613,15 @@ allow selecting more fine-grained cluster handling.</p></td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-GLYPH-FLAG-DEFINED:CAPS"></a>HB_GLYPH_FLAG_DEFINED</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description">
+<p>All the currently defined flags.</p>
+</td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
+<p class="since">Since: <a class="link" href="api-index-1-5-0.html#api-index-1.5.0">1.5.0</a></p>
</div>
<hr>
<div class="refsect2">
@@ -2574,9 +2633,9 @@ allow selecting more fine-grained cluster handling.</p></td>
hb_position_t y_offset;
} hb_glyph_position_t;
</pre>
-<p>The <a class="link" href="harfbuzz-Buffers.html#hb-glyph-position-t"><span class="type">hb_glyph_position_t</span></a> is the structure that holds the positions of the
+<p>The <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t"><span class="type">hb_glyph_position_t</span></a> is the structure that holds the positions of the
glyph in both horizontal and vertical directions. All positions in
-<a class="link" href="harfbuzz-Buffers.html#hb-glyph-position-t"><span class="type">hb_glyph_position_t</span></a> are relative to the current point.</p>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t"><span class="type">hb_glyph_position_t</span></a> are relative to the current point.</p>
<div class="refsect3">
<a name="hb-glyph-position-t.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2735,27 +2794,39 @@ should not affect how much the line advances.</p></td>
<tbody>
<tr>
<td class="enum_member_name"><p><a name="HB-BUFFER-CLUSTER-LEVEL-MONOTONE-GRAPHEMES:CAPS"></a>HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description">
+<p>Return cluster values grouped by graphemes into
+ monotone order.</p>
+</td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-BUFFER-CLUSTER-LEVEL-MONOTONE-CHARACTERS:CAPS"></a>HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description">
+<p>Return cluster values grouped into monotone order.</p>
+</td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-BUFFER-CLUSTER-LEVEL-CHARACTERS:CAPS"></a>HB_BUFFER_CLUSTER_LEVEL_CHARACTERS</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description">
+<p>Don't group cluster values.</p>
+</td>
+<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="HB-BUFFER-CLUSTER-LEVEL-DEFAULT:CAPS"></a>HB_BUFFER_CLUSTER_LEVEL_DEFAULT</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description">
+<p>Default cluster level,
+ equal to <em class="parameter"><code>HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES</code></em>
+.</p>
+</td>
+<td class="enum_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
+<p class="since">Since: <a class="link" href="api-index-0-9-42.html#api-index-0.9.42">0.9.42</a></p>
</div>
<hr>
<div class="refsect2">
@@ -2766,9 +2837,9 @@ should not affect how much the line advances.</p></td>
hb_language_t language;
} hb_segment_properties_t;
</pre>
-<p>The structure that holds various text properties of an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>. Can be
-set and retrieved using <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-segment-properties" title="hb_buffer_set_segment_properties ()"><code class="function">hb_buffer_set_segment_properties()</code></a> and
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-get-segment-properties" title="hb_buffer_get_segment_properties ()"><code class="function">hb_buffer_get_segment_properties()</code></a>, respectively.</p>
+<p>The structure that holds various text properties of an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a>. Can be
+set and retrieved using <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-segment-properties" title="hb_buffer_set_segment_properties ()"><code class="function">hb_buffer_set_segment_properties()</code></a> and
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-segment-properties" title="hb_buffer_get_segment_properties ()"><code class="function">hb_buffer_get_segment_properties()</code></a>, respectively.</p>
<div class="refsect3">
<a name="hb-segment-properties-t.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2780,17 +2851,17 @@ set and retrieved using <a class="link" href="harfbuzz-Buffers.html#hb-buffer-se
<tbody>
<tr>
<td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> <em class="structfield"><code><a name="hb-segment-properties-t-struct.direction"></a>direction</code></em>;</p></td>
-<td class="struct_member_description"><p>the <a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> of the buffer, see <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()"><code class="function">hb_buffer_set_direction()</code></a>.</p></td>
+<td class="struct_member_description"><p>the <a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> of the buffer, see <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()"><code class="function">hb_buffer_set_direction()</code></a>.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> <em class="structfield"><code><a name="hb-segment-properties-t-struct.script"></a>script</code></em>;</p></td>
-<td class="struct_member_description"><p>the <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> of the buffer, see <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-script" title="hb_buffer_set_script ()"><code class="function">hb_buffer_set_script()</code></a>.</p></td>
+<td class="struct_member_description"><p>the <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> of the buffer, see <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-script" title="hb_buffer_set_script ()"><code class="function">hb_buffer_set_script()</code></a>.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> <em class="structfield"><code><a name="hb-segment-properties-t-struct.language"></a>language</code></em>;</p></td>
-<td class="struct_member_description"><p>the <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> of the buffer, see <a class="link" href="harfbuzz-Buffers.html#hb-buffer-set-language" title="hb_buffer_set_language ()"><code class="function">hb_buffer_set_language()</code></a>.</p></td>
+<td class="struct_member_description"><p>the <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> of the buffer, see <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-language" title="hb_buffer_set_language ()"><code class="function">hb_buffer_set_language()</code></a>.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
</tbody>
@@ -2801,7 +2872,7 @@ set and retrieved using <a class="link" href="harfbuzz-Buffers.html#hb-buffer-se
<div class="refsect2">
<a name="hb-buffer-serialize-format-t"></a><h3>enum hb_buffer_serialize_format_t</h3>
<p>The buffer serialization and de-serialization format used in
-<a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()"><code class="function">hb_buffer_serialize_glyphs()</code></a> and <a class="link" href="harfbuzz-Buffers.html#hb-buffer-deserialize-glyphs" title="hb_buffer_deserialize_glyphs ()"><code class="function">hb_buffer_deserialize_glyphs()</code></a>.</p>
+<a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()"><code class="function">hb_buffer_serialize_glyphs()</code></a> and <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-deserialize-glyphs" title="hb_buffer_deserialize_glyphs ()"><code class="function">hb_buffer_deserialize_glyphs()</code></a>.</p>
<div class="refsect3">
<a name="hb-buffer-serialize-format-t.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2840,7 +2911,7 @@ set and retrieved using <a class="link" href="harfbuzz-Buffers.html#hb-buffer-se
<hr>
<div class="refsect2">
<a name="hb-buffer-serialize-flags-t"></a><h3>enum hb_buffer_serialize_flags_t</h3>
-<p>Flags that control what glyph information are serialized in <a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()"><code class="function">hb_buffer_serialize_glyphs()</code></a>.</p>
+<p>Flags that control what glyph information are serialized in <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()"><code class="function">hb_buffer_serialize_glyphs()</code></a>.</p>
<div class="refsect3">
<a name="hb-buffer-serialize-flags-t.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2969,6 +3040,6 @@ set and retrieved using <a class="link" href="harfbuzz-Buffers.html#hb-buffer-se
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-common.html b/docs/html/harfbuzz-hb-common.html
index 7db2c8b..7401836 100644
--- a/docs/html/harfbuzz-hb-common.html
+++ b/docs/html/harfbuzz-hb-common.html
@@ -5,10 +5,10 @@
<title>hb-common: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb.html" title="hb">
-<link rel="next" href="harfbuzz-hb-unicode.html" title="hb-unicode">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch09.html" title="Core API">
+<link rel="prev" href="harfbuzz-hb-buffer.html" title="hb-buffer">
+<link rel="next" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,16 +19,16 @@
<a href="#harfbuzz-hb-common.object-hierarchy" class="shortcut">Object Hierarchy</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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-unicode.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="u" href="ch09.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-buffer.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-deprecated.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-common"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-common.top_of_page"></a>hb-common</span></h2>
-<p>hb-common</p>
+<p>hb-common — Common data types</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -254,15 +254,21 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-common.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
<span class="lineart">╰──</span> hb_user_data_key_t
- <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
+ <a href="/usr/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
<span class="lineart">├──</span> hb_direction_t
<span class="lineart">╰──</span> hb_script_t
</pre>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-common.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-common.description"></a><h2>Description</h2>
+<p>Common data types used across HarfBuzz are defined here.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-common.functions_details"></a><h2>Functions</h2>
@@ -394,7 +400,7 @@ corresponding <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="
<tbody>
<tr>
<td class="parameter_name"><p>str</p></td>
-<td class="parameter_description"><p>a string representing an
+<td class="parameter_description"><p> a string representing an
ISO 15924 tag. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
</tr>
@@ -454,7 +460,7 @@ hb_script_get_horizontal_direction (<em class="parameter"><code><a class="link"
hb_language_from_string (<em class="parameter"><code>const <span class="type">char</span> *str</code></em>,
<em class="parameter"><code><span class="type">int</span> len</code></em>);</pre>
<p>Converts <em class="parameter"><code>str</code></em>
- representing an ISO 639 language code to the corresponding
+ representing a BCP 47 language tag to the corresponding
<a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a>.</p>
<div class="refsect3">
<a name="hb-language-from-string.parameters"></a><h4>Parameters</h4>
@@ -467,8 +473,8 @@ hb_language_from_string (<em class="parameter"><code>const <span class="type">ch
<tbody>
<tr>
<td class="parameter_name"><p>str</p></td>
-<td class="parameter_description"><p>a string representing
-ISO 639 language code. </p></td>
+<td class="parameter_description"><p> a string representing
+a BCP 47 language tag. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
</tr>
<tr>
@@ -482,7 +488,7 @@ ISO 639 language code. </p></td>
</div>
<div class="refsect3">
<a name="hb-language-from-string.returns"></a><h4>Returns</h4>
-<p>The <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> corresponding to the ISO 639 language code. </p>
+<p>The <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> corresponding to the BCP 47 language tag. </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>
@@ -522,6 +528,13 @@ the caller. </p>
<a name="hb-language-get-default"></a><h3>hb_language_get_default ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="returnvalue">hb_language_t</span></a>
hb_language_get_default (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>Get default language from current locale.</p>
+<p>Note that the first time this function is called, it calls
+"setlocale (LC_CTYPE, nullptr)" to fetch current locale. The underlying
+setlocale function is, in many implementations, NOT threadsafe. To avoid
+problems, call this function once before multiple threads can call it.
+This function is only used from <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-guess-segment-properties" title="hb_buffer_guess_segment_properties ()"><code class="function">hb_buffer_guess_segment_properties()</code></a> by
+HarfBuzz itself.</p>
<div class="refsect3">
<a name="hb-language-get-default.returns"></a><h4>Returns</h4>
<p>. </p>
@@ -538,13 +551,13 @@ hb_language_get_default (<em class="parameter"><code><span class="type">void</sp
<hr>
<div class="refsect2">
<a name="HB-TAG:CAPS"></a><h3>HB_TAG()</h3>
-<pre class="programlisting">#define HB_TAG(c1,c2,c3,c4) ((hb_tag_t)((((uint8_t)(c1))&lt;&lt;24)|(((uint8_t)(c2))&lt;&lt;16)|(((uint8_t)(c3))&lt;&lt;8)|((uint8_t)(c4))))
+<pre class="programlisting">#define HB_TAG(c1,c2,c3,c4) ((hb_tag_t)((((uint32_t)(c1)&amp;0xFF)&lt;&lt;24)|(((uint32_t)(c2)&amp;0xFF)&lt;&lt;16)|(((uint32_t)(c3)&amp;0xFF)&lt;&lt;8)|((uint32_t)(c4)&amp;0xFF)))
</pre>
</div>
<hr>
<div class="refsect2">
<a name="HB-UNTAG:CAPS"></a><h3>HB_UNTAG()</h3>
-<pre class="programlisting">#define HB_UNTAG(tag) ((uint8_t)((tag)&gt;&gt;24)), ((uint8_t)((tag)&gt;&gt;16)), ((uint8_t)((tag)&gt;&gt;8)), ((uint8_t)(tag))
+<pre class="programlisting">#define HB_UNTAG(tag) (uint8_t)(((tag)&gt;&gt;24)&amp;0xFF), (uint8_t)(((tag)&gt;&gt;16)&amp;0xFF), (uint8_t)(((tag)&gt;&gt;8)&amp;0xFF), (uint8_t)((tag)&amp;0xFF)
</pre>
</div>
<hr>
@@ -685,26 +698,751 @@ hb_language_get_default (<em class="parameter"><code><span class="type">void</sp
</colgroup>
<tbody>
<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-COMMON:CAPS"></a>HB_SCRIPT_COMMON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-INHERITED:CAPS"></a>HB_SCRIPT_INHERITED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-UNKNOWN:CAPS"></a>HB_SCRIPT_UNKNOWN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-ARABIC:CAPS"></a>HB_SCRIPT_ARABIC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-ARMENIAN:CAPS"></a>HB_SCRIPT_ARMENIAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-BENGALI:CAPS"></a>HB_SCRIPT_BENGALI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-CYRILLIC:CAPS"></a>HB_SCRIPT_CYRILLIC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-DEVANAGARI:CAPS"></a>HB_SCRIPT_DEVANAGARI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-GEORGIAN:CAPS"></a>HB_SCRIPT_GEORGIAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-GREEK:CAPS"></a>HB_SCRIPT_GREEK</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-GUJARATI:CAPS"></a>HB_SCRIPT_GUJARATI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-GURMUKHI:CAPS"></a>HB_SCRIPT_GURMUKHI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-HANGUL:CAPS"></a>HB_SCRIPT_HANGUL</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-HAN:CAPS"></a>HB_SCRIPT_HAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-HEBREW:CAPS"></a>HB_SCRIPT_HEBREW</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-HIRAGANA:CAPS"></a>HB_SCRIPT_HIRAGANA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-KANNADA:CAPS"></a>HB_SCRIPT_KANNADA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-KATAKANA:CAPS"></a>HB_SCRIPT_KATAKANA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-LAO:CAPS"></a>HB_SCRIPT_LAO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-LATIN:CAPS"></a>HB_SCRIPT_LATIN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-MALAYALAM:CAPS"></a>HB_SCRIPT_MALAYALAM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-ORIYA:CAPS"></a>HB_SCRIPT_ORIYA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-TAMIL:CAPS"></a>HB_SCRIPT_TAMIL</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-TELUGU:CAPS"></a>HB_SCRIPT_TELUGU</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-THAI:CAPS"></a>HB_SCRIPT_THAI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-TIBETAN:CAPS"></a>HB_SCRIPT_TIBETAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-BOPOMOFO:CAPS"></a>HB_SCRIPT_BOPOMOFO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-BRAILLE:CAPS"></a>HB_SCRIPT_BRAILLE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-CANADIAN-SYLLABICS:CAPS"></a>HB_SCRIPT_CANADIAN_SYLLABICS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-CHEROKEE:CAPS"></a>HB_SCRIPT_CHEROKEE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-ETHIOPIC:CAPS"></a>HB_SCRIPT_ETHIOPIC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-KHMER:CAPS"></a>HB_SCRIPT_KHMER</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-MONGOLIAN:CAPS"></a>HB_SCRIPT_MONGOLIAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-MYANMAR:CAPS"></a>HB_SCRIPT_MYANMAR</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-OGHAM:CAPS"></a>HB_SCRIPT_OGHAM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-RUNIC:CAPS"></a>HB_SCRIPT_RUNIC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-SINHALA:CAPS"></a>HB_SCRIPT_SINHALA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-SYRIAC:CAPS"></a>HB_SCRIPT_SYRIAC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-THAANA:CAPS"></a>HB_SCRIPT_THAANA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-YI:CAPS"></a>HB_SCRIPT_YI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-DESERET:CAPS"></a>HB_SCRIPT_DESERET</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-GOTHIC:CAPS"></a>HB_SCRIPT_GOTHIC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-OLD-ITALIC:CAPS"></a>HB_SCRIPT_OLD_ITALIC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-BUHID:CAPS"></a>HB_SCRIPT_BUHID</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-HANUNOO:CAPS"></a>HB_SCRIPT_HANUNOO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-TAGALOG:CAPS"></a>HB_SCRIPT_TAGALOG</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-TAGBANWA:CAPS"></a>HB_SCRIPT_TAGBANWA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-CYPRIOT:CAPS"></a>HB_SCRIPT_CYPRIOT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-LIMBU:CAPS"></a>HB_SCRIPT_LIMBU</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-LINEAR-B:CAPS"></a>HB_SCRIPT_LINEAR_B</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-OSMANYA:CAPS"></a>HB_SCRIPT_OSMANYA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-SHAVIAN:CAPS"></a>HB_SCRIPT_SHAVIAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-TAI-LE:CAPS"></a>HB_SCRIPT_TAI_LE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-UGARITIC:CAPS"></a>HB_SCRIPT_UGARITIC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-BUGINESE:CAPS"></a>HB_SCRIPT_BUGINESE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-COPTIC:CAPS"></a>HB_SCRIPT_COPTIC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-GLAGOLITIC:CAPS"></a>HB_SCRIPT_GLAGOLITIC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-KHAROSHTHI:CAPS"></a>HB_SCRIPT_KHAROSHTHI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-NEW-TAI-LUE:CAPS"></a>HB_SCRIPT_NEW_TAI_LUE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-OLD-PERSIAN:CAPS"></a>HB_SCRIPT_OLD_PERSIAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-SYLOTI-NAGRI:CAPS"></a>HB_SCRIPT_SYLOTI_NAGRI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-TIFINAGH:CAPS"></a>HB_SCRIPT_TIFINAGH</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-BALINESE:CAPS"></a>HB_SCRIPT_BALINESE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-CUNEIFORM:CAPS"></a>HB_SCRIPT_CUNEIFORM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-NKO:CAPS"></a>HB_SCRIPT_NKO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-PHAGS-PA:CAPS"></a>HB_SCRIPT_PHAGS_PA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-PHOENICIAN:CAPS"></a>HB_SCRIPT_PHOENICIAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-CARIAN:CAPS"></a>HB_SCRIPT_CARIAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-CHAM:CAPS"></a>HB_SCRIPT_CHAM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-KAYAH-LI:CAPS"></a>HB_SCRIPT_KAYAH_LI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-LEPCHA:CAPS"></a>HB_SCRIPT_LEPCHA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-LYCIAN:CAPS"></a>HB_SCRIPT_LYCIAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-LYDIAN:CAPS"></a>HB_SCRIPT_LYDIAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-OL-CHIKI:CAPS"></a>HB_SCRIPT_OL_CHIKI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-REJANG:CAPS"></a>HB_SCRIPT_REJANG</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-SAURASHTRA:CAPS"></a>HB_SCRIPT_SAURASHTRA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-SUNDANESE:CAPS"></a>HB_SCRIPT_SUNDANESE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-VAI:CAPS"></a>HB_SCRIPT_VAI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-AVESTAN:CAPS"></a>HB_SCRIPT_AVESTAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-BAMUM:CAPS"></a>HB_SCRIPT_BAMUM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-EGYPTIAN-HIEROGLYPHS:CAPS"></a>HB_SCRIPT_EGYPTIAN_HIEROGLYPHS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-IMPERIAL-ARAMAIC:CAPS"></a>HB_SCRIPT_IMPERIAL_ARAMAIC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-INSCRIPTIONAL-PAHLAVI:CAPS"></a>HB_SCRIPT_INSCRIPTIONAL_PAHLAVI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-INSCRIPTIONAL-PARTHIAN:CAPS"></a>HB_SCRIPT_INSCRIPTIONAL_PARTHIAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-JAVANESE:CAPS"></a>HB_SCRIPT_JAVANESE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-KAITHI:CAPS"></a>HB_SCRIPT_KAITHI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-LISU:CAPS"></a>HB_SCRIPT_LISU</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-MEETEI-MAYEK:CAPS"></a>HB_SCRIPT_MEETEI_MAYEK</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-OLD-SOUTH-ARABIAN:CAPS"></a>HB_SCRIPT_OLD_SOUTH_ARABIAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-OLD-TURKIC:CAPS"></a>HB_SCRIPT_OLD_TURKIC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-SAMARITAN:CAPS"></a>HB_SCRIPT_SAMARITAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-TAI-THAM:CAPS"></a>HB_SCRIPT_TAI_THAM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-TAI-VIET:CAPS"></a>HB_SCRIPT_TAI_VIET</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-BATAK:CAPS"></a>HB_SCRIPT_BATAK</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-BRAHMI:CAPS"></a>HB_SCRIPT_BRAHMI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-MANDAIC:CAPS"></a>HB_SCRIPT_MANDAIC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-CHAKMA:CAPS"></a>HB_SCRIPT_CHAKMA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-MEROITIC-CURSIVE:CAPS"></a>HB_SCRIPT_MEROITIC_CURSIVE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-MEROITIC-HIEROGLYPHS:CAPS"></a>HB_SCRIPT_MEROITIC_HIEROGLYPHS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-MIAO:CAPS"></a>HB_SCRIPT_MIAO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-SHARADA:CAPS"></a>HB_SCRIPT_SHARADA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-SORA-SOMPENG:CAPS"></a>HB_SCRIPT_SORA_SOMPENG</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-TAKRI:CAPS"></a>HB_SCRIPT_TAKRI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-BASSA-VAH:CAPS"></a>HB_SCRIPT_BASSA_VAH</p></td>
<td> </td>
<td> </td>
</tr>
<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-CAUCASIAN-ALBANIAN:CAPS"></a>HB_SCRIPT_CAUCASIAN_ALBANIAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-DUPLOYAN:CAPS"></a>HB_SCRIPT_DUPLOYAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-ELBASAN:CAPS"></a>HB_SCRIPT_ELBASAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-GRANTHA:CAPS"></a>HB_SCRIPT_GRANTHA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-KHOJKI:CAPS"></a>HB_SCRIPT_KHOJKI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-KHUDAWADI:CAPS"></a>HB_SCRIPT_KHUDAWADI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-LINEAR-A:CAPS"></a>HB_SCRIPT_LINEAR_A</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-MAHAJANI:CAPS"></a>HB_SCRIPT_MAHAJANI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-MANICHAEAN:CAPS"></a>HB_SCRIPT_MANICHAEAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-MENDE-KIKAKUI:CAPS"></a>HB_SCRIPT_MENDE_KIKAKUI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-MODI:CAPS"></a>HB_SCRIPT_MODI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-MRO:CAPS"></a>HB_SCRIPT_MRO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-NABATAEAN:CAPS"></a>HB_SCRIPT_NABATAEAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-OLD-NORTH-ARABIAN:CAPS"></a>HB_SCRIPT_OLD_NORTH_ARABIAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-OLD-PERMIC:CAPS"></a>HB_SCRIPT_OLD_PERMIC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-PAHAWH-HMONG:CAPS"></a>HB_SCRIPT_PAHAWH_HMONG</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-PALMYRENE:CAPS"></a>HB_SCRIPT_PALMYRENE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-PAU-CIN-HAU:CAPS"></a>HB_SCRIPT_PAU_CIN_HAU</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-PSALTER-PAHLAVI:CAPS"></a>HB_SCRIPT_PSALTER_PAHLAVI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-SIDDHAM:CAPS"></a>HB_SCRIPT_SIDDHAM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-TIRHUTA:CAPS"></a>HB_SCRIPT_TIRHUTA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-WARANG-CITI:CAPS"></a>HB_SCRIPT_WARANG_CITI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-AHOM:CAPS"></a>HB_SCRIPT_AHOM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-ANATOLIAN-HIEROGLYPHS:CAPS"></a>HB_SCRIPT_ANATOLIAN_HIEROGLYPHS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-HATRAN:CAPS"></a>HB_SCRIPT_HATRAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-MULTANI:CAPS"></a>HB_SCRIPT_MULTANI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-OLD-HUNGARIAN:CAPS"></a>HB_SCRIPT_OLD_HUNGARIAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-SIGNWRITING:CAPS"></a>HB_SCRIPT_SIGNWRITING</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-ADLAM:CAPS"></a>HB_SCRIPT_ADLAM</p></td>
<td> </td>
<td> </td>
</tr>
<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-BHAIKSUKI:CAPS"></a>HB_SCRIPT_BHAIKSUKI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-MARCHEN:CAPS"></a>HB_SCRIPT_MARCHEN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-OSAGE:CAPS"></a>HB_SCRIPT_OSAGE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-TANGUT:CAPS"></a>HB_SCRIPT_TANGUT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-NEWA:CAPS"></a>HB_SCRIPT_NEWA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-MASARAM-GONDI:CAPS"></a>HB_SCRIPT_MASARAM_GONDI</p></td>
<td> </td>
<td> </td>
</tr>
<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-NUSHU:CAPS"></a>HB_SCRIPT_NUSHU</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-SOYOMBO:CAPS"></a>HB_SCRIPT_SOYOMBO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-ZANABAZAR-SQUARE:CAPS"></a>HB_SCRIPT_ZANABAZAR_SQUARE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-DOGRA:CAPS"></a>HB_SCRIPT_DOGRA</p></td>
<td> </td>
<td> </td>
</tr>
<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-GUNJALA-GONDI:CAPS"></a>HB_SCRIPT_GUNJALA_GONDI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-HANIFI-ROHINGYA:CAPS"></a>HB_SCRIPT_HANIFI_ROHINGYA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-MAKASAR:CAPS"></a>HB_SCRIPT_MAKASAR</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-MEDEFAIDRIN:CAPS"></a>HB_SCRIPT_MEDEFAIDRIN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-OLD-SOGDIAN:CAPS"></a>HB_SCRIPT_OLD_SOGDIAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-SCRIPT-SOGDIAN:CAPS"></a>HB_SCRIPT_SOGDIAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
<td class="enum_member_name"><p><a name="HB-SCRIPT-INVALID:CAPS"></a>HB_SCRIPT_INVALID</p></td>
<td> </td>
<td> </td>
@@ -761,6 +1499,6 @@ hb_language_get_default (<em class="parameter"><code><span class="type">void</sp
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-coretext.html b/docs/html/harfbuzz-hb-coretext.html
index 24a7e11..fddeb85 100644
--- a/docs/html/harfbuzz-hb-coretext.html
+++ b/docs/html/harfbuzz-hb-coretext.html
@@ -5,10 +5,10 @@
<title>hb-coretext: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-uniscribe.html" title="hb-uniscribe">
-<link rel="next" href="harfbuzz-hb-gobject.html" title="hb-gobject">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch12.html" title="Integration API">
+<link rel="prev" href="ch12.html" title="Integration API">
+<link rel="next" href="harfbuzz-hb-ft.html" title="hb-ft">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,16 +18,16 @@
<a href="#harfbuzz-hb-coretext.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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-uniscribe.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-gobject.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></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-ft.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-coretext"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-coretext.top_of_page"></a>hb-coretext</span></h2>
-<p>hb-coretext</p>
+<p>hb-coretext — CoreText integration</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -98,7 +98,13 @@
</table></div>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-coretext.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb-coretext.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-coretext.description"></a><h2>Description</h2>
+<p>Functions for using HarfBuzz with the CoreText fonts.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-coretext.functions_details"></a><h2>Functions</h2>
@@ -148,6 +154,6 @@ hb_coretext_font_get_ct_font (<em class="parameter"><code><a class="link" href="
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-deprecated.html b/docs/html/harfbuzz-hb-deprecated.html
index 60935e1..96ed0a1 100644
--- a/docs/html/harfbuzz-hb-deprecated.html
+++ b/docs/html/harfbuzz-hb-deprecated.html
@@ -5,10 +5,10 @@
<title>hb-deprecated: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-version.html" title="hb-version">
-<link rel="next" href="harfbuzz-hb-set.html" title="hb-set">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch09.html" title="Core API">
+<link rel="prev" href="harfbuzz-hb-common.html" title="hb-common">
+<link rel="next" href="harfbuzz-hb-face.html" title="hb-face">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,16 +18,16 @@
<a href="#harfbuzz-hb-deprecated.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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-version.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-set.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="u" href="ch09.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-common.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-face.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-deprecated"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-deprecated.top_of_page"></a>hb-deprecated</span></h2>
-<p>hb-deprecated</p>
+<p>hb-deprecated — Deprecated API</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -41,10 +41,10 @@
<tbody>
<tr>
<td class="function_type">
-<span class="returnvalue">void</span>
+<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-deprecated.html#hb-font-funcs-set-glyph-func" title="hb_font_funcs_set_glyph_func ()">hb_font_funcs_set_glyph_func</a> <span class="c_punctuation">()</span>
+<span class="c_punctuation">(</span><a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-func-t" title="hb_font_get_glyph_func_t ()">*hb_font_get_glyph_func_t</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -52,7 +52,31 @@
<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">
-<span class="c_punctuation">(</span><a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-func-t" title="hb_font_get_glyph_func_t ()">*hb_font_get_glyph_func_t</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-ot-layout-table-find-script" title="hb_ot_layout_table_find_script ()">hb_ot_layout_table_find_script</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-deprecated.html#hb-font-funcs-set-glyph-h-kerning-func" title="hb_font_funcs_set_glyph_h_kerning_func ()">hb_font_funcs_set_glyph_h_kerning_func</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-deprecated.html#hb-font-funcs-set-glyph-v-kerning-func" title="hb_font_funcs_set_glyph_v_kerning_func ()">hb_font_funcs_set_glyph_v_kerning_func</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="returnvalue">hb_position_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-h-kerning" title="hb_font_get_glyph_h_kerning ()">hb_font_get_glyph_h_kerning</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -60,7 +84,23 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-deprecated.html#hb-set-invert" title="hb_set_invert ()">hb_set_invert</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-kerning-for-direction" title="hb_font_get_glyph_kerning_for_direction ()">hb_font_get_glyph_kerning_for_direction</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="returnvalue">hb_position_t</span></a>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-kerning-func-t" title="hb_font_get_glyph_kerning_func_t ()">*hb_font_get_glyph_kerning_func_t</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="returnvalue">hb_position_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-v-kerning" title="hb_font_get_glyph_v_kerning ()">hb_font_get_glyph_v_kerning</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
@@ -86,26 +126,69 @@
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="harfbuzz-hb-deprecated.html#HB-SCRIPT-CANADIAN-ABORIGINAL:CAPS" title="HB_SCRIPT_CANADIAN_ABORIGINAL">HB_SCRIPT_CANADIAN_ABORIGINAL</a></td>
</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-deprecated.html#HB-OT-VAR-NO-AXIS-INDEX:CAPS" title="HB_OT_VAR_NO_AXIS_INDEX">HB_OT_VAR_NO_AXIS_INDEX</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-deprecated.html#HB-UNICODE-MAX-DECOMPOSITION-LEN:CAPS" title="HB_UNICODE_MAX_DECOMPOSITION_LEN">HB_UNICODE_MAX_DECOMPOSITION_LEN</a></td>
+</tr>
+<tr>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-h-kerning-func-t" title="hb_font_get_glyph_h_kerning_func_t">hb_font_get_glyph_h_kerning_func_t</a></td>
+</tr>
+<tr>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-v-kerning-func-t" title="hb_font_get_glyph_v_kerning_func_t">hb_font_get_glyph_v_kerning_func_t</a></td>
+</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-deprecated.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-deprecated.description"></a><h2>Description</h2>
+<p>These API have been deprecated in favor of newer API, or because they
+were deemed unnecessary.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-deprecated.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
-<a name="hb-font-funcs-set-glyph-func"></a><h3>hb_font_funcs_set_glyph_func ()</h3>
+<a name="hb-font-get-glyph-func-t"></a><h3>hb_font_get_glyph_func_t ()</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>
+<span class="c_punctuation">(</span>*hb_font_get_glyph_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *font_data</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> unicode</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> variation_selector</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *glyph</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<div class="warning"><p><code class="literal">hb_font_get_glyph_func_t</code> is deprecated and should not be used in newly-written code.</p></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-layout-table-find-script"></a><h3>hb_ot_layout_table_find_script ()</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_ot_layout_table_find_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> table_tag</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> script_tag</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *script_index</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-font-funcs-set-glyph-h-kerning-func"></a><h3>hb_font_funcs_set_glyph_h_kerning_func ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_font_funcs_set_glyph_func (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t"><span class="type">hb_font_funcs_t</span></a> *ffuncs</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-func-t" title="hb_font_get_glyph_func_t ()"><span class="type">hb_font_get_glyph_func_t</span></a> func</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>
-<div class="warning"><p><code class="literal">hb_font_funcs_set_glyph_func</code> has been deprecated since version 1.2.3 and should not be used in newly-written code.</p></div>
-<p>Deprecated. Use <a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-nominal-glyph-func" title="hb_font_funcs_set_nominal_glyph_func ()"><code class="function">hb_font_funcs_set_nominal_glyph_func()</code></a> and
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-variation-glyph-func" title="hb_font_funcs_set_variation_glyph_func ()"><code class="function">hb_font_funcs_set_variation_glyph_func()</code></a> instead.</p>
+hb_font_funcs_set_glyph_h_kerning_func
+ (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t"><span class="type">hb_font_funcs_t</span></a> *ffuncs</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-h-kerning-func-t" title="hb_font_get_glyph_h_kerning_func_t"><span class="type">hb_font_get_glyph_h_kerning_func_t</span></a> func</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>
+<div class="warning"><p><code class="literal">hb_font_funcs_set_glyph_h_kerning_func</code> has been deprecated since version 2.0.0 and should not be used in newly-written code.</p></div>
<div class="refsect3">
-<a name="hb-font-funcs-set-glyph-func.parameters"></a><h4>Parameters</h4>
+<a name="hb-font-funcs-set-glyph-h-kerning-func.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -130,24 +213,125 @@ hb_font_funcs_set_glyph_func (<em class="parameter"><code><a class="link" href="
</div>
<hr>
<div class="refsect2">
-<a name="hb-font-get-glyph-func-t"></a><h3>hb_font_get_glyph_func_t ()</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>
-<span class="c_punctuation">(</span>*hb_font_get_glyph_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><span class="type">void</span> *font_data</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> unicode</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> variation_selector</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *glyph</code></em>,
- <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
-<div class="warning"><p><code class="literal">hb_font_get_glyph_func_t</code> is deprecated and should not be used in newly-written code.</p></div>
+<a name="hb-font-funcs-set-glyph-v-kerning-func"></a><h3>hb_font_funcs_set_glyph_v_kerning_func ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_font_funcs_set_glyph_v_kerning_func
+ (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t"><span class="type">hb_font_funcs_t</span></a> *ffuncs</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-deprecated.html#hb-font-get-glyph-v-kerning-func-t" title="hb_font_get_glyph_v_kerning_func_t"><span class="type">hb_font_get_glyph_v_kerning_func_t</span></a> func</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>
+<div class="warning"><p><code class="literal">hb_font_funcs_set_glyph_v_kerning_func</code> has been deprecated since version 2.0.0 and should not be used in newly-written code.</p></div>
+<div class="refsect3">
+<a name="hb-font-funcs-set-glyph-v-kerning-func.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>ffuncs</p></td>
+<td class="parameter_description"><p>font functions.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>func</p></td>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></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-set-invert"></a><h3>hb_set_invert ()</h3>
+<a name="hb-font-get-glyph-h-kerning"></a><h3>hb_font_get_glyph_h_kerning ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="returnvalue">hb_position_t</span></a>
+hb_font_get_glyph_h_kerning (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> left_glyph</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> right_glyph</code></em>);</pre>
+<div class="warning"><p><code class="literal">hb_font_get_glyph_h_kerning</code> has been deprecated since version 2.0.0 and should not be used in newly-written code.</p></div>
+<div class="refsect3">
+<a name="hb-font-get-glyph-h-kerning.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>font</p></td>
+<td class="parameter_description"><p>a font.</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-font-get-glyph-kerning-for-direction"></a><h3>hb_font_get_glyph_kerning_for_direction ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_set_invert (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *set</code></em>);</pre>
-<div class="warning"><p><code class="literal">hb_set_invert</code> has been deprecated since version 1.6.1 and should not be used in newly-written code.</p></div>
+hb_font_get_glyph_kerning_for_direction
+ (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> first_glyph</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> second_glyph</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> direction</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *x</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *y</code></em>);</pre>
+<div class="warning"><p><code class="literal">hb_font_get_glyph_kerning_for_direction</code> has been deprecated since version 2.0.0 and should not be used in newly-written code.</p></div>
+<div class="refsect3">
+<a name="hb-font-get-glyph-kerning-for-direction.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>font</p></td>
+<td class="parameter_description"><p>a font.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>x</p></td>
+<td class="parameter_description"><p>. </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>
+<tr>
+<td class="parameter_name"><p>y</p></td>
+<td class="parameter_description"><p>. </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>
+<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-font-get-glyph-kerning-func-t"></a><h3>hb_font_get_glyph_kerning_func_t ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="returnvalue">hb_position_t</span></a>
+<span class="c_punctuation">(</span>*hb_font_get_glyph_kerning_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *font_data</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> first_glyph</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> second_glyph</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+<div class="warning"><p><code class="literal">hb_font_get_glyph_kerning_func_t</code> is deprecated and should not be used in newly-written code.</p></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-font-get-glyph-v-kerning"></a><h3>hb_font_get_glyph_v_kerning ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="returnvalue">hb_position_t</span></a>
+hb_font_get_glyph_v_kerning (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> top_glyph</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> bottom_glyph</code></em>);</pre>
+<div class="warning"><p><code class="literal">hb_font_get_glyph_v_kerning</code> has been deprecated since version 2.0.0 and should not be used in newly-written code.</p></div>
<div class="refsect3">
-<a name="hb-set-invert.parameters"></a><h4>Parameters</h4>
+<a name="hb-font-get-glyph-v-kerning.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -155,13 +339,13 @@ hb_set_invert (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
-<td class="parameter_name"><p>set</p></td>
-<td class="parameter_description"><p>a set.</p></td>
+<td class="parameter_name"><p>font</p></td>
+<td class="parameter_description"><p>a font.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
-<p class="since">Since: <a class="link" href="api-index-0-9-10.html#api-index-0.9.10">0.9.10</a></p>
+<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">
@@ -186,9 +370,39 @@ hb_set_invert (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set
</pre>
<div class="warning"><p><code class="literal">HB_SCRIPT_CANADIAN_ABORIGINAL</code> is deprecated and should not be used in newly-written code.</p></div>
</div>
+<hr>
+<div class="refsect2">
+<a name="HB-OT-VAR-NO-AXIS-INDEX:CAPS"></a><h3>HB_OT_VAR_NO_AXIS_INDEX</h3>
+<pre class="programlisting">#define HB_OT_VAR_NO_AXIS_INDEX 0xFFFFFFFFu
+</pre>
+<div class="warning"><p><code class="literal">HB_OT_VAR_NO_AXIS_INDEX</code> has been deprecated since version 2.2.0 and should not be used in newly-written code.</p></div>
+<p class="since">Since: <a class="link" href="api-index-1-4-2.html#api-index-1.4.2">1.4.2</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="HB-UNICODE-MAX-DECOMPOSITION-LEN:CAPS"></a><h3>HB_UNICODE_MAX_DECOMPOSITION_LEN</h3>
+<pre class="programlisting">#define HB_UNICODE_MAX_DECOMPOSITION_LEN (18+1) /* codepoints */
+</pre>
+<div class="warning"><p><code class="literal">HB_UNICODE_MAX_DECOMPOSITION_LEN</code> has been deprecated since version 2.0.0 and should not be used in newly-written code.</p></div>
+<p>See Unicode 6.1 for details on the maximum decomposition length.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-font-get-glyph-h-kerning-func-t"></a><h3>hb_font_get_glyph_h_kerning_func_t</h3>
+<pre class="programlisting">typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_h_kerning_func_t;
+</pre>
+<div class="warning"><p><code class="literal">hb_font_get_glyph_h_kerning_func_t</code> is deprecated and should not be used in newly-written code.</p></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-font-get-glyph-v-kerning-func-t"></a><h3>hb_font_get_glyph_v_kerning_func_t</h3>
+<pre class="programlisting">typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_v_kerning_func_t;
+</pre>
+<div class="warning"><p><code class="literal">hb_font_get_glyph_v_kerning_func_t</code> is deprecated and should not be used in newly-written code.</p></div>
+</div>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-face.html b/docs/html/harfbuzz-hb-face.html
index 7192ddc..25c817e 100644
--- a/docs/html/harfbuzz-hb-face.html
+++ b/docs/html/harfbuzz-hb-face.html
@@ -5,10 +5,10 @@
<title>hb-face: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-blob.html" title="hb-blob">
+<link rel="up" href="ch09.html" title="Core API">
+<link rel="prev" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">
<link rel="next" href="harfbuzz-hb-font.html" title="hb-font">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,8 +19,8 @@
<a href="#harfbuzz-hb-face.object-hierarchy" class="shortcut">Object Hierarchy</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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-blob.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch09.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-deprecated.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="harfbuzz-hb-font.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
@@ -28,7 +28,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-face.top_of_page"></a>hb-face</span></h2>
-<p>hb-face</p>
+<p>hb-face — Font face objects</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -187,6 +187,46 @@
<a class="link" href="harfbuzz-hb-face.html#hb-face-set-user-data" title="hb_face_set_user_data ()">hb_face_set_user_data</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-face.html#hb-face-collect-unicodes" title="hb_face_collect_unicodes ()">hb_face_collect_unicodes</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-face.html#hb-face-collect-variation-selectors" title="hb_face_collect_variation_selectors ()">hb_face_collect_variation_selectors</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-face.html#hb-face-collect-variation-unicodes" title="hb_face_collect_variation_unicodes ()">hb_face_collect_variation_unicodes</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="returnvalue">hb_face_t</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-face.html#hb-face-builder-create" title="hb_face_builder_create ()">hb_face_builder_create</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-face.html#hb-face-builder-add-table" title="hb_face_builder_add_table ()">hb_face_builder_add_table</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
</tbody>
</table></div>
</div>
@@ -205,12 +245,21 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-face.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
<span class="lineart">╰──</span> hb_face_t
</pre>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-face.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-face.description"></a><h2>Description</h2>
+<p>Font face is objects represent a single face in a font family.
+More exactly, a font face represents a single face in a binary font file.
+Font faces are typically built from a binary blob and a face index.
+Font faces are used to create fonts.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-face.functions_details"></a><h2>Functions</h2>
@@ -218,6 +267,28 @@
<a name="hb-face-count"></a><h3>hb_face_count ()</h3>
<pre class="programlisting">unsigned <span class="returnvalue">int</span>
hb_face_count (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t"><span class="type">hb_blob_t</span></a> *blob</code></em>);</pre>
+<p>Get number of faces in a blob.</p>
+<div class="refsect3">
+<a name="hb-face-count.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-face-count.returns"></a><h4>Returns</h4>
+<p> Number of faces in <em class="parameter"><code>blob</code></em>
+</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">
@@ -299,7 +370,7 @@ hb_face_get_empty (<em class="parameter"><code><span class="type">void</span></c
<div class="refsect2">
<a name="hb-face-get-table-tags"></a><h3>hb_face_get_table_tags ()</h3>
<pre class="programlisting">unsigned <span class="returnvalue">int</span>
-hb_face_get_table_tags (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+hb_face_get_table_tags (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> start_offset</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *table_count</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *table_tags</code></em>);</pre>
@@ -312,11 +383,29 @@ hb_face_get_table_tags (<em class="parameter"><code><a class="link" href="harfbu
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
-<tbody><tr>
+<tbody>
+<tr>
<td class="parameter_name"><p>face</p></td>
<td class="parameter_description"><p>a face.</p></td>
<td class="parameter_annotations"> </td>
-</tr></tbody>
+</tr>
+<tr>
+<td class="parameter_name"><p>start_offset</p></td>
+<td class="parameter_description"><p>index of first tag to return.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>table_count</p></td>
+<td class="parameter_description"><p>input length of <em class="parameter"><code>table_tags</code></em>
+array, output number of items written.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>table_tags</p></td>
+<td class="parameter_description"><p>array to write tags into.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
</table></div>
</div>
<div class="refsect3">
@@ -329,7 +418,7 @@ hb_face_get_table_tags (<em class="parameter"><code><a class="link" href="harfbu
<div class="refsect2">
<a name="hb-face-get-glyph-count"></a><h3>hb_face_get_glyph_count ()</h3>
<pre class="programlisting">unsigned <span class="returnvalue">int</span>
-hb_face_get_glyph_count (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+hb_face_get_glyph_count (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
<div class="refsect3">
<a name="hb-face-get-glyph-count.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -351,7 +440,7 @@ hb_face_get_glyph_count (<em class="parameter"><code><a class="link" href="harfb
<div class="refsect2">
<a name="hb-face-get-index"></a><h3>hb_face_get_index ()</h3>
<pre class="programlisting">unsigned <span class="returnvalue">int</span>
-hb_face_get_index (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+hb_face_get_index (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
<div class="refsect3">
<a name="hb-face-get-index.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -373,7 +462,7 @@ hb_face_get_index (<em class="parameter"><code><a class="link" href="harfbuzz-hb
<div class="refsect2">
<a name="hb-face-get-upem"></a><h3>hb_face_get_upem ()</h3>
<pre class="programlisting">unsigned <span class="returnvalue">int</span>
-hb_face_get_upem (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+hb_face_get_upem (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
<div class="refsect3">
<a name="hb-face-get-upem.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -395,7 +484,7 @@ hb_face_get_upem (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
<div class="refsect2">
<a name="hb-face-get-user-data"></a><h3>hb_face_get_user_data ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span> *
-hb_face_get_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+hb_face_get_user_data (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>);</pre>
<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">
@@ -424,7 +513,7 @@ hb_face_get_user_data (<em class="parameter"><code><a class="link" href="harfbuz
<div class="refsect2">
<a name="hb-face-is-immutable"></a><h3>hb_face_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_face_is_immutable (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+hb_face_is_immutable (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
<div class="refsect3">
<a name="hb-face-is-immutable.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -518,7 +607,7 @@ hb_face_reference_blob (<em class="parameter"><code><a class="link" href="harfbu
<div class="refsect2">
<a name="hb-face-reference-table"></a><h3>hb_face_reference_table ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t"><span class="returnvalue">hb_blob_t</span></a> *
-hb_face_reference_table (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+hb_face_reference_table (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> tag</code></em>);</pre>
<div class="refsect3">
<a name="hb-face-reference-table.parameters"></a><h4>Parameters</h4>
@@ -638,6 +727,130 @@ hb_face_set_user_data (<em class="parameter"><code><a class="link" href="harfbuz
</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-face-collect-unicodes"></a><h3>hb_face_collect_unicodes ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_face_collect_unicodes (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *out</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-face-collect-unicodes.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>face</p></td>
+<td class="parameter_description"><p>font face.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>out</p></td>
+<td class="parameter_description"><p>set to add Unicode characters covered by <em class="parameter"><code>face</code></em>
+to.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: <a class="link" href="api-index-1-9-0.html#api-index-1.9.0">1.9.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-face-collect-variation-selectors"></a><h3>hb_face_collect_variation_selectors ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_face_collect_variation_selectors (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *out</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-face-collect-variation-selectors.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>face</p></td>
+<td class="parameter_description"><p>font face.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>out</p></td>
+<td class="parameter_description"><p>set to add Variation Selector characters covered by <em class="parameter"><code>face</code></em>
+to.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: <a class="link" href="api-index-1-9-0.html#api-index-1.9.0">1.9.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-face-collect-variation-unicodes"></a><h3>hb_face_collect_variation_unicodes ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_face_collect_variation_unicodes (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> variation_selector</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *out</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-face-collect-variation-unicodes.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>face</p></td>
+<td class="parameter_description"><p>font face.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>out</p></td>
+<td class="parameter_description"><p>set to add Unicode characters for <em class="parameter"><code>variation_selector</code></em>
+covered by <em class="parameter"><code>face</code></em>
+to.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: <a class="link" href="api-index-1-9-0.html#api-index-1.9.0">1.9.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-face-builder-create"></a><h3>hb_face_builder_create ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="returnvalue">hb_face_t</span></a> *
+hb_face_builder_create (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p>Creates a <a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> that can be used with <a class="link" href="harfbuzz-hb-face.html#hb-face-builder-add-table" title="hb_face_builder_add_table ()"><code class="function">hb_face_builder_add_table()</code></a>.
+After tables are added to the face, it can be compiled to a binary
+font file by calling <a class="link" href="harfbuzz-hb-face.html#hb-face-reference-blob" title="hb_face_reference_blob ()"><code class="function">hb_face_reference_blob()</code></a>.</p>
+<div class="refsect3">
+<a name="hb-face-builder-create.returns"></a><h4>Returns</h4>
+<p> New face. </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-1-9-0.html#api-index-1.9.0">1.9.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-face-builder-add-table"></a><h3>hb_face_builder_add_table ()</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_face_builder_add_table (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> tag</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t"><span class="type">hb_blob_t</span></a> *blob</code></em>);</pre>
+<p>Add table for <em class="parameter"><code>tag</code></em>
+ with data provided by <em class="parameter"><code>blob</code></em>
+ to the face. <em class="parameter"><code>face</code></em>
+ must
+be created using <a class="link" href="harfbuzz-hb-face.html#hb-face-builder-create" title="hb_face_builder_create ()"><code class="function">hb_face_builder_create()</code></a>.</p>
+<p class="since">Since: <a class="link" href="api-index-1-9-0.html#api-index-1.9.0">1.9.0</a></p>
+</div>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-face.other_details"></a><h2>Types and Values</h2>
@@ -649,6 +862,6 @@ hb_face_set_user_data (<em class="parameter"><code><a class="link" href="harfbuz
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-font.html b/docs/html/harfbuzz-hb-font.html
index 21e08e2..10c7d9e 100644
--- a/docs/html/harfbuzz-hb-font.html
+++ b/docs/html/harfbuzz-hb-font.html
@@ -5,10 +5,10 @@
<title>hb-font: 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="ch08.html" title="HarfBuzz API">
+<link rel="up" href="ch09.html" title="Core API">
<link rel="prev" href="harfbuzz-hb-face.html" title="hb-face">
-<link rel="next" href="harfbuzz-Shaping.html" title="Shaping">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="next" href="harfbuzz-hb-map.html" title="hb-map">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,16 +19,16 @@
<a href="#harfbuzz-hb-font.object-hierarchy" class="shortcut">Object Hierarchy</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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="u" href="ch09.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="harfbuzz-hb-face.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-Shaping.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-map.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-font"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-font.top_of_page"></a>hb-font</span></h2>
-<p>hb-font</p>
+<p>hb-font — Font objects</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -165,7 +165,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-kerning-func" title="hb_font_funcs_set_glyph_h_kerning_func ()">hb_font_funcs_set_glyph_h_kerning_func</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-advances-func" title="hb_font_funcs_set_glyph_h_advances_func ()">hb_font_funcs_set_glyph_h_advances_func</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -197,7 +197,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-kerning-func" title="hb_font_funcs_set_glyph_v_kerning_func ()">hb_font_funcs_set_glyph_v_kerning_func</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-advances-func" title="hb_font_funcs_set_glyph_v_advances_func ()">hb_font_funcs_set_glyph_v_advances_func</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -218,6 +218,14 @@
</tr>
<tr>
<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-set-nominal-glyphs-func" title="hb_font_funcs_set_nominal_glyphs_func ()">hb_font_funcs_set_nominal_glyphs_func</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">
@@ -274,6 +282,22 @@
</tr>
<tr>
<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-advances-for-direction" title="hb_font_get_glyph_advances_for_direction ()">hb_font_get_glyph_advances_for_direction</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-advances-func-t" title="hb_font_get_glyph_advances_func_t ()">*hb_font_get_glyph_advances_func_t</a><span class="c_punctuation">)</span> <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">
@@ -346,10 +370,10 @@
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="returnvalue">hb_position_t</span></a>
+<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-h-kerning" title="hb_font_get_glyph_h_kerning ()">hb_font_get_glyph_h_kerning</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-h-advances" title="hb_font_get_glyph_h_advances ()">hb_font_get_glyph_h_advances</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -362,22 +386,6 @@
</tr>
<tr>
<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-kerning-for-direction" title="hb_font_get_glyph_kerning_for_direction ()">hb_font_get_glyph_kerning_for_direction</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="returnvalue">hb_position_t</span></a>
-</td>
-<td class="function_name">
-<span class="c_punctuation">(</span><a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-kerning-func-t" title="hb_font_get_glyph_kerning_func_t ()">*hb_font_get_glyph_kerning_func_t</a><span class="c_punctuation">)</span> <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">
@@ -418,10 +426,10 @@
</tr>
<tr>
<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="returnvalue">hb_position_t</span></a>
+<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-v-kerning" title="hb_font_get_glyph_v_kerning ()">hb_font_get_glyph_v_kerning</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-v-advances" title="hb_font_get_glyph_v_advances ()">hb_font_get_glyph_v_advances</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -740,7 +748,7 @@
</tr>
<tr>
<td class="typedef_keyword">typedef</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-h-kerning-func-t" title="hb_font_get_glyph_h_kerning_func_t">hb_font_get_glyph_h_kerning_func_t</a></td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-h-advances-func-t" title="hb_font_get_glyph_h_advances_func_t">hb_font_get_glyph_h_advances_func_t</a></td>
</tr>
<tr>
<td class="typedef_keyword">typedef</td>
@@ -752,7 +760,7 @@
</tr>
<tr>
<td class="typedef_keyword">typedef</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-v-kerning-func-t" title="hb_font_get_glyph_v_kerning_func_t">hb_font_get_glyph_v_kerning_func_t</a></td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-v-advances-func-t" title="hb_font_get_glyph_v_advances_func_t">hb_font_get_glyph_v_advances_func_t</a></td>
</tr>
<tr>
<td class="typedef_keyword">typedef</td>
@@ -779,13 +787,22 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-font.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
<span class="lineart">├──</span> hb_font_funcs_t
<span class="lineart">╰──</span> hb_font_t
</pre>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-font.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-font.description"></a><h2>Description</h2>
+<p>Font objects represent a font face at a certain size and other
+parameters (pixels per EM, points per EM, variation settings.)
+Fonts are created from font faces, and are used as input to
+<a class="link" href="harfbuzz-hb-shape.html#hb-shape" title="hb_shape ()"><code class="function">hb_shape()</code></a> among other things.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-font.functions_details"></a><h2>Functions</h2>
@@ -1182,15 +1199,15 @@ hb_font_funcs_set_glyph_h_advance_func
</div>
<hr>
<div class="refsect2">
-<a name="hb-font-funcs-set-glyph-h-kerning-func"></a><h3>hb_font_funcs_set_glyph_h_kerning_func ()</h3>
+<a name="hb-font-funcs-set-glyph-h-advances-func"></a><h3>hb_font_funcs_set_glyph_h_advances_func ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_font_funcs_set_glyph_h_kerning_func
+hb_font_funcs_set_glyph_h_advances_func
(<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t"><span class="type">hb_font_funcs_t</span></a> *ffuncs</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-h-kerning-func-t" title="hb_font_get_glyph_h_kerning_func_t"><span class="type">hb_font_get_glyph_h_kerning_func_t</span></a> func</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-h-advances-func-t" title="hb_font_get_glyph_h_advances_func_t"><span class="type">hb_font_get_glyph_h_advances_func_t</span></a> func</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>
<div class="refsect3">
-<a name="hb-font-funcs-set-glyph-h-kerning-func.parameters"></a><h4>Parameters</h4>
+<a name="hb-font-funcs-set-glyph-h-advances-func.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1211,7 +1228,7 @@ hb_font_funcs_set_glyph_h_kerning_func
</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>
+<p class="since">Since: <a class="link" href="api-index-1-8-6.html#api-index-1.8.6">1.8.6</a></p>
</div>
<hr>
<div class="refsect2">
@@ -1312,15 +1329,15 @@ hb_font_funcs_set_glyph_v_advance_func
</div>
<hr>
<div class="refsect2">
-<a name="hb-font-funcs-set-glyph-v-kerning-func"></a><h3>hb_font_funcs_set_glyph_v_kerning_func ()</h3>
+<a name="hb-font-funcs-set-glyph-v-advances-func"></a><h3>hb_font_funcs_set_glyph_v_advances_func ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_font_funcs_set_glyph_v_kerning_func
+hb_font_funcs_set_glyph_v_advances_func
(<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t"><span class="type">hb_font_funcs_t</span></a> *ffuncs</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-v-kerning-func-t" title="hb_font_get_glyph_v_kerning_func_t"><span class="type">hb_font_get_glyph_v_kerning_func_t</span></a> func</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-get-glyph-v-advances-func-t" title="hb_font_get_glyph_v_advances_func_t"><span class="type">hb_font_get_glyph_v_advances_func_t</span></a> func</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>
<div class="refsect3">
-<a name="hb-font-funcs-set-glyph-v-kerning-func.parameters"></a><h4>Parameters</h4>
+<a name="hb-font-funcs-set-glyph-v-advances-func.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1341,7 +1358,7 @@ hb_font_funcs_set_glyph_v_kerning_func
</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>
+<p class="since">Since: <a class="link" href="api-index-1-8-6.html#api-index-1.8.6">1.8.6</a></p>
</div>
<hr>
<div class="refsect2">
@@ -1409,6 +1426,38 @@ hb_font_funcs_set_nominal_glyph_func (<em class="parameter"><code><a class="link
</div>
<hr>
<div class="refsect2">
+<a name="hb-font-funcs-set-nominal-glyphs-func"></a><h3>hb_font_funcs_set_nominal_glyphs_func ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_font_funcs_set_nominal_glyphs_func (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t"><span class="type">hb_font_funcs_t</span></a> *ffuncs</code></em>,
+ <em class="parameter"><code><span class="type">hb_font_get_nominal_glyphs_func_t</span> func</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>
+<div class="refsect3">
+<a name="hb-font-funcs-set-nominal-glyphs-func.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>ffuncs</p></td>
+<td class="parameter_description"><p>font functions.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>func</p></td>
+<td class="parameter_description"><p>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
<a name="hb-font-funcs-set-user-data"></a><h3>hb_font_funcs_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_font_funcs_set_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t"><span class="type">hb_font_funcs_t</span></a> *ffuncs</code></em>,
@@ -1587,6 +1636,48 @@ hb_font_get_glyph_advance_for_direction
</div>
<hr>
<div class="refsect2">
+<a name="hb-font-get-glyph-advances-for-direction"></a><h3>hb_font_get_glyph_advances_for_direction ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_font_get_glyph_advances_for_direction
+ (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> direction</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> count</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *first_glyph</code></em>,
+ <em class="parameter"><code><span class="type">unsigned </span> glyph_stride</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *first_advance</code></em>,
+ <em class="parameter"><code><span class="type">unsigned </span> advance_stride</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-font-get-glyph-advances-for-direction.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>font</p></td>
+<td class="parameter_description"><p>a font.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since: <a class="link" href="api-index-1-8-6.html#api-index-1.8.6">1.8.6</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-font-get-glyph-advances-func-t"></a><h3>hb_font_get_glyph_advances_func_t ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+<span class="c_punctuation">(</span>*hb_font_get_glyph_advances_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *font_data</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> count</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *first_glyph</code></em>,
+ <em class="parameter"><code><span class="type">unsigned </span> glyph_stride</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *first_advance</code></em>,
+ <em class="parameter"><code><span class="type">unsigned </span> advance_stride</code></em>,
+ <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
<a name="hb-font-get-glyph-contour-point"></a><h3>hb_font_get_glyph_contour_point ()</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_font_get_glyph_contour_point (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
@@ -1820,13 +1911,16 @@ hb_font_get_glyph_h_advance (<em class="parameter"><code><a class="link" href="h
</div>
<hr>
<div class="refsect2">
-<a name="hb-font-get-glyph-h-kerning"></a><h3>hb_font_get_glyph_h_kerning ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="returnvalue">hb_position_t</span></a>
-hb_font_get_glyph_h_kerning (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> left_glyph</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> right_glyph</code></em>);</pre>
+<a name="hb-font-get-glyph-h-advances"></a><h3>hb_font_get_glyph_h_advances ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_font_get_glyph_h_advances (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> count</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *first_glyph</code></em>,
+ <em class="parameter"><code><span class="type">unsigned </span> glyph_stride</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *first_advance</code></em>,
+ <em class="parameter"><code><span class="type">unsigned </span> advance_stride</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-glyph-h-kerning.parameters"></a><h4>Parameters</h4>
+<a name="hb-font-get-glyph-h-advances.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -1840,7 +1934,7 @@ hb_font_get_glyph_h_kerning (<em class="parameter"><code><a class="link" href="h
</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>
+<p class="since">Since: <a class="link" href="api-index-1-8-6.html#api-index-1.8.6">1.8.6</a></p>
</div>
<hr>
<div class="refsect2">
@@ -1881,56 +1975,6 @@ hb_font_get_glyph_h_origin (<em class="parameter"><code><a class="link" href="ha
</div>
<hr>
<div class="refsect2">
-<a name="hb-font-get-glyph-kerning-for-direction"></a><h3>hb_font_get_glyph_kerning_for_direction ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_font_get_glyph_kerning_for_direction
- (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> first_glyph</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> second_glyph</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> direction</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *x</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *y</code></em>);</pre>
-<div class="refsect3">
-<a name="hb-font-get-glyph-kerning-for-direction.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>font</p></td>
-<td class="parameter_description"><p>a font.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>x</p></td>
-<td class="parameter_description"><p>. </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>
-<tr>
-<td class="parameter_name"><p>y</p></td>
-<td class="parameter_description"><p>. </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>
-<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-font-get-glyph-kerning-func-t"></a><h3>hb_font_get_glyph_kerning_func_t ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="returnvalue">hb_position_t</span></a>
-<span class="c_punctuation">(</span>*hb_font_get_glyph_kerning_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><span class="type">void</span> *font_data</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> first_glyph</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> second_glyph</code></em>,
- <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
<a name="hb-font-get-glyph-name"></a><h3>hb_font_get_glyph_name ()</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_font_get_glyph_name (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
@@ -2047,13 +2091,16 @@ hb_font_get_glyph_v_advance (<em class="parameter"><code><a class="link" href="h
</div>
<hr>
<div class="refsect2">
-<a name="hb-font-get-glyph-v-kerning"></a><h3>hb_font_get_glyph_v_kerning ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="returnvalue">hb_position_t</span></a>
-hb_font_get_glyph_v_kerning (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> top_glyph</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> bottom_glyph</code></em>);</pre>
+<a name="hb-font-get-glyph-v-advances"></a><h3>hb_font_get_glyph_v_advances ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_font_get_glyph_v_advances (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> count</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *first_glyph</code></em>,
+ <em class="parameter"><code><span class="type">unsigned </span> glyph_stride</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> *first_advance</code></em>,
+ <em class="parameter"><code><span class="type">unsigned </span> advance_stride</code></em>);</pre>
<div class="refsect3">
-<a name="hb-font-get-glyph-v-kerning.parameters"></a><h4>Parameters</h4>
+<a name="hb-font-get-glyph-v-advances.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
@@ -2067,7 +2114,7 @@ hb_font_get_glyph_v_kerning (<em class="parameter"><code><a class="link" href="h
</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>
+<p class="since">Since: <a class="link" href="api-index-1-8-6.html#api-index-1.8.6">1.8.6</a></p>
</div>
<hr>
<div class="refsect2">
@@ -2653,7 +2700,8 @@ hb_font_set_ppem (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
<pre class="programlisting"><span class="returnvalue">void</span>
hb_font_set_ptem (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
<em class="parameter"><code><span class="type">float</span> ptem</code></em>);</pre>
-<p>Sets "point size" of the font.</p>
+<p>Sets "point size" of the font. Set to 0 to unset.</p>
+<p>There are 72 points in an inch.</p>
<div class="refsect3">
<a name="hb-font-set-ptem.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2662,11 +2710,18 @@ hb_font_set_ptem (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
-<tbody><tr>
+<tbody>
+<tr>
<td class="parameter_name"><p>font</p></td>
<td class="parameter_description"><p>a font.</p></td>
<td class="parameter_annotations"> </td>
-</tr></tbody>
+</tr>
+<tr>
+<td class="parameter_name"><p>ptem</p></td>
+<td class="parameter_description"><p>font size in points.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="api-index-1-6-0.html#api-index-1.6.0">1.6.0</a></p>
@@ -2893,11 +2948,18 @@ hb_font_get_extents_for_direction (<em class="parameter"><code><a class="link" h
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
-<tbody><tr>
+<tbody>
+<tr>
<td class="parameter_name"><p>font</p></td>
<td class="parameter_description"><p>a font.</p></td>
<td class="parameter_annotations"> </td>
-</tr></tbody>
+</tr>
+<tr>
+<td class="parameter_name"><p>extents</p></td>
+<td class="parameter_description"><p>. </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>
<p class="since">Since: <a class="link" href="api-index-1-1-3.html#api-index-1.1.3">1.1.3</a></p>
@@ -2908,7 +2970,7 @@ hb_font_get_extents_for_direction (<em class="parameter"><code><a class="link" h
<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>
<span class="c_punctuation">(</span>*hb_font_get_font_extents_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
<em class="parameter"><code><span class="type">void</span> *font_data</code></em>,
- <em class="parameter"><code><span class="type">hb_font_extents_t</span> *metrics</code></em>,
+ <em class="parameter"><code><span class="type">hb_font_extents_t</span> *extents</code></em>,
<em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
</div>
<hr>
@@ -2987,8 +3049,8 @@ hb_font_get_v_extents (<em class="parameter"><code><a class="link" href="harfbuz
</div>
<hr>
<div class="refsect2">
-<a name="hb-font-get-glyph-h-kerning-func-t"></a><h3>hb_font_get_glyph_h_kerning_func_t</h3>
-<pre class="programlisting">typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_h_kerning_func_t;
+<a name="hb-font-get-glyph-h-advances-func-t"></a><h3>hb_font_get_glyph_h_advances_func_t</h3>
+<pre class="programlisting">typedef hb_font_get_glyph_advances_func_t hb_font_get_glyph_h_advances_func_t;
</pre>
</div>
<hr>
@@ -3005,8 +3067,8 @@ hb_font_get_v_extents (<em class="parameter"><code><a class="link" href="harfbuz
</div>
<hr>
<div class="refsect2">
-<a name="hb-font-get-glyph-v-kerning-func-t"></a><h3>hb_font_get_glyph_v_kerning_func_t</h3>
-<pre class="programlisting">typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_v_kerning_func_t;
+<a name="hb-font-get-glyph-v-advances-func-t"></a><h3>hb_font_get_glyph_v_advances_func_t</h3>
+<pre class="programlisting">typedef hb_font_get_glyph_advances_func_t hb_font_get_glyph_v_advances_func_t;
</pre>
</div>
<hr>
@@ -3046,6 +3108,6 @@ hb_font_get_v_extents (<em class="parameter"><code><a class="link" href="harfbuz
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-ft.html b/docs/html/harfbuzz-hb-ft.html
index c2ad492..79f3331 100644
--- a/docs/html/harfbuzz-hb-ft.html
+++ b/docs/html/harfbuzz-hb-ft.html
@@ -5,10 +5,10 @@
<title>hb-ft: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-icu.html" title="hb-icu">
-<link rel="next" href="harfbuzz-hb-graphite2.html" title="hb-graphite2">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch12.html" title="Integration API">
+<link rel="prev" href="harfbuzz-hb-coretext.html" title="hb-coretext">
+<link rel="next" href="harfbuzz-hb-glib.html" title="hb-glib">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,16 +18,16 @@
<a href="#harfbuzz-hb-ft.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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-icu.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-graphite2.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></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="harfbuzz-hb-coretext.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-glib.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-ft"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-ft.top_of_page"></a>hb-ft</span></h2>
-<p>hb-ft</p>
+<p>hb-ft — FreeType integration</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -123,7 +123,14 @@
</table></div>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-ft.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb-ft.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-ft.description"></a><h2>Description</h2>
+<p>Functions for using HarfBuzz with the FreeType library to provide face and
+font data.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-ft.functions_details"></a><h2>Functions</h2>
@@ -257,6 +264,6 @@ hb_ft_font_set_funcs (<em class="parameter"><code><a class="link" href="harfbuzz
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-glib.html b/docs/html/harfbuzz-hb-glib.html
index 5db6131..b4f56a4 100644
--- a/docs/html/harfbuzz-hb-glib.html
+++ b/docs/html/harfbuzz-hb-glib.html
@@ -5,10 +5,10 @@
<title>hb-glib: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-shape-plan.html" title="hb-shape-plan">
-<link rel="next" href="harfbuzz-hb-icu.html" title="hb-icu">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch12.html" title="Integration API">
+<link rel="prev" href="harfbuzz-hb-ft.html" title="hb-ft">
+<link rel="next" href="harfbuzz-hb-gobject.html" title="hb-gobject">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,16 +18,16 @@
<a href="#harfbuzz-hb-glib.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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-shape-plan.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-icu.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></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="harfbuzz-hb-ft.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-gobject.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-glib"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-glib.top_of_page"></a>hb-glib</span></h2>
-<p>hb-glib</p>
+<p>hb-glib — GLib integration</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -75,7 +75,13 @@
</table></div>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-glib.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb-glib.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-glib.description"></a><h2>Description</h2>
+<p>Functions for using HarfBuzz with the GLib library to provide Unicode data.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-glib.functions_details"></a><h2>Functions</h2>
@@ -109,6 +115,6 @@ hb_glib_blob_create (<em class="parameter"><code><span class="type">GBytes</span
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-gobject.html b/docs/html/harfbuzz-hb-gobject.html
index e42ad96..9e1a2a1 100644
--- a/docs/html/harfbuzz-hb-gobject.html
+++ b/docs/html/harfbuzz-hb-gobject.html
@@ -5,10 +5,10 @@
<title>hb-gobject: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-coretext.html" title="hb-coretext">
-<link rel="next" href="object-tree.html" title="Object Hierarchy">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch12.html" title="Integration API">
+<link rel="prev" href="harfbuzz-hb-glib.html" title="hb-glib">
+<link rel="next" href="harfbuzz-hb-graphite2.html" title="hb-graphite2">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,16 +18,16 @@
<a href="#harfbuzz-hb-gobject.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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-coretext.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="object-tree.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></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="harfbuzz-hb-glib.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-graphite2.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-gobject"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-gobject.top_of_page"></a>hb-gobject</span></h2>
-<p>hb-gobject</p>
+<p>hb-gobject — GObject integration</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -140,6 +140,14 @@
<span class="returnvalue">GType</span>
</td>
<td class="function_name">
+<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-map-get-type" title="hb_gobject_map_get_type ()">hb_gobject_map_get_type</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">GType</span>
+</td>
+<td class="function_name">
<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-memory-mode-get-type" title="hb_gobject_memory_mode_get_type ()">hb_gobject_memory_mode_get_type</a> <span class="c_punctuation">()</span>
</td>
</tr>
@@ -148,6 +156,14 @@
<span class="returnvalue">GType</span>
</td>
<td class="function_name">
+<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-ot-color-palette-flags-get-type" title="hb_gobject_ot_color_palette_flags_get_type ()">hb_gobject_ot_color_palette_flags_get_type</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">GType</span>
+</td>
+<td class="function_name">
<a class="link" href="harfbuzz-hb-gobject.html#hb-gobject-ot-layout-glyph-class-get-type" title="hb_gobject_ot_layout_glyph_class_get_type ()">hb_gobject_ot_layout_glyph_class_get_type</a> <span class="c_punctuation">()</span>
</td>
</tr>
@@ -348,10 +364,18 @@
</tr>
<tr>
<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-MAP:CAPS" title="HB_GOBJECT_TYPE_MAP">HB_GOBJECT_TYPE_MAP</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-MEMORY-MODE:CAPS" title="HB_GOBJECT_TYPE_MEMORY_MODE">HB_GOBJECT_TYPE_MEMORY_MODE</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-OT-COLOR-PALETTE-FLAGS:CAPS" title="HB_GOBJECT_TYPE_OT_COLOR_PALETTE_FLAGS">HB_GOBJECT_TYPE_OT_COLOR_PALETTE_FLAGS</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-OT-LAYOUT-GLYPH-CLASS:CAPS" title="HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS">HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS</a></td>
</tr>
<tr>
@@ -426,7 +450,14 @@
</table></div>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-gobject.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb-gobject.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-gobject.description"></a><h2>Description</h2>
+<p>Functions for using HarfBuzz with the GObject library to provide
+type data.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-gobject.functions_details"></a><h2>Functions</h2>
@@ -441,19 +472,19 @@ hb_gobject_blob_get_type (<em class="parameter"><code><span class="type">void</s
<a name="hb-gobject-buffer-content-type-get-type"></a><h3>hb_gobject_buffer_content_type_get_type ()</h3>
<pre class="programlisting"><span class="returnvalue">GType</span>
hb_gobject_buffer_content_type_get_type
- (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+ ();</pre>
</div>
<hr>
<div class="refsect2">
<a name="hb-gobject-buffer-diff-flags-get-type"></a><h3>hb_gobject_buffer_diff_flags_get_type ()</h3>
<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_buffer_diff_flags_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+hb_gobject_buffer_diff_flags_get_type ();</pre>
</div>
<hr>
<div class="refsect2">
<a name="hb-gobject-buffer-flags-get-type"></a><h3>hb_gobject_buffer_flags_get_type ()</h3>
<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_buffer_flags_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+hb_gobject_buffer_flags_get_type ();</pre>
</div>
<hr>
<div class="refsect2">
@@ -467,20 +498,20 @@ hb_gobject_buffer_get_type (<em class="parameter"><code><span class="type">void<
<a name="hb-gobject-buffer-serialize-flags-get-type"></a><h3>hb_gobject_buffer_serialize_flags_get_type ()</h3>
<pre class="programlisting"><span class="returnvalue">GType</span>
hb_gobject_buffer_serialize_flags_get_type
- (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+ ();</pre>
</div>
<hr>
<div class="refsect2">
<a name="hb-gobject-buffer-serialize-format-get-type"></a><h3>hb_gobject_buffer_serialize_format_get_type ()</h3>
<pre class="programlisting"><span class="returnvalue">GType</span>
hb_gobject_buffer_serialize_format_get_type
- (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+ ();</pre>
</div>
<hr>
<div class="refsect2">
<a name="hb-gobject-direction-get-type"></a><h3>hb_gobject_direction_get_type ()</h3>
<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_direction_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+hb_gobject_direction_get_type ();</pre>
</div>
<hr>
<div class="refsect2">
@@ -507,26 +538,39 @@ hb_gobject_font_get_type (<em class="parameter"><code><span class="type">void</s
<div class="refsect2">
<a name="hb-gobject-glyph-flags-get-type"></a><h3>hb_gobject_glyph_flags_get_type ()</h3>
<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_glyph_flags_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+hb_gobject_glyph_flags_get_type ();</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-gobject-map-get-type"></a><h3>hb_gobject_map_get_type ()</h3>
+<pre class="programlisting"><span class="returnvalue">GType</span>
+hb_gobject_map_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
</div>
<hr>
<div class="refsect2">
<a name="hb-gobject-memory-mode-get-type"></a><h3>hb_gobject_memory_mode_get_type ()</h3>
<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_memory_mode_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+hb_gobject_memory_mode_get_type ();</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-gobject-ot-color-palette-flags-get-type"></a><h3>hb_gobject_ot_color_palette_flags_get_type ()</h3>
+<pre class="programlisting"><span class="returnvalue">GType</span>
+hb_gobject_ot_color_palette_flags_get_type
+ ();</pre>
</div>
<hr>
<div class="refsect2">
<a name="hb-gobject-ot-layout-glyph-class-get-type"></a><h3>hb_gobject_ot_layout_glyph_class_get_type ()</h3>
<pre class="programlisting"><span class="returnvalue">GType</span>
hb_gobject_ot_layout_glyph_class_get_type
- (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+ ();</pre>
</div>
<hr>
<div class="refsect2">
<a name="hb-gobject-ot-math-constant-get-type"></a><h3>hb_gobject_ot_math_constant_get_type ()</h3>
<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_ot_math_constant_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+hb_gobject_ot_math_constant_get_type ();</pre>
</div>
<hr>
<div class="refsect2">
@@ -540,7 +584,7 @@ hb_gobject_ot_math_glyph_part_get_type
<a name="hb-gobject-ot-math-glyph-part-flags-get-type"></a><h3>hb_gobject_ot_math_glyph_part_flags_get_type ()</h3>
<pre class="programlisting"><span class="returnvalue">GType</span>
hb_gobject_ot_math_glyph_part_flags_get_type
- (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+ ();</pre>
</div>
<hr>
<div class="refsect2">
@@ -553,13 +597,13 @@ hb_gobject_ot_math_glyph_variant_get_type
<div class="refsect2">
<a name="hb-gobject-ot-math-kern-get-type"></a><h3>hb_gobject_ot_math_kern_get_type ()</h3>
<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_ot_math_kern_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+hb_gobject_ot_math_kern_get_type ();</pre>
</div>
<hr>
<div class="refsect2">
<a name="hb-gobject-script-get-type"></a><h3>hb_gobject_script_get_type ()</h3>
<pre class="programlisting"><span class="returnvalue">GType</span>
-hb_gobject_script_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+hb_gobject_script_get_type ();</pre>
</div>
<hr>
<div class="refsect2">
@@ -572,7 +616,7 @@ hb_gobject_shape_plan_get_type (<em class="parameter"><code><span class="type">v
<a name="hb-gobject-unicode-combining-class-get-type"></a><h3>hb_gobject_unicode_combining_class_get_type ()</h3>
<pre class="programlisting"><span class="returnvalue">GType</span>
hb_gobject_unicode_combining_class_get_type
- (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+ ();</pre>
</div>
<hr>
<div class="refsect2">
@@ -586,14 +630,14 @@ hb_gobject_unicode_funcs_get_type (<em class="parameter"><code><span class="type
<a name="hb-gobject-unicode-general-category-get-type"></a><h3>hb_gobject_unicode_general_category_get_type ()</h3>
<pre class="programlisting"><span class="returnvalue">GType</span>
hb_gobject_unicode_general_category_get_type
- (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+ ();</pre>
</div>
<hr>
<div class="refsect2">
<a name="hb-gobject-buffer-cluster-level-get-type"></a><h3>hb_gobject_buffer_cluster_level_get_type ()</h3>
<pre class="programlisting"><span class="returnvalue">GType</span>
hb_gobject_buffer_cluster_level_get_type
- (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+ ();</pre>
</div>
<hr>
<div class="refsect2">
@@ -708,12 +752,24 @@ hb_gobject_user_data_key_get_type (<em class="parameter"><code><span class="type
</div>
<hr>
<div class="refsect2">
+<a name="HB-GOBJECT-TYPE-MAP:CAPS"></a><h3>HB_GOBJECT_TYPE_MAP</h3>
+<pre class="programlisting">#define HB_GOBJECT_TYPE_MAP (hb_gobject_map_get_type ())
+</pre>
+</div>
+<hr>
+<div class="refsect2">
<a name="HB-GOBJECT-TYPE-MEMORY-MODE:CAPS"></a><h3>HB_GOBJECT_TYPE_MEMORY_MODE</h3>
<pre class="programlisting">#define HB_GOBJECT_TYPE_MEMORY_MODE (hb_gobject_memory_mode_get_type ())
</pre>
</div>
<hr>
<div class="refsect2">
+<a name="HB-GOBJECT-TYPE-OT-COLOR-PALETTE-FLAGS:CAPS"></a><h3>HB_GOBJECT_TYPE_OT_COLOR_PALETTE_FLAGS</h3>
+<pre class="programlisting">#define HB_GOBJECT_TYPE_OT_COLOR_PALETTE_FLAGS (hb_gobject_ot_color_palette_flags_get_type ())
+</pre>
+</div>
+<hr>
+<div class="refsect2">
<a name="HB-GOBJECT-TYPE-OT-LAYOUT-GLYPH-CLASS:CAPS"></a><h3>HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS</h3>
<pre class="programlisting">#define HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS (hb_gobject_ot_layout_glyph_class_get_type ())
</pre>
@@ -823,6 +879,6 @@ hb_gobject_user_data_key_get_type (<em class="parameter"><code><span class="type
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-graphite2.html b/docs/html/harfbuzz-hb-graphite2.html
index 88904e5..2fdd621 100644
--- a/docs/html/harfbuzz-hb-graphite2.html
+++ b/docs/html/harfbuzz-hb-graphite2.html
@@ -5,10 +5,10 @@
<title>hb-graphite2: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-ft.html" title="hb-ft">
-<link rel="next" href="harfbuzz-hb-uniscribe.html" title="hb-uniscribe">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch12.html" title="Integration API">
+<link rel="prev" href="harfbuzz-hb-gobject.html" title="hb-gobject">
+<link rel="next" href="harfbuzz-hb-icu.html" title="hb-icu">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,16 +18,16 @@
<a href="#harfbuzz-hb-graphite2.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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-ft.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-uniscribe.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></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="harfbuzz-hb-gobject.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-icu.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-graphite2"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-graphite2.top_of_page"></a>hb-graphite2</span></h2>
-<p>hb-graphite2</p>
+<p>hb-graphite2 — Graphite2 integration</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -38,24 +38,14 @@
<col width="150px" class="functions_return">
<col class="functions_name">
</colgroup>
-<tbody>
-<tr>
+<tbody><tr>
<td class="function_type">
<span class="returnvalue">gr_face</span> *
</td>
<td class="function_name">
<a class="link" href="harfbuzz-hb-graphite2.html#hb-graphite2-face-get-gr-face" title="hb_graphite2_face_get_gr_face ()">hb_graphite2_face_get_gr_face</a> <span class="c_punctuation">()</span>
</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">gr_font</span> *
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-graphite2.html#hb-graphite2-font-get-gr-font" title="hb_graphite2_font_get_gr_font ()">hb_graphite2_font_get_gr_font</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-</tbody>
+</tr></tbody>
</table></div>
</div>
<div class="refsect1">
@@ -72,7 +62,13 @@
</table></div>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-graphite2.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb-graphite2.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-graphite2.description"></a><h2>Description</h2>
+<p>Functions for using HarfBuzz with the Graphite2 fonts.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-graphite2.functions_details"></a><h2>Functions</h2>
@@ -81,13 +77,6 @@
<pre class="programlisting"><span class="returnvalue">gr_face</span> *
hb_graphite2_face_get_gr_face (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
</div>
-<hr>
-<div class="refsect2">
-<a name="hb-graphite2-font-get-gr-font"></a><h3>hb_graphite2_font_get_gr_font ()</h3>
-<pre class="programlisting"><span class="returnvalue">gr_font</span> *
-hb_graphite2_font_get_gr_font (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>);</pre>
-<div class="warning"><p><code class="literal">hb_graphite2_font_get_gr_font</code> is deprecated and should not be used in newly-written code.</p></div>
-</div>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-graphite2.other_details"></a><h2>Types and Values</h2>
@@ -99,6 +88,6 @@ hb_graphite2_font_get_gr_font (<em class="parameter"><code><a class="link" href=
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-icu.html b/docs/html/harfbuzz-hb-icu.html
index 25a5cd6..68fa6aa 100644
--- a/docs/html/harfbuzz-hb-icu.html
+++ b/docs/html/harfbuzz-hb-icu.html
@@ -5,10 +5,10 @@
<title>hb-icu: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-glib.html" title="hb-glib">
-<link rel="next" href="harfbuzz-hb-ft.html" title="hb-ft">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch12.html" title="Integration API">
+<link rel="prev" href="harfbuzz-hb-graphite2.html" title="hb-graphite2">
+<link rel="next" href="harfbuzz-hb-uniscribe.html" title="hb-uniscribe">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,16 +18,16 @@
<a href="#harfbuzz-hb-icu.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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-glib.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-ft.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></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="harfbuzz-hb-graphite2.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-uniscribe.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-icu"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-icu.top_of_page"></a>hb-icu</span></h2>
-<p>hb-icu</p>
+<p>hb-icu — ICU integration</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -67,7 +67,13 @@
</table></div>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-icu.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb-icu.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-icu.description"></a><h2>Description</h2>
+<p>Functions for using HarfBuzz with the ICU library to provide Unicode data.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-icu.functions_details"></a><h2>Functions</h2>
@@ -94,6 +100,6 @@ hb_icu_script_to_script (<em class="parameter"><code><span class="type">UScriptC
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-map.html b/docs/html/harfbuzz-hb-map.html
new file mode 100644
index 0000000..d5f0e4b
--- /dev/null
+++ b/docs/html/harfbuzz-hb-map.html
@@ -0,0 +1,526 @@
+<!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-map: 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="ch09.html" title="Core API">
+<link rel="prev" href="harfbuzz-hb-font.html" title="hb-font">
+<link rel="next" href="harfbuzz-hb-set.html" title="hb-set">
+<meta name="generator" content="GTK-Doc V1.25 (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-map.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+ <a href="#harfbuzz-hb-map.object-hierarchy" class="shortcut">Object Hierarchy</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="ch09.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-font.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-set.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="harfbuzz-hb-map"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="harfbuzz-hb-map.top_of_page"></a>hb-map</span></h2>
+<p>hb-map — Object representing integer to integer mapping</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="harfbuzz-hb-map.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<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-map.html#hb-map-allocation-successful" title="hb_map_allocation_successful ()">hb_map_allocation_successful</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-map.html#hb-map-clear" title="hb_map_clear ()">hb_map_clear</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-map.html#hb-map-t"><span class="returnvalue">hb_map_t</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-map.html#hb-map-create" title="hb_map_create ()">hb_map_create</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-map.html#hb-map-del" title="hb_map_del ()">hb_map_del</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-map.html#hb-map-destroy" title="hb_map_destroy ()">hb_map_destroy</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="returnvalue">hb_codepoint_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-map.html#hb-map-get" title="hb_map_get ()">hb_map_get</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-map.html#hb-map-t"><span class="returnvalue">hb_map_t</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-map.html#hb-map-get-empty" title="hb_map_get_empty ()">hb_map_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-map.html#hb-map-get-population" title="hb_map_get_population ()">hb_map_get_population</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-map.html#hb-map-get-user-data" title="hb_map_get_user_data ()">hb_map_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-map.html#hb-map-has" title="hb_map_has ()">hb_map_has</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-map.html#hb-map-is-empty" title="hb_map_is_empty ()">hb_map_is_empty</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-map.html#hb-map-t"><span class="returnvalue">hb_map_t</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-map.html#hb-map-reference" title="hb_map_reference ()">hb_map_reference</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-map.html#hb-map-set" title="hb_map_set ()">hb_map_set</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-map.html#hb-map-set-user-data" title="hb_map_set_user_data ()">hb_map_set_user_data</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="hb-map-t"></a><div class="refsect1">
+<a name="harfbuzz-hb-map.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-map.html#HB-MAP-VALUE-INVALID:CAPS" title="HB_MAP_VALUE_INVALID">HB_MAP_VALUE_INVALID</a></td>
+</tr>
+<tr>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-map.html#hb-map-t">hb_map_t</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-map.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+ <span class="lineart">╰──</span> hb_map_t
+</pre>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-map.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb.h&gt;
+</pre>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-map.description"></a><h2>Description</h2>
+<p>Map objects are integer-to-integer hash-maps. Currently they are
+not used in the HarfBuzz public API, but are provided for client's
+use if desired.</p>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-map.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="hb-map-allocation-successful"></a><h3>hb_map_allocation_successful ()</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_map_allocation_successful (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-map.html#hb-map-t"><span class="type">hb_map_t</span></a> *map</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-map-allocation-successful.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>map</p></td>
+<td class="parameter_description"><p>a map.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-map-clear"></a><h3>hb_map_clear ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_map_clear (<em class="parameter"><code><a class="link" href="harfbuzz-hb-map.html#hb-map-t"><span class="type">hb_map_t</span></a> *map</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-map-clear.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>map</p></td>
+<td class="parameter_description"><p>a map.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-map-create"></a><h3>hb_map_create ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-map.html#hb-map-t"><span class="returnvalue">hb_map_t</span></a> *
+hb_map_create (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<p><span class="annotation">[Xconstructor]</span></p>
+<div class="refsect3">
+<a name="hb-map-create.returns"></a><h4>Returns</h4>
+<p>. </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-1-7-7.html#api-index-1.7.7">1.7.7</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-map-del"></a><h3>hb_map_del ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_map_del (<em class="parameter"><code><a class="link" href="harfbuzz-hb-map.html#hb-map-t"><span class="type">hb_map_t</span></a> *map</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> key</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-map-del.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>map</p></td>
+<td class="parameter_description"><p>a map.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-map-destroy"></a><h3>hb_map_destroy ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_map_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-map.html#hb-map-t"><span class="type">hb_map_t</span></a> *map</code></em>);</pre>
+<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-map-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>map</p></td>
+<td class="parameter_description"><p>a map.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-map-get"></a><h3>hb_map_get ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="returnvalue">hb_codepoint_t</span></a>
+hb_map_get (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-map.html#hb-map-t"><span class="type">hb_map_t</span></a> *map</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> key</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-map-get.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>map</p></td>
+<td class="parameter_description"><p>a map.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-map-get-empty"></a><h3>hb_map_get_empty ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-map.html#hb-map-t"><span class="returnvalue">hb_map_t</span></a> *
+hb_map_get_empty (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+<div class="refsect3">
+<a name="hb-map-get-empty.returns"></a><h4>Returns</h4>
+<p>. </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-1-7-7.html#api-index-1.7.7">1.7.7</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-map-get-population"></a><h3>hb_map_get_population ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">int</span>
+hb_map_get_population (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-map.html#hb-map-t"><span class="type">hb_map_t</span></a> *map</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-map-get-population.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>map</p></td>
+<td class="parameter_description"><p>a map.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-map-get-user-data"></a><h3>hb_map_get_user_data ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> *
+hb_map_get_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-map.html#hb-map-t"><span class="type">hb_map_t</span></a> *map</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>);</pre>
+<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-map-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>map</p></td>
+<td class="parameter_description"><p>a map.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-map-get-user-data.returns"></a><h4>Returns</h4>
+<p>. </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-1-7-7.html#api-index-1.7.7">1.7.7</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-map-has"></a><h3>hb_map_has ()</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_map_has (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-map.html#hb-map-t"><span class="type">hb_map_t</span></a> *map</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> key</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-map-has.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>map</p></td>
+<td class="parameter_description"><p>a map.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-map-is-empty"></a><h3>hb_map_is_empty ()</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_map_is_empty (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-map.html#hb-map-t"><span class="type">hb_map_t</span></a> *map</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-map-is-empty.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>map</p></td>
+<td class="parameter_description"><p>a map.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-map-reference"></a><h3>hb_map_reference ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-map.html#hb-map-t"><span class="returnvalue">hb_map_t</span></a> *
+hb_map_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb-map.html#hb-map-t"><span class="type">hb_map_t</span></a> *map</code></em>);</pre>
+<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-map-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>map</p></td>
+<td class="parameter_description"><p>a map.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-map-reference.returns"></a><h4>Returns</h4>
+<p>. </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-1-7-7.html#api-index-1.7.7">1.7.7</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-map-set"></a><h3>hb_map_set ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_map_set (<em class="parameter"><code><a class="link" href="harfbuzz-hb-map.html#hb-map-t"><span class="type">hb_map_t</span></a> *map</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> key</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> value</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-map-set.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>map</p></td>
+<td class="parameter_description"><p>a map.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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-map-set-user-data"></a><h3>hb_map_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_map_set_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-map.html#hb-map-t"><span class="type">hb_map_t</span></a> *map</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#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><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-map-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>map</p></td>
+<td class="parameter_description"><p>a map.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</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>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-map.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="HB-MAP-VALUE-INVALID:CAPS"></a><h3>HB_MAP_VALUE_INVALID</h3>
+<pre class="programlisting">#define HB_MAP_VALUE_INVALID ((hb_codepoint_t) -1)
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-map-t"></a><h3>hb_map_t</h3>
+<pre class="programlisting">typedef struct hb_map_t hb_map_t;
+</pre>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-ot-color.html b/docs/html/harfbuzz-hb-ot-color.html
new file mode 100644
index 0000000..c7bc734
--- /dev/null
+++ b/docs/html/harfbuzz-hb-ot-color.html
@@ -0,0 +1,723 @@
+<!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-ot-color: 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="ch10.html" title="OpenType API">
+<link rel="prev" href="ch10.html" title="OpenType API">
+<link rel="next" href="harfbuzz-hb-ot-font.html" title="hb-ot-font">
+<meta name="generator" content="GTK-Doc V1.25 (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-ot-color.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+ <a href="#harfbuzz-hb-ot-color.object-hierarchy" class="shortcut">Object Hierarchy</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="ch10.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="ch10.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-ot-font.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="harfbuzz-hb-ot-color"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="harfbuzz-hb-ot-color.top_of_page"></a>hb-ot-color</span></h2>
+<p>hb-ot-color — OpenType Color Fonts</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-color.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-ot-color.html#HB-COLOR:CAPS" title="HB_COLOR()">HB_COLOR</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-color-get-alpha" title="hb_color_get_alpha()">hb_color_get_alpha</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-color-get-blue" title="hb_color_get_blue()">hb_color_get_blue</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-color-get-green" title="hb_color_get_green()">hb_color_get_green</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-color-get-red" title="hb_color_get_red()">hb_color_get_red</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-ot-color.html#hb-ot-color-glyph-get-layers" title="hb_ot_color_glyph_get_layers ()">hb_ot_color_glyph_get_layers</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-blob.html#hb-blob-t"><span class="returnvalue">hb_blob_t</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-glyph-reference-png" title="hb_ot_color_glyph_reference_png ()">hb_ot_color_glyph_reference_png</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-blob.html#hb-blob-t"><span class="returnvalue">hb_blob_t</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-glyph-reference-svg" title="hb_ot_color_glyph_reference_svg ()">hb_ot_color_glyph_reference_svg</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-ot-color.html#hb-ot-color-has-layers" title="hb_ot_color_has_layers ()">hb_ot_color_has_layers</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-ot-color.html#hb-ot-color-has-palettes" title="hb_ot_color_has_palettes ()">hb_ot_color_has_palettes</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-ot-color.html#hb-ot-color-has-png" title="hb_ot_color_has_png ()">hb_ot_color_has_png</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-ot-color.html#hb-ot-color-has-svg" title="hb_ot_color_has_svg ()">hb_ot_color_has_svg</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t"><span class="returnvalue">hb_ot_name_id_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-color-get-name-id" title="hb_ot_color_palette_color_get_name_id ()">hb_ot_color_palette_color_get_name_id</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-ot-color.html#hb-ot-color-palette-get-colors" title="hb_ot_color_palette_get_colors ()">hb_ot_color_palette_get_colors</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-ot-color.html#hb-ot-color-palette-get-count" title="hb_ot_color_palette_get_count ()">hb_ot_color_palette_get_count</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-flags-t" title="enum hb_ot_color_palette_flags_t"><span class="returnvalue">hb_ot_color_palette_flags_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-get-flags" title="hb_ot_color_palette_get_flags ()">hb_ot_color_palette_get_flags</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t"><span class="returnvalue">hb_ot_name_id_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-get-name-id" title="hb_ot_color_palette_get_name_id ()">hb_ot_color_palette_get_name_id</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-color.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-ot-color.html#hb-color-t" title="hb_color_t">hb_color_t</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-flags-t" title="enum hb_ot_color_palette_flags_t">hb_ot_color_palette_flags_t</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-color.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GFlags</a>
+ <span class="lineart">╰──</span> hb_ot_color_palette_flags_t
+</pre>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-color.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb-ot.h&gt;
+</pre>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-color.description"></a><h2>Description</h2>
+<p>Functions for fetching color-font information from OpenType font faces.</p>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-color.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="HB-COLOR:CAPS"></a><h3>HB_COLOR()</h3>
+<pre class="programlisting">#define HB_COLOR(b,g,r,a) ((hb_color_t) HB_TAG ((b),(g),(r),(a)))
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-color-get-alpha"></a><h3>hb_color_get_alpha()</h3>
+<pre class="programlisting">#define hb_color_get_alpha(color) ((color) &amp; 0xFF)
+</pre>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-color-get-blue"></a><h3>hb_color_get_blue()</h3>
+<pre class="programlisting">#define hb_color_get_blue(color) (((color) &gt;&gt; 24) &amp; 0xFF)
+</pre>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-color-get-green"></a><h3>hb_color_get_green()</h3>
+<pre class="programlisting">#define hb_color_get_green(color) (((color) &gt;&gt; 16) &amp; 0xFF)
+</pre>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-color-get-red"></a><h3>hb_color_get_red()</h3>
+<pre class="programlisting">#define hb_color_get_red(color) (((color) &gt;&gt; 8) &amp; 0xFF)
+</pre>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-color-glyph-get-layers"></a><h3>hb_ot_color_glyph_get_layers ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">int</span>
+hb_ot_color_glyph_get_layers (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> glyph</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> start_offset</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *count</code></em>,
+ <em class="parameter"><code><span class="type">hb_ot_color_layer_t</span> *layers</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-ot-color-glyph-get-layers.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>face</p></td>
+<td class="parameter_description"><p>a font face.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>glyph</p></td>
+<td class="parameter_description"><p>a layered color glyph id.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>start_offset</p></td>
+<td class="parameter_description"><p>starting offset of layers.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>count</p></td>
+<td class="parameter_description"><p> gets number of layers available to be written on buffer
+and returns number of written layers. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<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>layers</p></td>
+<td class="parameter_description"><p> layers buffer to buffer. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=count][<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<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-ot-color-glyph-get-layers.returns"></a><h4>Returns</h4>
+<p> Total number of layers a layered color glyph have.</p>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-color-glyph-reference-png"></a><h3>hb_ot_color_glyph_reference_png ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t"><span class="returnvalue">hb_blob_t</span></a> *
+hb_ot_color_glyph_reference_png (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> glyph</code></em>);</pre>
+<p>Get PNG image for a glyph.</p>
+<div class="refsect3">
+<a name="hb-ot-color-glyph-reference-png.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>font</p></td>
+<td class="parameter_description"><p>a font object, not face. upem should be set on
+that font object if one wants to get optimal png blob, otherwise
+return the biggest one</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>glyph</p></td>
+<td class="parameter_description"><p>a glyph index.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-ot-color-glyph-reference-png.returns"></a><h4>Returns</h4>
+<p> respective PNG blob of the glyph, if available. </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-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-color-glyph-reference-svg"></a><h3>hb_ot_color_glyph_reference_svg ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t"><span class="returnvalue">hb_blob_t</span></a> *
+hb_ot_color_glyph_reference_svg (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> glyph</code></em>);</pre>
+<p>Get SVG document for a glyph. The blob may be either plain text or gzip-encoded.</p>
+<div class="refsect3">
+<a name="hb-ot-color-glyph-reference-svg.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>face</p></td>
+<td class="parameter_description"><p>a font face.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>glyph</p></td>
+<td class="parameter_description"><p>a svg glyph index.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-ot-color-glyph-reference-svg.returns"></a><h4>Returns</h4>
+<p> respective svg blob of the glyph, if available. </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-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-color-has-layers"></a><h3>hb_ot_color_has_layers ()</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_ot_color_has_layers (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-ot-color-has-layers.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>face</p></td>
+<td class="parameter_description"><p>a font face.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-ot-color-has-layers.returns"></a><h4>Returns</h4>
+<p> whether COLR table is available.</p>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-color-has-palettes"></a><h3>hb_ot_color_has_palettes ()</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_ot_color_has_palettes (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-ot-color-has-palettes.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>face</p></td>
+<td class="parameter_description"><p>a font face.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-ot-color-has-palettes.returns"></a><h4>Returns</h4>
+<p> whether CPAL table is available.</p>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-color-has-png"></a><h3>hb_ot_color_has_png ()</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_ot_color_has_png (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+<p>Check whether <em class="parameter"><code>face</code></em>
+ has PNG glyph images (either CBDT or sbix tables).</p>
+<p>Returns true if available, false otherwise.</p>
+<div class="refsect3">
+<a name="hb-ot-color-has-png.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>face</p></td>
+<td class="parameter_description"><p>a font face.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-color-has-svg"></a><h3>hb_ot_color_has_svg ()</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_ot_color_has_svg (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+<p>Check whether <em class="parameter"><code>face</code></em>
+ has SVG glyph images.</p>
+<p>Returns true if available, false otherwise.</p>
+<div class="refsect3">
+<a name="hb-ot-color-has-svg.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>face</p></td>
+<td class="parameter_description"><p>a font face.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-color-palette-color-get-name-id"></a><h3>hb_ot_color_palette_color_get_name_id ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t"><span class="returnvalue">hb_ot_name_id_t</span></a>
+hb_ot_color_palette_color_get_name_id (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> color_index</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-ot-color-palette-color-get-name-id.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>face</p></td>
+<td class="parameter_description"><p>a font face.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>color_index</p></td>
+<td class="parameter_description"><p>palette entry index.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-ot-color-palette-color-get-name-id.returns"></a><h4>Returns</h4>
+<p> Name ID associated with a palette entry, e.g. eye color</p>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-color-palette-get-colors"></a><h3>hb_ot_color_palette_get_colors ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">int</span>
+hb_ot_color_palette_get_colors (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> palette_index</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> start_offset</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *color_count</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-ot-color.html#hb-color-t" title="hb_color_t"><span class="type">hb_color_t</span></a> *colors</code></em>);</pre>
+<p>Retrieves the colors in a color palette.</p>
+<div class="refsect3">
+<a name="hb-ot-color-palette-get-colors.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>face</p></td>
+<td class="parameter_description"><p>a font face.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>palette_index</p></td>
+<td class="parameter_description"><p>the index of the color palette whose colors
+are being requested.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>start_offset</p></td>
+<td class="parameter_description"><p>the index of the first color being requested.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>color_count</p></td>
+<td class="parameter_description"><p> on input, how many colors
+can be maximally stored into the <em class="parameter"><code>colors</code></em>
+array;
+on output, how many colors were actually stored. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<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>colors</p></td>
+<td class="parameter_description"><p> an array of <a class="link" href="harfbuzz-hb-ot-color.html#hb-color-t" title="hb_color_t"><span class="type">hb_color_t</span></a> records. After calling
+this function, <em class="parameter"><code>colors</code></em>
+will be filled with
+the palette colors. If <em class="parameter"><code>colors</code></em>
+is NULL, the function
+will just return the number of total colors
+without storing any actual colors; this can be used
+for allocating a buffer of suitable size before calling
+<a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-get-colors" title="hb_ot_color_palette_get_colors ()"><code class="function">hb_ot_color_palette_get_colors()</code></a> a second time. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=color_count][<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<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-ot-color-palette-get-colors.returns"></a><h4>Returns</h4>
+<p> the total number of colors in the palette.</p>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-color-palette-get-count"></a><h3>hb_ot_color_palette_get_count ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">int</span>
+hb_ot_color_palette_get_count (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-ot-color-palette-get-count.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>face</p></td>
+<td class="parameter_description"><p>a font face.</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-ot-color-palette-get-count.returns"></a><h4>Returns</h4>
+<p> the number of color palettes in <em class="parameter"><code>face</code></em>
+, or zero if <em class="parameter"><code>face</code></em>
+has
+no colors.</p>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-color-palette-get-flags"></a><h3>hb_ot_color_palette_get_flags ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-ot-color.html#hb-ot-color-palette-flags-t" title="enum hb_ot_color_palette_flags_t"><span class="returnvalue">hb_ot_color_palette_flags_t</span></a>
+hb_ot_color_palette_get_flags (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> palette_index</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-ot-color-palette-get-flags.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>face</p></td>
+<td class="parameter_description"><p>a font face</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>palette_index</p></td>
+<td class="parameter_description"><p>the index of the color palette whose flags are being requested</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-ot-color-palette-get-flags.returns"></a><h4>Returns</h4>
+<p> the flags for the requested color palette.</p>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-color-palette-get-name-id"></a><h3>hb_ot_color_palette_get_name_id ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t"><span class="returnvalue">hb_ot_name_id_t</span></a>
+hb_ot_color_palette_get_name_id (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> palette_index</code></em>);</pre>
+<p>Retrieves the name id of a color palette. For example, a color font can
+have themed palettes like "Spring", "Summer", "Fall", and "Winter".</p>
+<div class="refsect3">
+<a name="hb-ot-color-palette-get-name-id.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>face</p></td>
+<td class="parameter_description"><p>a font face.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>palette_index</p></td>
+<td class="parameter_description"><p>the index of the color palette whose name is being requested.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-ot-color-palette-get-name-id.returns"></a><h4>Returns</h4>
+<p> an identifier within <em class="parameter"><code>face</code></em>
+'s <code class="literal">name</code> table.
+If the requested palette has no name the result is <span class="type">HB_OT_NAME_ID_INVALID</span>.</p>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-color.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="hb-color-t"></a><h3>hb_color_t</h3>
+<pre class="programlisting">typedef uint32_t hb_color_t;
+</pre>
+<p>Data type for holding color values.</p>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-color-palette-flags-t"></a><h3>enum hb_ot_color_palette_flags_t</h3>
+<div class="refsect3">
+<a name="hb-ot-color-palette-flags-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-OT-COLOR-PALETTE-FLAG-DEFAULT:CAPS"></a>HB_OT_COLOR_PALETTE_FLAG_DEFAULT</p></td>
+<td class="enum_member_description">
+<p>default indicating that there is nothing special
+ to note about a color palette.</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-OT-COLOR-PALETTE-FLAG-USABLE-WITH-LIGHT-BACKGROUND:CAPS"></a>HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_LIGHT_BACKGROUND</p></td>
+<td class="enum_member_description">
+<p>flag indicating that the color
+ palette is appropriate to use when displaying the font on a light background such as white.</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-OT-COLOR-PALETTE-FLAG-USABLE-WITH-DARK-BACKGROUND:CAPS"></a>HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_DARK_BACKGROUND</p></td>
+<td class="enum_member_description">
+<p>flag indicating that the color
+ palette is appropriate to use when displaying the font on a dark background such as black.</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-ot-font.html b/docs/html/harfbuzz-hb-ot-font.html
index f1254f5..02c7686 100644
--- a/docs/html/harfbuzz-hb-ot-font.html
+++ b/docs/html/harfbuzz-hb-ot-font.html
@@ -5,10 +5,10 @@
<title>hb-ot-font: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-ot-tag.html" title="hb-ot-tag">
-<link rel="next" href="harfbuzz-hb-ot-shape.html" title="hb-ot-shape">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch10.html" title="OpenType API">
+<link rel="prev" href="harfbuzz-hb-ot-color.html" title="hb-ot-color">
+<link rel="next" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,16 +18,16 @@
<a href="#harfbuzz-hb-ot-font.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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-ot-tag.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-ot-shape.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="u" href="ch10.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-ot-color.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-ot-layout.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-ot-font"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-ot-font.top_of_page"></a>hb-ot-font</span></h2>
-<p>hb-ot-font</p>
+<p>hb-ot-font — OpenType font implementation</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -49,7 +49,15 @@
</table></div>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-ot-font.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb-ot.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-ot-font.description"></a><h2>Description</h2>
+<p>Functions for using OpenType fonts with <a class="link" href="harfbuzz-hb-shape.html#hb-shape" title="hb_shape ()"><code class="function">hb_shape()</code></a>. Not that fonts returned
+by <a class="link" href="harfbuzz-hb-font.html#hb-font-create" title="hb_font_create ()"><code class="function">hb_font_create()</code></a> default to using these functions, so most clients would
+never need to call these functions directly.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-ot-font.functions_details"></a><h2>Functions</h2>
@@ -65,6 +73,6 @@ hb_ot_font_set_funcs (<em class="parameter"><code><a class="link" href="harfbuzz
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-ot-layout.html b/docs/html/harfbuzz-hb-ot-layout.html
index 4bab397..ce6c420 100644
--- a/docs/html/harfbuzz-hb-ot-layout.html
+++ b/docs/html/harfbuzz-hb-ot-layout.html
@@ -5,10 +5,10 @@
<title>hb-ot-layout: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-ot.html" title="hb-ot">
-<link rel="next" href="harfbuzz-hb-ot-tag.html" title="hb-ot-tag">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch10.html" title="OpenType API">
+<link rel="prev" href="harfbuzz-hb-ot-font.html" title="hb-ot-font">
+<link rel="next" href="harfbuzz-hb-ot-math.html" title="hb-ot-math">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,16 +19,16 @@
<a href="#harfbuzz-hb-ot-layout.object-hierarchy" class="shortcut">Object Hierarchy</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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-ot.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-ot-tag.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="u" href="ch10.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-ot-font.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-ot-math.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-ot-layout"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-ot-layout.top_of_page"></a>hb-ot-layout</span></h2>
-<p>hb-ot-layout</p>
+<p>hb-ot-layout — OpenType Layout</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -42,6 +42,38 @@
<tbody>
<tr>
<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="returnvalue">hb_language_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-tag-to-language" title="hb_ot_tag_to_language ()">hb_ot_tag_to_language</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-tag-to-script" title="hb_ot_tag_to_script ()">hb_ot_tag_to_script</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-ot-layout.html#hb-ot-tags-from-script-and-language" title="hb_ot_tags_from_script_and_language ()">hb_ot_tags_from_script_and_language</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-ot-layout.html#hb-ot-tags-to-script-and-language" title="hb_ot_tags_to_script_and_language ()">hb_ot_tags_to_script_and_language</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
@@ -49,6 +81,21 @@
</td>
</tr>
<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-collect-features" title="hb_ot_layout_collect_features ()">hb_ot_layout_collect_features</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-ot-layout.html#hb-ot-layout-feature-get-characters" title="hb_ot_layout_feature_get_characters ()">hb_ot_layout_feature_get_characters</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
<td class="function_type">unsigned <span class="returnvalue">int</span>
</td>
<td class="function_name">
@@ -56,6 +103,14 @@
</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-ot-layout.html#hb-ot-layout-feature-get-name-ids" title="hb_ot_layout_feature_get_name_ids ()">hb_ot_layout_feature_get_name_ids</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
<td class="function_type">unsigned <span class="returnvalue">int</span>
</td>
<td class="function_name">
@@ -195,14 +250,6 @@
</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-ot-layout.html#hb-ot-layout-script-find-language" title="hb_ot_layout_script_find_language ()">hb_ot_layout_script_find_language</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
<td class="function_type">unsigned <span class="returnvalue">int</span>
</td>
<td class="function_name">
@@ -214,7 +261,7 @@
<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-ot-layout.html#hb-ot-layout-table-choose-script" title="hb_ot_layout_table_choose_script ()">hb_ot_layout_table_choose_script</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-script-select-language" title="hb_ot_layout_script_select_language ()">hb_ot_layout_script_select_language</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -226,32 +273,32 @@
</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 class="function_type">unsigned <span class="returnvalue">int</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-find-script" title="hb_ot_layout_table_find_script ()">hb_ot_layout_table_find_script</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-get-feature-tags" title="hb_ot_layout_table_get_feature_tags ()">hb_ot_layout_table_get_feature_tags</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-ot-layout.html#hb-ot-layout-table-get-feature-tags" title="hb_ot_layout_table_get_feature_tags ()">hb_ot_layout_table_get_feature_tags</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-get-script-tags" title="hb_ot_layout_table_get_script_tags ()">hb_ot_layout_table_get_script_tags</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-ot-layout.html#hb-ot-layout-table-get-script-tags" title="hb_ot_layout_table_get_script_tags ()">hb_ot_layout_table_get_script_tags</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-get-lookup-count" title="hb_ot_layout_table_get_lookup_count ()">hb_ot_layout_table_get_lookup_count</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
-<td class="function_type">unsigned <span class="returnvalue">int</span>
+<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-ot-layout.html#hb-ot-layout-table-get-lookup-count" title="hb_ot_layout_table_get_lookup_count ()">hb_ot_layout_table_get_lookup_count</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-select-script" title="hb_ot_layout_table_select_script ()">hb_ot_layout_table_select_script</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -283,6 +330,22 @@
<tbody>
<tr>
<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-MAX-TAGS-PER-LANGUAGE:CAPS" title="HB_OT_MAX_TAGS_PER_LANGUAGE">HB_OT_MAX_TAGS_PER_LANGUAGE</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-MAX-TAGS-PER-SCRIPT:CAPS" title="HB_OT_MAX_TAGS_PER_SCRIPT">HB_OT_MAX_TAGS_PER_SCRIPT</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-DEFAULT-LANGUAGE:CAPS" title="HB_OT_TAG_DEFAULT_LANGUAGE">HB_OT_TAG_DEFAULT_LANGUAGE</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-DEFAULT-SCRIPT:CAPS" title="HB_OT_TAG_DEFAULT_SCRIPT">HB_OT_TAG_DEFAULT_SCRIPT</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-DEFAULT-LANGUAGE-INDEX:CAPS" title="HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX">HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX</a></td>
</tr>
<tr>
@@ -299,6 +362,10 @@
</tr>
<tr>
<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-BASE:CAPS" title="HB_OT_TAG_BASE">HB_OT_TAG_BASE</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GDEF:CAPS" title="HB_OT_TAG_GDEF">HB_OT_TAG_GDEF</a></td>
</tr>
<tr>
@@ -322,16 +389,149 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-ot-layout.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
<span class="lineart">╰──</span> hb_ot_layout_glyph_class_t
</pre>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-ot-layout.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb-ot.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-ot-layout.description"></a><h2>Description</h2>
+<p>Functions for querying OpenType Layout features in the font face.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-ot-layout.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
+<a name="hb-ot-tag-to-language"></a><h3>hb_ot_tag_to_language ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="returnvalue">hb_language_t</span></a>
+hb_ot_tag_to_language (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> tag</code></em>);</pre>
+<div class="refsect3">
+<a name="hb-ot-tag-to-language.returns"></a><h4>Returns</h4>
+<p>. </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-ot-tag-to-script"></a><h3>hb_ot_tag_to_script ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
+hb_ot_tag_to_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> tag</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-tags-from-script-and-language"></a><h3>hb_ot_tags_from_script_and_language ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_ot_tags_from_script_and_language (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> script</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> language</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *script_count</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *script_tags</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *language_count</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *language_tags</code></em>);</pre>
+<p>Converts an <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> and an <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> to script and language tags.</p>
+<div class="refsect3">
+<a name="hb-ot-tags-from-script-and-language.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>script</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> to convert.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>language</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> to convert.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>script_count</p></td>
+<td class="parameter_description"><p> maximum number of script tags to retrieve (IN)
+and actual number of script tags retrieved (OUT). </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>script_tags</p></td>
+<td class="parameter_description"><p> array of size at least <em class="parameter"><code>script_count</code></em>
+to store the
+script tag results. </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>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>language_count</p></td>
+<td class="parameter_description"><p> maximum number of language tags to retrieve
+(IN) and actual number of language tags retrieved (OUT). </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>language_tags</p></td>
+<td class="parameter_description"><p> array of size at least <em class="parameter"><code>language_count</code></em>
+to store
+the language tag results. </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>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-tags-to-script-and-language"></a><h3>hb_ot_tags_to_script_and_language ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_ot_tags_to_script_and_language (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> script_tag</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> language_tag</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> *script</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> *language</code></em>);</pre>
+<p>Converts a script tag and a language tag to an <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> and an
+<a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a>.</p>
+<div class="refsect3">
+<a name="hb-ot-tags-to-script-and-language.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>script_tag</p></td>
+<td class="parameter_description"><p>a script tag</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>language_tag</p></td>
+<td class="parameter_description"><p>a language tag</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>script</p></td>
+<td class="parameter_description"><p> the <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> corresponding to <em class="parameter"><code>script_tag</code></em>
+(OUT). </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>language</p></td>
+<td class="parameter_description"><p> the <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> corresponding to <em class="parameter"><code>script_tag</code></em>
+and
+<em class="parameter"><code>language_tag</code></em>
+(OUT). </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
<a name="hb-ot-layout-collect-lookups"></a><h3>hb_ot_layout_collect_lookups ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
hb_ot_layout_collect_lookups (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
@@ -344,6 +544,84 @@ hb_ot_layout_collect_lookups (<em class="parameter"><code><a class="link" href="
</div>
<hr>
<div class="refsect2">
+<a name="hb-ot-layout-collect-features"></a><h3>hb_ot_layout_collect_features ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_ot_layout_collect_features (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> table_tag</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *scripts</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *languages</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *features</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *feature_indexes</code></em>);</pre>
+<p class="since">Since: <a class="link" href="api-index-1-8-5.html#api-index-1.8.5">1.8.5</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-layout-feature-get-characters"></a><h3>hb_ot_layout_feature_get_characters ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">int</span>
+hb_ot_layout_feature_get_characters (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> table_tag</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> feature_index</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> start_offset</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *char_count</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *characters</code></em>);</pre>
+<p>Fetches characters listed by designer under feature parameters for "Character
+Variant" ("cvXX") features.</p>
+<div class="refsect3">
+<a name="hb-ot-layout-feature-get-characters.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>face</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> to work upon</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>table_tag</p></td>
+<td class="parameter_description"><p>table tag to query, "GSUB" or "GPOS".</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>feature_index</p></td>
+<td class="parameter_description"><p>index of feature to query.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>start_offset</p></td>
+<td class="parameter_description"><p>In case the resulting char_count was equal to its input value, there
+is a chance there were more characters on the tag so this API can be
+called with an offset till resulting char_count gets to a number
+lower than input buffer (or consider using just a bigger buffer for
+one shot copying).</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>char_count</p></td>
+<td class="parameter_description"><p> The count of characters for which this feature
+provides glyph variants. (May be zero.). </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>characters</p></td>
+<td class="parameter_description"><p> A buffer pointer. The Unicode codepoints
+of the characters for which this feature provides glyph variants. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Out parameter, where caller must allocate storage."><span class="acronym">out caller-allocates</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=char_count]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-ot-layout-feature-get-characters.returns"></a><h4>Returns</h4>
+<p> Number of total sample characters in the cvXX feature.</p>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
<a name="hb-ot-layout-feature-get-lookups"></a><h3>hb_ot_layout_feature_get_lookups ()</h3>
<pre class="programlisting">unsigned <span class="returnvalue">int</span>
hb_ot_layout_feature_get_lookups (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
@@ -356,6 +634,84 @@ hb_ot_layout_feature_get_lookups (<em class="parameter"><code><a class="link" hr
</div>
<hr>
<div class="refsect2">
+<a name="hb-ot-layout-feature-get-name-ids"></a><h3>hb_ot_layout_feature_get_name_ids ()</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_ot_layout_feature_get_name_ids (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> table_tag</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> feature_index</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t"><span class="type">hb_ot_name_id_t</span></a> *label_id</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t"><span class="type">hb_ot_name_id_t</span></a> *tooltip_id</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t"><span class="type">hb_ot_name_id_t</span></a> *sample_id</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *num_named_parameters</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t"><span class="type">hb_ot_name_id_t</span></a> *first_param_id</code></em>);</pre>
+<p>Fetches name indices from feature parameters for "Stylistic Set" ('ssXX') or
+"Character Variant" ('cvXX') features.</p>
+<div class="refsect3">
+<a name="hb-ot-layout-feature-get-name-ids.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>face</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> to work upon</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>table_tag</p></td>
+<td class="parameter_description"><p>table tag to query, "GSUB" or "GPOS".</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>feature_index</p></td>
+<td class="parameter_description"><p>index of feature to query.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>label_id</p></td>
+<td class="parameter_description"><p> The ‘name’ table name ID that specifies a string
+for a user-interface label for this feature. (May be NULL.). </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>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>tooltip_id</p></td>
+<td class="parameter_description"><p> The ‘name’ table name ID that specifies a string
+that an application can use for tooltip text for this
+feature. (May be NULL.). </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>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>sample_id</p></td>
+<td class="parameter_description"><p> The ‘name’ table name ID that specifies sample text
+that illustrates the effect of this feature. (May be NULL.). </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>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>num_named_parameters</p></td>
+<td class="parameter_description"><p> Number of named parameters. (May be zero.). </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>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>first_param_id</p></td>
+<td class="parameter_description"><p> The first ‘name’ table name ID used to specify
+strings for user-interface labels for the feature
+parameters. (Must be zero if numParameters is zero.). </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>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-ot-layout-feature-get-name-ids.returns"></a><h4>Returns</h4>
+<p> true if data found, false otherwise</p>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
<a name="hb-ot-layout-feature-with-variations-get-lookups"></a><h3>hb_ot_layout_feature_with_variations_get_lookups ()</h3>
<pre class="programlisting">unsigned <span class="returnvalue">int</span>
hb_ot_layout_feature_with_variations_get_lookups
@@ -412,7 +768,7 @@ hb_ot_layout_get_ligature_carets (<em class="parameter"><code><a class="link" hr
hb_ot_layout_get_size_params (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *design_size</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *subfamily_id</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> *subfamily_name_id</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t"><span class="type">hb_ot_name_id_t</span></a> *subfamily_name_id</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *range_start</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> *range_end</code></em>);</pre>
<p class="since">Since: <a class="link" href="api-index-0-9-10.html#api-index-0.9.10">0.9.10</a></p>
@@ -528,7 +884,7 @@ hb_ot_layout_lookups_substitute_closure
<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *glyphs</code></em>);</pre>
<p>Compute the transitive closure of glyphs needed for all of the
provided lookups.</p>
-<p class="since">Since: 1.8.1</p>
+<p class="since">Since: <a class="link" href="api-index-1-8-1.html#api-index-1.8.1">1.8.1</a></p>
</div>
<hr>
<div class="refsect2">
@@ -543,16 +899,6 @@ hb_ot_layout_lookup_would_substitute (<em class="parameter"><code><a class="link
</div>
<hr>
<div class="refsect2">
-<a name="hb-ot-layout-script-find-language"></a><h3>hb_ot_layout_script_find_language ()</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_ot_layout_script_find_language (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> table_tag</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> script_index</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> language_tag</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> *language_index</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
<a name="hb-ot-layout-script-get-language-tags"></a><h3>hb_ot_layout_script_get_language_tags ()</h3>
<pre class="programlisting">unsigned <span class="returnvalue">int</span>
hb_ot_layout_script_get_language_tags (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
@@ -564,13 +910,15 @@ hb_ot_layout_script_get_language_tags (<em class="parameter"><code><a class="lin
</div>
<hr>
<div class="refsect2">
-<a name="hb-ot-layout-table-choose-script"></a><h3>hb_ot_layout_table_choose_script ()</h3>
+<a name="hb-ot-layout-script-select-language"></a><h3>hb_ot_layout_script_select_language ()</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_ot_layout_table_choose_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> table_tag</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *script_tags</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> *script_index</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *chosen_script</code></em>);</pre>
+hb_ot_layout_script_select_language (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> table_tag</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> script_index</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> language_count</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *language_tags</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *language_index</code></em>);</pre>
+<p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
</div>
<hr>
<div class="refsect2">
@@ -585,15 +933,6 @@ hb_ot_layout_table_find_feature_variations
</div>
<hr>
<div class="refsect2">
-<a name="hb-ot-layout-table-find-script"></a><h3>hb_ot_layout_table_find_script ()</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_ot_layout_table_find_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> table_tag</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> script_tag</code></em>,
- <em class="parameter"><code>unsigned <span class="type">int</span> *script_index</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
<a name="hb-ot-layout-table-get-feature-tags"></a><h3>hb_ot_layout_table_get_feature_tags ()</h3>
<pre class="programlisting">unsigned <span class="returnvalue">int</span>
hb_ot_layout_table_get_feature_tags (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
@@ -622,6 +961,18 @@ hb_ot_layout_table_get_lookup_count (<em class="parameter"><code><a class="link"
</div>
<hr>
<div class="refsect2">
+<a name="hb-ot-layout-table-select-script"></a><h3>hb_ot_layout_table_select_script ()</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_ot_layout_table_select_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> table_tag</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> script_count</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *script_tags</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *script_index</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *chosen_script</code></em>);</pre>
+<p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
<a name="hb-ot-shape-plan-collect-lookups"></a><h3>hb_ot_shape_plan_collect_lookups ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
hb_ot_shape_plan_collect_lookups (<em class="parameter"><code><a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"><span class="type">hb_shape_plan_t</span></a> *shape_plan</code></em>,
@@ -644,6 +995,32 @@ hb_ot_layout_language_get_required_feature_index
<div class="refsect1">
<a name="harfbuzz-hb-ot-layout.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
+<a name="HB-OT-MAX-TAGS-PER-LANGUAGE:CAPS"></a><h3>HB_OT_MAX_TAGS_PER_LANGUAGE</h3>
+<pre class="programlisting">#define HB_OT_MAX_TAGS_PER_LANGUAGE 3u
+</pre>
+<p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="HB-OT-MAX-TAGS-PER-SCRIPT:CAPS"></a><h3>HB_OT_MAX_TAGS_PER_SCRIPT</h3>
+<pre class="programlisting">#define HB_OT_MAX_TAGS_PER_SCRIPT 3u
+</pre>
+<p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="HB-OT-TAG-DEFAULT-LANGUAGE:CAPS"></a><h3>HB_OT_TAG_DEFAULT_LANGUAGE</h3>
+<pre class="programlisting">#define HB_OT_TAG_DEFAULT_LANGUAGE HB_TAG ('d', 'f', 'l', 't')
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="HB-OT-TAG-DEFAULT-SCRIPT:CAPS"></a><h3>HB_OT_TAG_DEFAULT_SCRIPT</h3>
+<pre class="programlisting">#define HB_OT_TAG_DEFAULT_SCRIPT HB_TAG ('D', 'F', 'L', 'T')
+</pre>
+</div>
+<hr>
+<div class="refsect2">
<a name="HB-OT-LAYOUT-DEFAULT-LANGUAGE-INDEX:CAPS"></a><h3>HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX</h3>
<pre class="programlisting">#define HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX 0xFFFFu
</pre>
@@ -668,6 +1045,12 @@ hb_ot_layout_language_get_required_feature_index
</div>
<hr>
<div class="refsect2">
+<a name="HB-OT-TAG-BASE:CAPS"></a><h3>HB_OT_TAG_BASE</h3>
+<pre class="programlisting">#define HB_OT_TAG_BASE HB_TAG('B','A','S','E')
+</pre>
+</div>
+<hr>
+<div class="refsect2">
<a name="HB-OT-TAG-GDEF:CAPS"></a><h3>HB_OT_TAG_GDEF</h3>
<pre class="programlisting">#define HB_OT_TAG_GDEF HB_TAG('G','D','E','F')
</pre>
@@ -734,6 +1117,6 @@ hb_ot_layout_language_get_required_feature_index
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-ot-math.html b/docs/html/harfbuzz-hb-ot-math.html
index 0c85bdd..b803cef 100644
--- a/docs/html/harfbuzz-hb-ot-math.html
+++ b/docs/html/harfbuzz-hb-ot-math.html
@@ -5,10 +5,10 @@
<title>hb-ot-math: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-ot-shape.html" title="hb-ot-shape">
-<link rel="next" href="harfbuzz-hb-shape-plan.html" title="hb-shape-plan">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch10.html" title="OpenType API">
+<link rel="prev" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">
+<link rel="next" href="harfbuzz-hb-ot-name.html" title="hb-ot-name">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,16 +19,16 @@
<a href="#harfbuzz-hb-ot-math.object-hierarchy" class="shortcut">Object Hierarchy</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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-ot-shape.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-shape-plan.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="u" href="ch10.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-ot-layout.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-ot-name.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-ot-math"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-ot-math.top_of_page"></a>hb-ot-math</span></h2>
-<p>hb-ot-math</p>
+<p>hb-ot-math — OpenType Math information</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -154,18 +154,24 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-ot-math.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
<span class="lineart">├──</span> hb_ot_math_glyph_part_t
<span class="lineart">╰──</span> hb_ot_math_glyph_variant_t
- <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
+ <a href="/usr/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
<span class="lineart">├──</span> hb_ot_math_constant_t
<span class="lineart">╰──</span> hb_ot_math_kern_t
- <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GFlags</a>
+ <a href="/usr/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GFlags</a>
<span class="lineart">╰──</span> hb_ot_math_glyph_part_flags_t
</pre>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-ot-math.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb-ot.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-ot-math.description"></a><h2>Description</h2>
+<p>Functions for fetching mathematics layout data from OpenType fonts.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-ot-math.functions_details"></a><h2>Functions</h2>
@@ -956,6 +962,6 @@ to store the result</p></td>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-ot-name.html b/docs/html/harfbuzz-hb-ot-name.html
new file mode 100644
index 0000000..68e3a97
--- /dev/null
+++ b/docs/html/harfbuzz-hb-ot-name.html
@@ -0,0 +1,327 @@
+<!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-ot-name: 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="ch10.html" title="OpenType API">
+<link rel="prev" href="harfbuzz-hb-ot-math.html" title="hb-ot-math">
+<link rel="next" href="harfbuzz-hb-ot-shape.html" title="hb-ot-shape">
+<meta name="generator" content="GTK-Doc V1.25 (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-ot-name.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="ch10.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-ot-math.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-ot-shape.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="harfbuzz-hb-ot-name"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="harfbuzz-hb-ot-name.top_of_page"></a>hb-ot-name</span></h2>
+<p>hb-ot-name — OpenType font name information</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-name.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">const <span class="returnvalue">hb_ot_name_entry_t</span> *
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-list-names" title="hb_ot_name_list_names ()">hb_ot_name_list_names</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-ot-name.html#hb-ot-name-get-utf16" title="hb_ot_name_get_utf16 ()">hb_ot_name_get_utf16</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-ot-name.html#hb-ot-name-get-utf32" title="hb_ot_name_get_utf32 ()">hb_ot_name_get_utf32</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-ot-name.html#hb-ot-name-get-utf8" title="hb_ot_name_get_utf8 ()">hb_ot_name_get_utf8</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-name.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t">hb_ot_name_id_t</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-name.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb-ot.h&gt;
+</pre>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-name.description"></a><h2>Description</h2>
+<p>Functions for fetching name strings from OpenType fonts.</p>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-name.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="hb-ot-name-list-names"></a><h3>hb_ot_name_list_names ()</h3>
+<pre class="programlisting">const <span class="returnvalue">hb_ot_name_entry_t</span> *
+hb_ot_name_list_names (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *num_entries</code></em>);</pre>
+<p>Enumerates all available name IDs and language combinations. Returned
+array is owned by the <em class="parameter"><code>face</code></em>
+ and should not be modified. It can be
+used as long as <em class="parameter"><code>face</code></em>
+ is alive.</p>
+<div class="refsect3">
+<a name="hb-ot-name-list-names.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>face</p></td>
+<td class="parameter_description"><p>font face.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>num_entries</p></td>
+<td class="parameter_description"><p> number of returned entries. </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>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-ot-name-list-names.returns"></a><h4>Returns</h4>
+<p> Array of available name entries. </p>
+<p><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<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=num_entries]</span></p>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-name-get-utf16"></a><h3>hb_ot_name_get_utf16 ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">int</span>
+hb_ot_name_get_utf16 (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t"><span class="type">hb_ot_name_id_t</span></a> name_id</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> language</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *text_size</code></em>,
+ <em class="parameter"><code><span class="type">uint16_t</span> *text</code></em>);</pre>
+<p>Fetches a font name from the OpenType 'name' table.
+If <em class="parameter"><code>language</code></em>
+ is <a class="link" href="harfbuzz-hb-common.html#HB-LANGUAGE-INVALID:CAPS" title="HB_LANGUAGE_INVALID"><span class="type">HB_LANGUAGE_INVALID</span></a>, English ("en") is assumed.
+Returns string in UTF-16 encoding.</p>
+<div class="refsect3">
+<a name="hb-ot-name-get-utf16.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>face</p></td>
+<td class="parameter_description"><p>font face.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>name_id</p></td>
+<td class="parameter_description"><p>OpenType name identifier to fetch.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>language</p></td>
+<td class="parameter_description"><p>language to fetch the name for.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>text_size</p></td>
+<td class="parameter_description"><p> input size of <em class="parameter"><code>text</code></em>
+buffer, and output size of
+text written to buffer. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>text</p></td>
+<td class="parameter_description"><p> buffer to write fetched name into. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Out parameter, where caller must allocate storage."><span class="acronym">out caller-allocates</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_size]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-ot-name-get-utf16.returns"></a><h4>Returns</h4>
+<p> full length of the requested string, or 0 if not found.</p>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-name-get-utf32"></a><h3>hb_ot_name_get_utf32 ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">int</span>
+hb_ot_name_get_utf32 (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t"><span class="type">hb_ot_name_id_t</span></a> name_id</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> language</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *text_size</code></em>,
+ <em class="parameter"><code><span class="type">uint32_t</span> *text</code></em>);</pre>
+<p>Fetches a font name from the OpenType 'name' table.
+If <em class="parameter"><code>language</code></em>
+ is <a class="link" href="harfbuzz-hb-common.html#HB-LANGUAGE-INVALID:CAPS" title="HB_LANGUAGE_INVALID"><span class="type">HB_LANGUAGE_INVALID</span></a>, English ("en") is assumed.
+Returns string in UTF-32 encoding.</p>
+<div class="refsect3">
+<a name="hb-ot-name-get-utf32.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>face</p></td>
+<td class="parameter_description"><p>font face.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>name_id</p></td>
+<td class="parameter_description"><p>OpenType name identifier to fetch.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>language</p></td>
+<td class="parameter_description"><p>language to fetch the name for.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>text_size</p></td>
+<td class="parameter_description"><p> input size of <em class="parameter"><code>text</code></em>
+buffer, and output size of
+text written to buffer. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>text</p></td>
+<td class="parameter_description"><p> buffer to write fetched name into. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Out parameter, where caller must allocate storage."><span class="acronym">out caller-allocates</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_size]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-ot-name-get-utf32.returns"></a><h4>Returns</h4>
+<p> full length of the requested string, or 0 if not found.</p>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-name-get-utf8"></a><h3>hb_ot_name_get_utf8 ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">int</span>
+hb_ot_name_get_utf8 (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t"><span class="type">hb_ot_name_id_t</span></a> name_id</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> language</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *text_size</code></em>,
+ <em class="parameter"><code><span class="type">char</span> *text</code></em>);</pre>
+<p>Fetches a font name from the OpenType 'name' table.
+If <em class="parameter"><code>language</code></em>
+ is <a class="link" href="harfbuzz-hb-common.html#HB-LANGUAGE-INVALID:CAPS" title="HB_LANGUAGE_INVALID"><span class="type">HB_LANGUAGE_INVALID</span></a>, English ("en") is assumed.
+Returns string in UTF-8 encoding.</p>
+<div class="refsect3">
+<a name="hb-ot-name-get-utf8.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>face</p></td>
+<td class="parameter_description"><p>font face.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>name_id</p></td>
+<td class="parameter_description"><p>OpenType name identifier to fetch.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>language</p></td>
+<td class="parameter_description"><p>language to fetch the name for.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>text_size</p></td>
+<td class="parameter_description"><p> input size of <em class="parameter"><code>text</code></em>
+buffer, and output size of
+text written to buffer. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>text</p></td>
+<td class="parameter_description"><p> buffer to write fetched name into. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Out parameter, where caller must allocate storage."><span class="acronym">out caller-allocates</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_size]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-ot-name-get-utf8.returns"></a><h4>Returns</h4>
+<p> full length of the requested string, or 0 if not found.</p>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-1-0.html#api-index-2.1.0">2.1.0</a></p>
+</div>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-name.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="hb-ot-name-id-t"></a><h3>hb_ot_name_id_t</h3>
+<pre class="programlisting">typedef unsigned int hb_ot_name_id_t;
+</pre>
+<p>An integral type representing an OpenType 'name' table name identifier.
+There are predefined name IDs, as well as name IDs return from other
+API. These can be used to fetch name strings from a font face.</p>
+<p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-ot-shape.html b/docs/html/harfbuzz-hb-ot-shape.html
index f33f2a4..30ed441 100644
--- a/docs/html/harfbuzz-hb-ot-shape.html
+++ b/docs/html/harfbuzz-hb-ot-shape.html
@@ -5,10 +5,10 @@
<title>hb-ot-shape: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-ot-font.html" title="hb-ot-font">
-<link rel="next" href="harfbuzz-hb-ot-math.html" title="hb-ot-math">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch10.html" title="OpenType API">
+<link rel="prev" href="harfbuzz-hb-ot-name.html" title="hb-ot-name">
+<link rel="next" href="harfbuzz-hb-ot-var.html" title="hb-ot-var">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,16 +18,16 @@
<a href="#harfbuzz-hb-ot-shape.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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-ot-font.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-ot-math.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="u" href="ch10.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-ot-name.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-ot-var.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-ot-shape"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-ot-shape.top_of_page"></a>hb-ot-shape</span></h2>
-<p>hb-ot-shape</p>
+<p>hb-ot-shape — OpenType shaping support</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -49,7 +49,13 @@
</table></div>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-ot-shape.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb-ot.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-ot-shape.description"></a><h2>Description</h2>
+<p>Support functions for OpenType shaping related queries.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-ot-shape.functions_details"></a><h2>Functions</h2>
@@ -57,8 +63,8 @@
<a name="hb-ot-shape-glyphs-closure"></a><h3>hb_ot_shape_glyphs_closure ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
hb_ot_shape_glyphs_closure (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *features</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *features</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> num_features</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.html#hb-set-t"><span class="type">hb_set_t</span></a> *glyphs</code></em>);</pre>
<p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
@@ -69,6 +75,6 @@ hb_ot_shape_glyphs_closure (<em class="parameter"><code><a class="link" href="ha
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-ot-tag.html b/docs/html/harfbuzz-hb-ot-tag.html
deleted file mode 100644
index 2ebf67d..0000000
--- a/docs/html/harfbuzz-hb-ot-tag.html
+++ /dev/null
@@ -1,151 +0,0 @@
-<!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-ot-tag: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">
-<link rel="next" href="harfbuzz-hb-ot-font.html" title="hb-ot-font">
-<meta name="generator" content="GTK-Doc V1.27.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">
-<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
- <a href="#harfbuzz-hb-ot-tag.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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-ot-layout.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-ot-font.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="harfbuzz-hb-ot-tag"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="harfbuzz-hb-ot-tag.top_of_page"></a>hb-ot-tag</span></h2>
-<p>hb-ot-tag</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="harfbuzz-hb-ot-tag.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="functions_return">
-<col class="functions_name">
-</colgroup>
-<tbody>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="returnvalue">hb_tag_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-ot-tag.html#hb-ot-tag-from-language" title="hb_ot_tag_from_language ()">hb_ot_tag_from_language</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="returnvalue">hb_language_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-ot-tag.html#hb-ot-tag-to-language" title="hb_ot_tag_to_language ()">hb_ot_tag_to_language</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-ot-tag.html#hb-ot-tag-to-script" title="hb_ot_tag_to_script ()">hb_ot_tag_to_script</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-ot-tag.html#hb-ot-tags-from-script" title="hb_ot_tags_from_script ()">hb_ot_tags_from_script</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-hb-ot-tag.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="name">
-<col class="description">
-</colgroup>
-<tbody>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-ot-tag.html#HB-OT-TAG-DEFAULT-LANGUAGE:CAPS" title="HB_OT_TAG_DEFAULT_LANGUAGE">HB_OT_TAG_DEFAULT_LANGUAGE</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-ot-tag.html#HB-OT-TAG-DEFAULT-SCRIPT:CAPS" title="HB_OT_TAG_DEFAULT_SCRIPT">HB_OT_TAG_DEFAULT_SCRIPT</a></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-hb-ot-tag.description"></a><h2>Description</h2>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-hb-ot-tag.functions_details"></a><h2>Functions</h2>
-<div class="refsect2">
-<a name="hb-ot-tag-from-language"></a><h3>hb_ot_tag_from_language ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="returnvalue">hb_tag_t</span></a>
-hb_ot_tag_from_language (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> language</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-ot-tag-to-language"></a><h3>hb_ot_tag_to_language ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="returnvalue">hb_language_t</span></a>
-hb_ot_tag_to_language (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> tag</code></em>);</pre>
-<div class="refsect3">
-<a name="hb-ot-tag-to-language.returns"></a><h4>Returns</h4>
-<p>. </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-ot-tag-to-script"></a><h3>hb_ot_tag_to_script ()</h3>
-<pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
-hb_ot_tag_to_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> tag</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="hb-ot-tags-from-script"></a><h3>hb_ot_tags_from_script ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_ot_tags_from_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> script</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *script_tag_1</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> *script_tag_2</code></em>);</pre>
-</div>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-hb-ot-tag.other_details"></a><h2>Types and Values</h2>
-<div class="refsect2">
-<a name="HB-OT-TAG-DEFAULT-LANGUAGE:CAPS"></a><h3>HB_OT_TAG_DEFAULT_LANGUAGE</h3>
-<pre class="programlisting">#define HB_OT_TAG_DEFAULT_LANGUAGE HB_TAG ('d', 'f', 'l', 't')
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="HB-OT-TAG-DEFAULT-SCRIPT:CAPS"></a><h3>HB_OT_TAG_DEFAULT_SCRIPT</h3>
-<pre class="programlisting">#define HB_OT_TAG_DEFAULT_SCRIPT HB_TAG ('D', 'F', 'L', 'T')
-</pre>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-ot-var.html b/docs/html/harfbuzz-hb-ot-var.html
new file mode 100644
index 0000000..b8e3fd3
--- /dev/null
+++ b/docs/html/harfbuzz-hb-ot-var.html
@@ -0,0 +1,345 @@
+<!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-ot-var: 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="ch10.html" title="OpenType API">
+<link rel="prev" href="harfbuzz-hb-ot-shape.html" title="hb-ot-shape">
+<link rel="next" href="ch11.html" title="Apple Advanced Typography API">
+<meta name="generator" content="GTK-Doc V1.25 (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-ot-var.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+ <a href="#harfbuzz-hb-ot-var.object-hierarchy" class="shortcut">Object Hierarchy</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="ch10.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-ot-shape.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="ch11.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="harfbuzz-hb-ot-var"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="harfbuzz-hb-ot-var.top_of_page"></a>hb-ot-var</span></h2>
+<p>hb-ot-var — OpenType Font Variations</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-var.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<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-ot-var.html#hb-ot-var-has-data" title="hb_ot_var_has_data ()">hb_ot_var_has_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-ot-var.html#hb-ot-var-find-axis-info" title="hb_ot_var_find_axis_info ()">hb_ot_var_find_axis_info</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-ot-var.html#hb-ot-var-get-axis-count" title="hb_ot_var_get_axis_count ()">hb_ot_var_get_axis_count</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-ot-var.html#hb-ot-var-get-axis-infos" title="hb_ot_var_get_axis_infos ()">hb_ot_var_get_axis_infos</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-ot-var.html#hb-ot-var-get-named-instance-count" title="hb_ot_var_get_named_instance_count ()">hb_ot_var_get_named_instance_count</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t"><span class="returnvalue">hb_ot_name_id_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-ot-var.html#hb-ot-var-named-instance-get-subfamily-name-id" title="hb_ot_var_named_instance_get_subfamily_name_id ()">hb_ot_var_named_instance_get_subfamily_name_id</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t"><span class="returnvalue">hb_ot_name_id_t</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="harfbuzz-hb-ot-var.html#hb-ot-var-named-instance-get-postscript-name-id" title="hb_ot_var_named_instance_get_postscript_name_id ()">hb_ot_var_named_instance_get_postscript_name_id</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-ot-var.html#hb-ot-var-named-instance-get-design-coords" title="hb_ot_var_named_instance_get_design_coords ()">hb_ot_var_named_instance_get_design_coords</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-ot-var.html#hb-ot-var-normalize-variations" title="hb_ot_var_normalize_variations ()">hb_ot_var_normalize_variations</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-ot-var.html#hb-ot-var-normalize-coords" title="hb_ot_var_normalize_coords ()">hb_ot_var_normalize_coords</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-var.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-ot-var.html#HB-OT-TAG-VAR-AXIS-ITALIC:CAPS" title="HB_OT_TAG_VAR_AXIS_ITALIC">HB_OT_TAG_VAR_AXIS_ITALIC</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-ot-var.html#HB-OT-TAG-VAR-AXIS-OPTICAL-SIZE:CAPS" title="HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE">HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-ot-var.html#HB-OT-TAG-VAR-AXIS-SLANT:CAPS" title="HB_OT_TAG_VAR_AXIS_SLANT">HB_OT_TAG_VAR_AXIS_SLANT</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-ot-var.html#HB-OT-TAG-VAR-AXIS-WEIGHT:CAPS" title="HB_OT_TAG_VAR_AXIS_WEIGHT">HB_OT_TAG_VAR_AXIS_WEIGHT</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-ot-var.html#HB-OT-TAG-VAR-AXIS-WIDTH:CAPS" title="HB_OT_TAG_VAR_AXIS_WIDTH">HB_OT_TAG_VAR_AXIS_WIDTH</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-ot-var.html#hb-ot-var-axis-flags-t" title="enum hb_ot_var_axis_flags_t">hb_ot_var_axis_flags_t</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-var.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GFlags</a>
+ <span class="lineart">╰──</span> hb_ot_var_axis_flags_t
+</pre>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-var.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb-ot.h&gt;
+</pre>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-var.description"></a><h2>Description</h2>
+<p>Functions for fetching information about OpenType Variable Fonts.</p>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-var.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="hb-ot-var-has-data"></a><h3>hb_ot_var_has_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_ot_var_has_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+<p>This function allows to verify the presence of OpenType variation data on the face.</p>
+<div class="refsect3">
+<a name="hb-ot-var-has-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>face</p></td>
+<td class="parameter_description"><p><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> to test</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-ot-var-has-data.returns"></a><h4>Returns</h4>
+<p> true if face has a `fvar' table and false otherwise</p>
+</div>
+<p class="since">Since: <a class="link" href="api-index-1-4-2.html#api-index-1.4.2">1.4.2</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-var-find-axis-info"></a><h3>hb_ot_var_find_axis_info ()</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_ot_var_find_axis_info (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> axis_tag</code></em>,
+ <em class="parameter"><code><span class="type">hb_ot_var_axis_info_t</span> *axis_info</code></em>);</pre>
+<p class="since">Since: 2.2.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-var-get-axis-count"></a><h3>hb_ot_var_get_axis_count ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">int</span>
+hb_ot_var_get_axis_count (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+<p class="since">Since: <a class="link" href="api-index-1-4-2.html#api-index-1.4.2">1.4.2</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-var-get-axis-infos"></a><h3>hb_ot_var_get_axis_infos ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">int</span>
+hb_ot_var_get_axis_infos (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> start_offset</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *axes_count</code></em>,
+ <em class="parameter"><code><span class="type">hb_ot_var_axis_info_t</span> *axes_array</code></em>);</pre>
+<p class="since">Since: 2.2.0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-var-get-named-instance-count"></a><h3>hb_ot_var_get_named_instance_count ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">int</span>
+hb_ot_var_get_named_instance_count (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-var-named-instance-get-subfamily-name-id"></a><h3>hb_ot_var_named_instance_get_subfamily_name_id ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t"><span class="returnvalue">hb_ot_name_id_t</span></a>
+hb_ot_var_named_instance_get_subfamily_name_id
+ (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> instance_index</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-var-named-instance-get-postscript-name-id"></a><h3>hb_ot_var_named_instance_get_postscript_name_id ()</h3>
+<pre class="programlisting"><a class="link" href="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" title="hb_ot_name_id_t"><span class="returnvalue">hb_ot_name_id_t</span></a>
+hb_ot_var_named_instance_get_postscript_name_id
+ (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> instance_index</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-var-named-instance-get-design-coords"></a><h3>hb_ot_var_named_instance_get_design_coords ()</h3>
+<pre class="programlisting">unsigned <span class="returnvalue">int</span>
+hb_ot_var_named_instance_get_design_coords
+ (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> instance_index</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> *coords_length</code></em>,
+ <em class="parameter"><code><span class="type">float</span> *coords</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-var-normalize-variations"></a><h3>hb_ot_var_normalize_variations ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_ot_var_normalize_variations (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-font.html#hb-variation-t" title="hb_variation_t"><span class="type">hb_variation_t</span></a> *variations</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> variations_length</code></em>,
+ <em class="parameter"><code><span class="type">int</span> *coords</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> coords_length</code></em>);</pre>
+<p class="since">Since: <a class="link" href="api-index-1-4-2.html#api-index-1.4.2">1.4.2</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-var-normalize-coords"></a><h3>hb_ot_var_normalize_coords ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+hb_ot_var_normalize_coords (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
+ <em class="parameter"><code>unsigned <span class="type">int</span> coords_length</code></em>,
+ <em class="parameter"><code>const <span class="type">float</span> *design_coords</code></em>,
+ <em class="parameter"><code><span class="type">int</span> *normalized_coords</code></em>);</pre>
+<p class="since">Since: <a class="link" href="api-index-1-4-2.html#api-index-1.4.2">1.4.2</a></p>
+</div>
+</div>
+<div class="refsect1">
+<a name="harfbuzz-hb-ot-var.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="HB-OT-TAG-VAR-AXIS-ITALIC:CAPS"></a><h3>HB_OT_TAG_VAR_AXIS_ITALIC</h3>
+<pre class="programlisting">#define HB_OT_TAG_VAR_AXIS_ITALIC HB_TAG('i','t','a','l')
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="HB-OT-TAG-VAR-AXIS-OPTICAL-SIZE:CAPS"></a><h3>HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE</h3>
+<pre class="programlisting">#define HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE HB_TAG('o','p','s','z')
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="HB-OT-TAG-VAR-AXIS-SLANT:CAPS"></a><h3>HB_OT_TAG_VAR_AXIS_SLANT</h3>
+<pre class="programlisting">#define HB_OT_TAG_VAR_AXIS_SLANT HB_TAG('s','l','n','t')
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="HB-OT-TAG-VAR-AXIS-WEIGHT:CAPS"></a><h3>HB_OT_TAG_VAR_AXIS_WEIGHT</h3>
+<pre class="programlisting">#define HB_OT_TAG_VAR_AXIS_WEIGHT HB_TAG('w','g','h','t')
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="HB-OT-TAG-VAR-AXIS-WIDTH:CAPS"></a><h3>HB_OT_TAG_VAR_AXIS_WIDTH</h3>
+<pre class="programlisting">#define HB_OT_TAG_VAR_AXIS_WIDTH HB_TAG('w','d','t','h')
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="hb-ot-var-axis-flags-t"></a><h3>enum hb_ot_var_axis_flags_t</h3>
+<div class="refsect3">
+<a name="hb-ot-var-axis-flags-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-OT-VAR-AXIS-FLAG-HIDDEN:CAPS"></a>HB_OT_VAR_AXIS_FLAG_HIDDEN</p></td>
+<td class="enum_member_description">
+<p>The axis should not be exposed directly in user interfaces.</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HB-OT-VAR-AXIS-FLAG-MAX-VALUE:CAPS"></a>_HB_OT_VAR_AXIS_FLAG_MAX_VALUE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 2.2.0</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-ot.html b/docs/html/harfbuzz-hb-ot.html
deleted file mode 100644
index 4af82e6..0000000
--- a/docs/html/harfbuzz-hb-ot.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!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-ot: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-set.html" title="hb-set">
-<link rel="next" href="harfbuzz-hb-ot-layout.html" title="hb-ot-layout">
-<meta name="generator" content="GTK-Doc V1.27.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">
-<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
- <a href="#harfbuzz-hb-ot.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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-set.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-ot-layout.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="harfbuzz-hb-ot"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="harfbuzz-hb-ot.top_of_page"></a>hb-ot</span></h2>
-<p>hb-ot</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="harfbuzz-hb-ot.description"></a><h2>Description</h2>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-hb-ot.functions_details"></a><h2>Functions</h2>
-<p></p>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-hb-ot.other_details"></a><h2>Types and Values</h2>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-set.html b/docs/html/harfbuzz-hb-set.html
index d05e57d..b07920d 100644
--- a/docs/html/harfbuzz-hb-set.html
+++ b/docs/html/harfbuzz-hb-set.html
@@ -5,10 +5,10 @@
<title>hb-set: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">
-<link rel="next" href="harfbuzz-hb-ot.html" title="hb-ot">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch09.html" title="Core API">
+<link rel="prev" href="harfbuzz-hb-map.html" title="hb-map">
+<link rel="next" href="harfbuzz-hb-shape-plan.html" title="hb-shape-plan">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,16 +19,16 @@
<a href="#harfbuzz-hb-set.object-hierarchy" class="shortcut">Object Hierarchy</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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-deprecated.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-ot.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="u" href="ch09.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-map.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-shape-plan.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-set"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-set.top_of_page"></a>hb-set</span></h2>
-<p>hb-set</p>
+<p>hb-set — Object representing a set of integers</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -287,12 +287,20 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-set.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
<span class="lineart">╰──</span> hb_set_t
</pre>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-set.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-set.description"></a><h2>Description</h2>
+<p>Set objects represent a mathematical set of integer values. They are
+used in non-shaping API to query certain set of characters or glyphs,
+or other integer values.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-set.functions_details"></a><h2>Functions</h2>
@@ -727,7 +735,7 @@ hb_set_is_subset (<em class="parameter"><code>const <a class="link" href="harfbu
is a subset of (or equal to) <em class="parameter"><code>larger_set</code></em>
, <code class="literal">FALSE</code> otherwise.</p>
</div>
-<p class="since">Since: 1.8.1</p>
+<p class="since">Since: <a class="link" href="api-index-1-8-1.html#api-index-1.8.1">1.8.1</a></p>
</div>
<hr>
<div class="refsect2">
@@ -797,12 +805,12 @@ are greater than current value of <em class="parameter"><code>last</code></em>
</tr>
<tr>
<td class="parameter_name"><p>first</p></td>
-<td class="parameter_description"><p>output first codepoint in the range. </p></td>
+<td class="parameter_description"><p> output first codepoint in the range. </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>
<tr>
<td class="parameter_name"><p>last</p></td>
-<td class="parameter_description"><p>input current last and output last codepoint in the range. </p></td>
+<td class="parameter_description"><p> input current last and output last codepoint in the range. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>]</span></td>
</tr>
</tbody>
@@ -851,7 +859,7 @@ hb_set_previous (<em class="parameter"><code>const <a class="link" href="harfbuz
<a name="hb-set-previous.returns"></a><h4>Returns</h4>
<p> whether there was a previous value.</p>
</div>
-<p class="since">Since: 1.8.0</p>
+<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">
@@ -882,12 +890,12 @@ are greater than current value of <em class="parameter"><code>last</code></em>
</tr>
<tr>
<td class="parameter_name"><p>first</p></td>
-<td class="parameter_description"><p>input current first and output first codepoint in the range. </p></td>
+<td class="parameter_description"><p> input current first and output first codepoint in the range. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>last</p></td>
-<td class="parameter_description"><p>output last codepoint in the range. </p></td>
+<td class="parameter_description"><p> output last codepoint in the range. </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>
@@ -897,7 +905,7 @@ are greater than current value of <em class="parameter"><code>last</code></em>
<a name="hb-set-previous-range.returns"></a><h4>Returns</h4>
<p> whether there was a previous range.</p>
</div>
-<p class="since">Since: 1.8.0</p>
+<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">
@@ -1063,6 +1071,6 @@ hb_set_union (<em class="parameter"><code><a class="link" href="harfbuzz-hb-set.
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-shape-plan.html b/docs/html/harfbuzz-hb-shape-plan.html
index 13f235f..3986cab 100644
--- a/docs/html/harfbuzz-hb-shape-plan.html
+++ b/docs/html/harfbuzz-hb-shape-plan.html
@@ -5,10 +5,10 @@
<title>hb-shape-plan: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-ot-math.html" title="hb-ot-math">
-<link rel="next" href="harfbuzz-hb-glib.html" title="hb-glib">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch09.html" title="Core API">
+<link rel="prev" href="harfbuzz-hb-set.html" title="hb-set">
+<link rel="next" href="harfbuzz-hb-shape.html" title="hb-shape">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,16 +19,16 @@
<a href="#harfbuzz-hb-shape-plan.object-hierarchy" class="shortcut">Object Hierarchy</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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-ot-math.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-glib.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="u" href="ch09.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-set.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-shape.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-shape-plan"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-shape-plan.top_of_page"></a>hb-shape-plan</span></h2>
-<p>hb-shape-plan</p>
+<p>hb-shape-plan — Object representing a shaping plan</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -145,12 +145,21 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-shape-plan.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
<span class="lineart">╰──</span> hb_shape_plan_t
</pre>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-shape-plan.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-shape-plan.description"></a><h2>Description</h2>
+<p>Shape plans are not used for shaping directly, but can be access to query
+certain information about how shaping will perform given a set of input
+parameters (script, language, direction, features, etc.)
+Most client would not need to deal with shape plans directly.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-shape-plan.functions_details"></a><h2>Functions</h2>
@@ -158,8 +167,8 @@
<a name="hb-shape-plan-create"></a><h3>hb_shape_plan_create ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"><span class="returnvalue">hb_shape_plan_t</span></a> *
hb_shape_plan_create (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *user_features</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *user_features</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> num_user_features</code></em>,
<em class="parameter"><code>const <span class="type">char</span> * const *shaper_list</code></em>);</pre>
<p><span class="annotation">[Xconstructor]</span></p>
@@ -197,8 +206,8 @@ hb_shape_plan_create (<em class="parameter"><code><a class="link" href="harfbuzz
<a name="hb-shape-plan-create-cached"></a><h3>hb_shape_plan_create_cached ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"><span class="returnvalue">hb_shape_plan_t</span></a> *
hb_shape_plan_create_cached (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *user_features</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *user_features</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> num_user_features</code></em>,
<em class="parameter"><code>const <span class="type">char</span> * const *shaper_list</code></em>);</pre>
<div class="refsect3">
@@ -235,8 +244,8 @@ hb_shape_plan_create_cached (<em class="parameter"><code><a class="link" href="h
<a name="hb-shape-plan-create2"></a><h3>hb_shape_plan_create2 ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"><span class="returnvalue">hb_shape_plan_t</span></a> *
hb_shape_plan_create2 (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *user_features</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *user_features</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> num_user_features</code></em>,
<em class="parameter"><code>const <span class="type">int</span> *coords</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> num_coords</code></em>,
@@ -247,8 +256,8 @@ hb_shape_plan_create2 (<em class="parameter"><code><a class="link" href="harfbuz
<a name="hb-shape-plan-create-cached2"></a><h3>hb_shape_plan_create_cached2 ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"><span class="returnvalue">hb_shape_plan_t</span></a> *
hb_shape_plan_create_cached2 (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t"><span class="type">hb_face_t</span></a> *face</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *user_features</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *user_features</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> num_user_features</code></em>,
<em class="parameter"><code>const <span class="type">int</span> *coords</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> num_coords</code></em>,
@@ -283,8 +292,8 @@ hb_shape_plan_destroy (<em class="parameter"><code><a class="link" href="harfbuz
<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_shape_plan_execute (<em class="parameter"><code><a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"><span class="type">hb_shape_plan_t</span></a> *shape_plan</code></em>,
<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *features</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *features</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> num_features</code></em>);</pre>
<div class="refsect3">
<a name="hb-shape-plan-execute.parameters"></a><h4>Parameters</h4>
@@ -454,6 +463,6 @@ hb_shape_plan_set_user_data (<em class="parameter"><code><a class="link" href="h
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-Shaping.html b/docs/html/harfbuzz-hb-shape.html
index a50c761..b26887c 100644
--- a/docs/html/harfbuzz-Shaping.html
+++ b/docs/html/harfbuzz-hb-shape.html
@@ -2,38 +2,38 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Shaping: HarfBuzz Manual</title>
+<title>hb-shape: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-font.html" title="hb-font">
-<link rel="next" href="harfbuzz-hb-version.html" title="hb-version">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch09.html" title="Core API">
+<link rel="prev" href="harfbuzz-hb-shape-plan.html" title="hb-shape-plan">
+<link rel="next" href="harfbuzz-hb-unicode.html" title="hb-unicode">
+<meta name="generator" content="GTK-Doc V1.25 (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-Shaping.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
- <a href="#harfbuzz-Shaping.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+ <a href="#harfbuzz-hb-shape.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+ <a href="#harfbuzz-hb-shape.object-hierarchy" class="shortcut">Object Hierarchy</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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-font.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-version.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="u" href="ch09.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-shape-plan.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-unicode.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
-<a name="harfbuzz-Shaping"></a><div class="titlepage"></div>
+<a name="harfbuzz-hb-shape"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
-<h2><span class="refentrytitle"><a name="harfbuzz-Shaping.top_of_page"></a>Shaping</span></h2>
-<p>Shaping — Conversion of text strings into positioned glyphs</p>
+<h2><span class="refentrytitle"><a name="harfbuzz-hb-shape.top_of_page"></a>hb-shape</span></h2>
+<p>hb-shape — Conversion of text strings into positioned glyphs</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="harfbuzz-Shaping.functions"></a><h2>Functions</h2>
+<a name="harfbuzz-hb-shape.functions"></a><h2>Functions</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="functions_return">
@@ -45,7 +45,7 @@
<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-Shaping.html#hb-feature-from-string" title="hb_feature_from_string ()">hb_feature_from_string</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-shape.html#hb-feature-from-string" title="hb_feature_from_string ()">hb_feature_from_string</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -53,7 +53,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Shaping.html#hb-feature-to-string" title="hb_feature_to_string ()">hb_feature_to_string</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-shape.html#hb-feature-to-string" title="hb_feature_to_string ()">hb_feature_to_string</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -61,7 +61,7 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-Shaping.html#hb-shape" title="hb_shape ()">hb_shape</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-shape.html#hb-shape" title="hb_shape ()">hb_shape</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
@@ -69,59 +69,69 @@
<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-Shaping.html#hb-shape-full" title="hb_shape_full ()">hb_shape_full</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-shape.html#hb-shape-full" title="hb_shape_full ()">hb_shape_full</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-Shaping.html#hb-shape-list-shapers" title="hb_shape_list_shapers ()">hb_shape_list_shapers</a> <span class="c_punctuation">()</span>
+<a class="link" href="harfbuzz-hb-shape.html#hb-shape-list-shapers" title="hb_shape_list_shapers ()">hb_shape_list_shapers</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
</table></div>
</div>
<a name="hb-feature-t"></a><div class="refsect1">
-<a name="harfbuzz-Shaping.other"></a><h2>Types and Values</h2>
+<a name="harfbuzz-hb-shape.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="name">
<col class="description">
</colgroup>
-<tbody><tr>
+<tbody>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-shape.html#HB-FEATURE-GLOBAL-END:CAPS" title="HB_FEATURE_GLOBAL_END">HB_FEATURE_GLOBAL_END</a></td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-shape.html#HB-FEATURE-GLOBAL-START:CAPS" title="HB_FEATURE_GLOBAL_START">HB_FEATURE_GLOBAL_START</a></td>
+</tr>
+<tr>
<td class="datatype_keyword"> </td>
-<td class="function_name"><a class="link" href="harfbuzz-Shaping.html#hb-feature-t-struct" title="hb_feature_t">hb_feature_t</a></td>
-</tr></tbody>
+<td class="function_name"><a class="link" href="harfbuzz-hb-shape.html#hb-feature-t-struct" title="hb_feature_t">hb_feature_t</a></td>
+</tr>
+</tbody>
</table></div>
</div>
<div class="refsect1">
-<a name="harfbuzz-Shaping.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+<a name="harfbuzz-hb-shape.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
<span class="lineart">╰──</span> hb_feature_t
</pre>
</div>
<div class="refsect1">
-<a name="harfbuzz-Shaping.includes"></a><h2>Includes</h2>
+<a name="harfbuzz-hb-shape.includes"></a><h2>Includes</h2>
<pre class="synopsis">#include &lt;hb.h&gt;
</pre>
</div>
<div class="refsect1">
-<a name="harfbuzz-Shaping.description"></a><h2>Description</h2>
+<a name="harfbuzz-hb-shape.description"></a><h2>Description</h2>
<p>Shaping is the central operation of HarfBuzz. Shaping operates on buffers,
which are sequences of Unicode characters that use the same font and have
-the same text direction, script and language. After shaping the buffer
+the same text direction, script, and language. After shaping the buffer
contains the output glyphs and their positions.</p>
</div>
<div class="refsect1">
-<a name="harfbuzz-Shaping.functions_details"></a><h2>Functions</h2>
+<a name="harfbuzz-hb-shape.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
<a name="hb-feature-from-string"></a><h3>hb_feature_from_string ()</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_feature_from_string (<em class="parameter"><code>const <span class="type">char</span> *str</code></em>,
<em class="parameter"><code><span class="type">int</span> len</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *feature</code></em>);</pre>
-<p>Parses a string into a <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a>.</p>
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *feature</code></em>);</pre>
+<p>Parses a string into a <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a>.</p>
<p>TODO: document the syntax here.</p>
<div class="refsect3">
<a name="hb-feature-from-string.parameters"></a><h4>Parameters</h4>
@@ -134,7 +144,7 @@ hb_feature_from_string (<em class="parameter"><code>const <span class="type">cha
<tbody>
<tr>
<td class="parameter_name"><p>str</p></td>
-<td class="parameter_description"><p>a string to parse. </p></td>
+<td class="parameter_description"><p> a string to parse. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
</tr>
<tr>
@@ -145,7 +155,7 @@ hb_feature_from_string (<em class="parameter"><code>const <span class="type">cha
</tr>
<tr>
<td class="parameter_name"><p>feature</p></td>
-<td class="parameter_description"><p>the <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> to initialize with the parsed values. </p></td>
+<td class="parameter_description"><p> the <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> to initialize with the parsed values. </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>
@@ -162,11 +172,11 @@ is successfully parsed, <code class="literal">false</code> otherwise.</p>
<div class="refsect2">
<a name="hb-feature-to-string"></a><h3>hb_feature_to_string ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-hb_feature_to_string (<em class="parameter"><code><a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *feature</code></em>,
+hb_feature_to_string (<em class="parameter"><code><a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *feature</code></em>,
<em class="parameter"><code><span class="type">char</span> *buf</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> size</code></em>);</pre>
-<p>Converts a <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> into a <code class="literal">NULL</code>-terminated string in the format
-understood by <a class="link" href="harfbuzz-Shaping.html#hb-feature-from-string" title="hb_feature_from_string ()"><code class="function">hb_feature_from_string()</code></a>. The client in responsible for
+<p>Converts a <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> into a <code class="literal">NULL</code>-terminated string in the format
+understood by <a class="link" href="harfbuzz-hb-shape.html#hb-feature-from-string" title="hb_feature_from_string ()"><code class="function">hb_feature_from_string()</code></a>. The client in responsible for
allocating big enough size for <em class="parameter"><code>buf</code></em>
, 128 bytes is more than enough.</p>
<div class="refsect3">
@@ -180,12 +190,12 @@ allocating big enough size for <em class="parameter"><code>buf</code></em>
<tbody>
<tr>
<td class="parameter_name"><p>feature</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> to convert</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> to convert</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>buf</p></td>
-<td class="parameter_description"><p>output string. </p></td>
+<td class="parameter_description"><p> output string. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=size][<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
</tr>
<tr>
@@ -204,8 +214,8 @@ allocating big enough size for <em class="parameter"><code>buf</code></em>
<a name="hb-shape"></a><h3>hb_shape ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
hb_shape (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *features</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *features</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> num_features</code></em>);</pre>
<p>Shapes <em class="parameter"><code>buffer</code></em>
using <em class="parameter"><code>font</code></em>
@@ -229,13 +239,13 @@ features applied during shaping.</p>
</tr>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> to shape</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> to shape</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>features</p></td>
-<td class="parameter_description"><p>an array of user
-specified <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> or <code class="literal">NULL</code>. </p></td>
+<td class="parameter_description"><p> an array of user
+specified <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> or <code class="literal">NULL</code>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=num_features][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
@@ -254,11 +264,11 @@ array</p></td>
<a name="hb-shape-full"></a><h3>hb_shape_full ()</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_shape_full (<em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t"><span class="type">hb_font_t</span></a> *font</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
- <em class="parameter"><code>const <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *features</code></em>,
+ <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
+ <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> *features</code></em>,
<em class="parameter"><code>unsigned <span class="type">int</span> num_features</code></em>,
<em class="parameter"><code>const <span class="type">char</span> * const *shaper_list</code></em>);</pre>
-<p>See <a class="link" href="harfbuzz-Shaping.html#hb-shape" title="hb_shape ()"><code class="function">hb_shape()</code></a> for details. If <em class="parameter"><code>shaper_list</code></em>
+<p>See <a class="link" href="harfbuzz-hb-shape.html#hb-shape" title="hb_shape ()"><code class="function">hb_shape()</code></a> for details. If <em class="parameter"><code>shaper_list</code></em>
is not <code class="literal">NULL</code>, the specified
shapers will be used in the given order, otherwise the default shapers list
will be used.</p>
@@ -278,13 +288,13 @@ will be used.</p>
</tr>
<tr>
<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>an <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> to shape</p></td>
+<td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t"><span class="type">hb_buffer_t</span></a> to shape</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>features</p></td>
-<td class="parameter_description"><p>an array of user
-specified <a class="link" href="harfbuzz-Shaping.html#hb-feature-t"><span class="type">hb_feature_t</span></a> or <code class="literal">NULL</code>. </p></td>
+<td class="parameter_description"><p> an array of user
+specified <a class="link" href="harfbuzz-hb-shape.html#hb-feature-t"><span class="type">hb_feature_t</span></a> or <code class="literal">NULL</code>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=num_features][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
@@ -295,7 +305,7 @@ array</p></td>
</tr>
<tr>
<td class="parameter_name"><p>shaper_list</p></td>
-<td class="parameter_description"><p>a <code class="literal">NULL</code>-terminated
+<td class="parameter_description"><p> a <code class="literal">NULL</code>-terminated
array of shapers to use or <code class="literal">NULL</code>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> zero-terminated=1][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
@@ -316,7 +326,7 @@ hb_shape_list_shapers (<em class="parameter"><code><span class="type">void</span
<p>Retrieves the list of shapers supported by HarfBuzz.</p>
<div class="refsect3">
<a name="hb-shape-list-shapers.returns"></a><h4>Returns</h4>
-<p>an array of
+<p> an array of
constant strings. </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> zero-terminated=1]</span></p>
</div>
@@ -324,7 +334,21 @@ constant strings. </p>
</div>
</div>
<div class="refsect1">
-<a name="harfbuzz-Shaping.other_details"></a><h2>Types and Values</h2>
+<a name="harfbuzz-hb-shape.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="HB-FEATURE-GLOBAL-END:CAPS"></a><h3>HB_FEATURE_GLOBAL_END</h3>
+<pre class="programlisting">#define HB_FEATURE_GLOBAL_END ((unsigned int) -1)
+</pre>
+<p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="HB-FEATURE-GLOBAL-START:CAPS"></a><h3>HB_FEATURE_GLOBAL_START</h3>
+<pre class="programlisting">#define HB_FEATURE_GLOBAL_START 0
+</pre>
+<p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
+</div>
+<hr>
<div class="refsect2">
<a name="hb-feature-t-struct"></a><h3>hb_feature_t</h3>
<pre class="programlisting">typedef struct {
@@ -338,6 +362,6 @@ constant strings. </p>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-unicode.html b/docs/html/harfbuzz-hb-unicode.html
index e2bc935..97f93ab 100644
--- a/docs/html/harfbuzz-hb-unicode.html
+++ b/docs/html/harfbuzz-hb-unicode.html
@@ -5,10 +5,10 @@
<title>hb-unicode: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-common.html" title="hb-common">
-<link rel="next" href="harfbuzz-Buffers.html" title="Buffers">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch09.html" title="Core API">
+<link rel="prev" href="harfbuzz-hb-shape.html" title="hb-shape">
+<link rel="next" href="harfbuzz-hb-version.html" title="hb-version">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,16 +19,16 @@
<a href="#harfbuzz-hb-unicode.object-hierarchy" class="shortcut">Object Hierarchy</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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-common.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-Buffers.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="u" href="ch09.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-shape.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="harfbuzz-hb-version.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-unicode"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-unicode.top_of_page"></a>hb-unicode</span></h2>
-<p>hb-unicode</p>
+<p>hb-unicode — Unicode character property access</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -81,13 +81,6 @@
</td>
</tr>
<tr>
-<td class="function_type">unsigned <span class="returnvalue">int</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-decompose-compatibility" title="hb_unicode_decompose_compatibility ()">hb_unicode_decompose_compatibility</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>
@@ -96,13 +89,6 @@
</td>
</tr>
<tr>
-<td class="function_type">unsigned <span class="returnvalue">int</span>
-</td>
-<td class="function_name">
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-eastasian-width" title="hb_unicode_eastasian_width ()">hb_unicode_eastasian_width</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
<td class="function_type">
<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="returnvalue">hb_unicode_funcs_t</span></a> *
</td>
@@ -195,14 +181,6 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-decompose-compatibility-func" title="hb_unicode_funcs_set_decompose_compatibility_func ()">hb_unicode_funcs_set_decompose_compatibility_func</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-unicode.html#hb-unicode-funcs-set-decompose-func" title="hb_unicode_funcs_set_decompose_func ()">hb_unicode_funcs_set_decompose_func</a> <span class="c_punctuation">()</span>
</td>
</tr>
@@ -211,14 +189,6 @@
<span class="returnvalue">void</span>
</td>
<td class="function_name">
-<a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-eastasian-width-func" title="hb_unicode_funcs_set_eastasian_width_func ()">hb_unicode_funcs_set_eastasian_width_func</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-unicode.html#hb-unicode-funcs-set-general-category-func" title="hb_unicode_funcs_set_general_category_func ()">hb_unicode_funcs_set_general_category_func</a> <span class="c_punctuation">()</span>
</td>
</tr>
@@ -307,7 +277,7 @@
<tbody>
<tr>
<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="harfbuzz-hb-unicode.html#HB-UNICODE-MAX-DECOMPOSITION-LEN:CAPS" title="HB_UNICODE_MAX_DECOMPOSITION_LEN">HB_UNICODE_MAX_DECOMPOSITION_LEN</a></td>
+<td class="function_name"><a class="link" href="harfbuzz-hb-unicode.html#HB-UNICODE-MAX:CAPS" title="HB_UNICODE_MAX">HB_UNICODE_MAX</a></td>
</tr>
<tr>
<td class="datatype_keyword">enum</td>
@@ -326,15 +296,25 @@
</div>
<div class="refsect1">
<a name="harfbuzz-hb-unicode.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
<span class="lineart">╰──</span> hb_unicode_funcs_t
- <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
+ <a href="/usr/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
<span class="lineart">├──</span> hb_unicode_combining_class_t
<span class="lineart">╰──</span> hb_unicode_general_category_t
</pre>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-unicode.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-unicode.description"></a><h2>Description</h2>
+<p>Unicode functions are used to access Unicode character properties.
+Client can pass its own Unicode functions to HarfBuzz, or access
+the built-in Unicode functions that come with HarfBuzz.</p>
+<p>With the Unicode functions, one can query variour Unicode character
+properties, such as General Category, Script, Combining Class, etc.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-unicode.functions_details"></a><h2>Functions</h2>
@@ -434,37 +414,6 @@ hb_unicode_decompose (<em class="parameter"><code><a class="link" href="harfbuzz
</div>
<hr>
<div class="refsect2">
-<a name="hb-unicode-decompose-compatibility"></a><h3>hb_unicode_decompose_compatibility ()</h3>
-<pre class="programlisting">unsigned <span class="returnvalue">int</span>
-hb_unicode_decompose_compatibility (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> u</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *decomposed</code></em>);</pre>
-<div class="refsect3">
-<a name="hb-unicode-decompose-compatibility.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>ufuncs</p></td>
-<td class="parameter_description"><p>Unicode functions.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>decomposed</p></td>
-<td class="parameter_description"><p>. </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>
-<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-unicode-decompose-func-t"></a><h3>hb_unicode_decompose_func_t ()</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>
<span class="c_punctuation">(</span>*hb_unicode_decompose_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>,
@@ -475,14 +424,6 @@ hb_unicode_decompose_compatibility (<em class="parameter"><code><a class="link"
</div>
<hr>
<div class="refsect2">
-<a name="hb-unicode-eastasian-width"></a><h3>hb_unicode_eastasian_width ()</h3>
-<pre class="programlisting">unsigned <span class="returnvalue">int</span>
-hb_unicode_eastasian_width (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>,
- <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> unicode</code></em>);</pre>
-<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-unicode-funcs-create"></a><h3>hb_unicode_funcs_create ()</h3>
<pre class="programlisting"><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="returnvalue">hb_unicode_funcs_t</span></a> *
hb_unicode_funcs_create (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *parent</code></em>);</pre>
@@ -740,39 +681,6 @@ hb_unicode_funcs_set_compose_func (<em class="parameter"><code><a class="link" h
</div>
<hr>
<div class="refsect2">
-<a name="hb-unicode-funcs-set-decompose-compatibility-func"></a><h3>hb_unicode_funcs_set_decompose_compatibility_func ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_unicode_funcs_set_decompose_compatibility_func
- (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>,
- <em class="parameter"><code><span class="type">hb_unicode_decompose_compatibility_func_t</span> func</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>
-<div class="refsect3">
-<a name="hb-unicode-funcs-set-decompose-compatibility-func.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>ufuncs</p></td>
-<td class="parameter_description"><p>a Unicode function structure</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></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-unicode-funcs-set-decompose-func"></a><h3>hb_unicode_funcs_set_decompose_func ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
hb_unicode_funcs_set_decompose_func (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>,
@@ -805,39 +713,6 @@ hb_unicode_funcs_set_decompose_func (<em class="parameter"><code><a class="link"
</div>
<hr>
<div class="refsect2">
-<a name="hb-unicode-funcs-set-eastasian-width-func"></a><h3>hb_unicode_funcs_set_eastasian_width_func ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-hb_unicode_funcs_set_eastasian_width_func
- (<em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"><span class="type">hb_unicode_funcs_t</span></a> *ufuncs</code></em>,
- <em class="parameter"><code><span class="type">hb_unicode_eastasian_width_func_t</span> func</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>
-<div class="refsect3">
-<a name="hb-unicode-funcs-set-eastasian-width-func.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>ufuncs</p></td>
-<td class="parameter_description"><p>a Unicode function structure</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></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-unicode-funcs-set-general-category-func"></a><h3>hb_unicode_funcs_set_general_category_func ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
hb_unicode_funcs_set_general_category_func
@@ -1012,9 +887,10 @@ hb_unicode_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb
<div class="refsect1">
<a name="harfbuzz-hb-unicode.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
-<a name="HB-UNICODE-MAX-DECOMPOSITION-LEN:CAPS"></a><h3>HB_UNICODE_MAX_DECOMPOSITION_LEN</h3>
-<pre class="programlisting">#define HB_UNICODE_MAX_DECOMPOSITION_LEN (18+1) /* codepoints */
+<a name="HB-UNICODE-MAX:CAPS"></a><h3>HB_UNICODE_MAX</h3>
+<pre class="programlisting">#define HB_UNICODE_MAX 0x10FFFFu
</pre>
+<p class="since">Since: <a class="link" href="api-index-1-9-0.html#api-index-1.9.0">1.9.0</a></p>
</div>
<hr>
<div class="refsect2">
@@ -1492,6 +1368,6 @@ hb_unicode_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-uniscribe.html b/docs/html/harfbuzz-hb-uniscribe.html
index 3d1d4d0..425ef7e 100644
--- a/docs/html/harfbuzz-hb-uniscribe.html
+++ b/docs/html/harfbuzz-hb-uniscribe.html
@@ -5,10 +5,10 @@
<title>hb-uniscribe: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-hb-graphite2.html" title="hb-graphite2">
-<link rel="next" href="harfbuzz-hb-coretext.html" title="hb-coretext">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch12.html" title="Integration API">
+<link rel="prev" href="harfbuzz-hb-icu.html" title="hb-icu">
+<link rel="next" href="api-index-full.html" title="API Index">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,16 +18,16 @@
<a href="#harfbuzz-hb-uniscribe.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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-graphite2.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-coretext.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></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="harfbuzz-hb-icu.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="api-index-full.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-uniscribe"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-uniscribe.top_of_page"></a>hb-uniscribe</span></h2>
-<p>hb-uniscribe</p>
+<p>hb-uniscribe — Windows integration</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -59,7 +59,13 @@
</table></div>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-uniscribe.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb-uniscribe.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-uniscribe.description"></a><h2>Description</h2>
+<p>Functions for using HarfBuzz with the Windows fonts.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-uniscribe.functions_details"></a><h2>Functions</h2>
@@ -80,6 +86,6 @@ hb_uniscribe_font_get_logfontw (<em class="parameter"><code><a class="link" href
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb-version.html b/docs/html/harfbuzz-hb-version.html
index 3180c50..00569c9 100644
--- a/docs/html/harfbuzz-hb-version.html
+++ b/docs/html/harfbuzz-hb-version.html
@@ -5,10 +5,10 @@
<title>hb-version: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="harfbuzz-Shaping.html" title="Shaping">
-<link rel="next" href="harfbuzz-hb-deprecated.html" title="hb-deprecated">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="ch09.html" title="Core API">
+<link rel="prev" href="harfbuzz-hb-unicode.html" title="hb-unicode">
+<link rel="next" href="ch10.html" title="OpenType API">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,16 +18,16 @@
<a href="#harfbuzz-hb-version.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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-Shaping.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-deprecated.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="u" href="ch09.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="harfbuzz-hb-unicode.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="ch10.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="harfbuzz-hb-version"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="harfbuzz-hb-version.top_of_page"></a>hb-version</span></h2>
-<p>hb-version</p>
+<p>hb-version — Information about the version of HarfBuzz in use</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -99,7 +99,15 @@
</table></div>
</div>
<div class="refsect1">
+<a name="harfbuzz-hb-version.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;hb.h&gt;
+</pre>
+</div>
+<div class="refsect1">
<a name="harfbuzz-hb-version.description"></a><h2>Description</h2>
+<p>These functions and macros allow accessing version of the HarfBuzz
+library used at compile- as well as run-time, and to direct code
+conditionally based on those versions, again, at compile- or run-time.</p>
</div>
<div class="refsect1">
<a name="harfbuzz-hb-version.functions_details"></a><h2>Functions</h2>
@@ -126,17 +134,17 @@ hb_version (<em class="parameter"><code>unsigned <span class="type">int</span> *
<tbody>
<tr>
<td class="parameter_name"><p>major</p></td>
-<td class="parameter_description"><p>Library major version component. </p></td>
+<td class="parameter_description"><p> Library major version component. </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>
<tr>
<td class="parameter_name"><p>minor</p></td>
-<td class="parameter_description"><p>Library minor version component. </p></td>
+<td class="parameter_description"><p> Library minor version component. </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>
<tr>
<td class="parameter_name"><p>micro</p></td>
-<td class="parameter_description"><p>Library micro version component. </p></td>
+<td class="parameter_description"><p> Library micro version component. </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>
@@ -170,7 +178,7 @@ hb_version_string (<em class="parameter"><code><span class="type">void</span></c
<a name="harfbuzz-hb-version.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="HB-VERSION-MAJOR:CAPS"></a><h3>HB_VERSION_MAJOR</h3>
-<pre class="programlisting">#define HB_VERSION_MAJOR 1
+<pre class="programlisting">#define HB_VERSION_MAJOR 2
</pre>
</div>
<hr>
@@ -182,18 +190,18 @@ hb_version_string (<em class="parameter"><code><span class="type">void</span></c
<hr>
<div class="refsect2">
<a name="HB-VERSION-MINOR:CAPS"></a><h3>HB_VERSION_MINOR</h3>
-<pre class="programlisting">#define HB_VERSION_MINOR 8
+<pre class="programlisting">#define HB_VERSION_MINOR 3
</pre>
</div>
<hr>
<div class="refsect2">
<a name="HB-VERSION-STRING:CAPS"></a><h3>HB_VERSION_STRING</h3>
-<pre class="programlisting">#define HB_VERSION_STRING "1.8.1"
+<pre class="programlisting">#define HB_VERSION_STRING "2.3.1"
</pre>
</div>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz-hb.html b/docs/html/harfbuzz-hb.html
deleted file mode 100644
index 6089a9e..0000000
--- a/docs/html/harfbuzz-hb.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!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: 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="ch08.html" title="HarfBuzz API">
-<link rel="prev" href="ch08.html" title="HarfBuzz API">
-<link rel="next" href="harfbuzz-hb-common.html" title="hb-common">
-<meta name="generator" content="GTK-Doc V1.27.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">
-<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
- <a href="#harfbuzz-hb.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="ch08.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="ch08.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="harfbuzz-hb-common.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="harfbuzz-hb"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="harfbuzz-hb.top_of_page"></a>hb</span></h2>
-<p>hb</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="harfbuzz-hb.description"></a><h2>Description</h2>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-hb.functions_details"></a><h2>Functions</h2>
-<p></p>
-</div>
-<div class="refsect1">
-<a name="harfbuzz-hb.other_details"></a><h2>Types and Values</h2>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/harfbuzz.devhelp2 b/docs/html/harfbuzz.devhelp2
index c4ed6ff..ccfc846 100644
--- a/docs/html/harfbuzz.devhelp2
+++ b/docs/html/harfbuzz.devhelp2
@@ -3,15 +3,35 @@
<chapters>
<sub name="User's manual" link="pt01.html">
<sub name="What is HarfBuzz?" link="what-is-harfbuzz.html">
- <sub name="Why do I need it?" link="what-is-harfbuzz.html#why-do-i-need-it"/>
+ <sub name="What is text shaping?" link="what-is-harfbuzz.html#what-is-text-shaping"/>
+ <sub name="Why do I need a shaping engine?" link="why-do-i-need-a-shaping-engine.html"/>
+ <sub name="What does HarfBuzz do?" link="ch01s03.html"/>
+ <sub name="What HarfBuzz doesn't do" link="what-harfbuzz-doesnt-do.html"/>
<sub name="Why is it called HarfBuzz?" link="why-is-it-called-harfbuzz.html"/>
</sub>
- <sub name="Install HarfBuzz" link="install-harfbuzz.html">
- <sub name="Download" link="install-harfbuzz.html#download"/>
- <sub name="Building" link="building.html"/>
+ <sub name="Installing HarfBuzz" link="install-harfbuzz.html">
+ <sub name="Downloading HarfBuzz" link="install-harfbuzz.html#download"/>
+ <sub name="Building HarfBuzz" link="building.html">
+ <sub name="Building on Linux" link="building.html#building.linux"/>
+ <sub name="Building on Windows" link="building.html#building.windows"/>
+ <sub name="Building on macOS" link="building.html#building.macos"/>
+ <sub name="Configuration options" link="building.html#configuration"/>
+ </sub>
</sub>
- <sub name="Hello, HarfBuzz" link="hello-harfbuzz.html">
- <sub name="What HarfBuzz doesn't do" link="hello-harfbuzz.html#what-harfbuzz-doesnt-do"/>
+ <sub name="Getting started with HarfBuzz" link="getting-started.html">
+ <sub name="An overview of the HarfBuzz shaping API" link="getting-started.html#id-1.2.4.2"/>
+ <sub name="Terminology" link="ch03s02.html"/>
+ <sub name="A simple shaping example" link="ch03s03.html"/>
+ </sub>
+ <sub name="Shaping concepts" link="shaping-concepts.html">
+ <sub name="Text shaping" link="shaping-concepts.html#text-shaping-concepts"/>
+ <sub name="Complex scripts" link="complex-scripts.html"/>
+ <sub name="Shaping operations" link="shaping-operations.html"/>
+ <sub name="Unicode character categories" link="unicode-character-categories.html"/>
+ <sub name="Text runs" link="text-runs.html"/>
+ <sub name="OpenType shaping models" link="opentype-shaping-models.html"/>
+ <sub name="Graphite shaping" link="graphite-shaping.html"/>
+ <sub name="AAT shaping" link="aat-shaping.html"/>
</sub>
<sub name="Buffers, language, script and direction" link="buffers-language-script-and-direction.html">
<sub name="Creating and destroying buffers" link="buffers-language-script-and-direction.html#creating-and-destroying-buffers"/>
@@ -25,12 +45,17 @@
<sub name="Using HarfBuzz's native OpenType implementation" link="using-harfbuzzs-native-opentype-implementation.html"/>
<sub name="Using your own font functions" link="using-your-own-font-functions.html"/>
</sub>
- <sub name="" link="clusters.html">
- <sub name="Clusters" link="clusters.html#clusters"/>
+ <sub name="Clusters" link="clusters.html">
+ <sub name="Clusters and shaping" link="clusters.html#clusters-and-shaping"/>
+ <sub name="Working with HarfBuzz clusters" link="working-with-harfbuzz-clusters.html"/>
<sub name="A clustering example for levels 0 and 1" link="a-clustering-example-for-levels-0-and-1.html"/>
<sub name="Reordering in levels 0 and 1" link="reordering-in-levels-0-and-1.html"/>
<sub name="The distinction between levels 0 and 1" link="the-distinction-between-levels-0-and-1.html"/>
- <sub name="Level 2" link="level-2.html"/>
+ <sub name="Level 2" link="level-2.html">
+ <sub name="Ligatures with combining marks in level 2" link="level-2.html#ligatures-with-combining-marks-in-level-2"/>
+ <sub name="Reordering in level 2" link="level-2.html#reordering-in-level-2"/>
+ <sub name="Other considerations in level 2" link="level-2.html#other-considerations-in-level-2"/>
+ </sub>
</sub>
<sub name="Shaping and shape plans" link="shaping-and-shape-plans.html">
<sub name="OpenType features" link="shaping-and-shape-plans.html#opentype-features"/>
@@ -39,64 +64,166 @@
<sub name="Glyph information" link="pt01.html#glyph-information"/>
</sub>
<sub name="Reference manual" link="pt02.html">
- <sub name="HarfBuzz API" link="ch08.html">
- <sub name="hb" link="harfbuzz-hb.html"/>
- <sub name="hb-common" link="harfbuzz-hb-common.html"/>
- <sub name="hb-unicode" link="harfbuzz-hb-unicode.html"/>
- <sub name="Buffers" link="harfbuzz-Buffers.html"/>
+ <sub name="Core API" link="ch09.html">
<sub name="hb-blob" link="harfbuzz-hb-blob.html"/>
+ <sub name="hb-buffer" link="harfbuzz-hb-buffer.html"/>
+ <sub name="hb-common" link="harfbuzz-hb-common.html"/>
+ <sub name="hb-deprecated" link="harfbuzz-hb-deprecated.html"/>
<sub name="hb-face" link="harfbuzz-hb-face.html"/>
<sub name="hb-font" link="harfbuzz-hb-font.html"/>
- <sub name="Shaping" link="harfbuzz-Shaping.html"/>
- <sub name="hb-version" link="harfbuzz-hb-version.html"/>
- <sub name="hb-deprecated" link="harfbuzz-hb-deprecated.html"/>
+ <sub name="hb-map" link="harfbuzz-hb-map.html"/>
<sub name="hb-set" link="harfbuzz-hb-set.html"/>
- <sub name="hb-ot" link="harfbuzz-hb-ot.html"/>
- <sub name="hb-ot-layout" link="harfbuzz-hb-ot-layout.html"/>
- <sub name="hb-ot-tag" link="harfbuzz-hb-ot-tag.html"/>
+ <sub name="hb-shape-plan" link="harfbuzz-hb-shape-plan.html"/>
+ <sub name="hb-shape" link="harfbuzz-hb-shape.html"/>
+ <sub name="hb-unicode" link="harfbuzz-hb-unicode.html"/>
+ <sub name="hb-version" link="harfbuzz-hb-version.html"/>
+ </sub>
+ <sub name="OpenType API" link="ch10.html">
+ <sub name="hb-ot-color" link="harfbuzz-hb-ot-color.html"/>
<sub name="hb-ot-font" link="harfbuzz-hb-ot-font.html"/>
- <sub name="hb-ot-shape" link="harfbuzz-hb-ot-shape.html"/>
+ <sub name="hb-ot-layout" link="harfbuzz-hb-ot-layout.html"/>
<sub name="hb-ot-math" link="harfbuzz-hb-ot-math.html"/>
- <sub name="hb-shape-plan" link="harfbuzz-hb-shape-plan.html"/>
- <sub name="hb-glib" link="harfbuzz-hb-glib.html"/>
- <sub name="hb-icu" link="harfbuzz-hb-icu.html"/>
+ <sub name="hb-ot-name" link="harfbuzz-hb-ot-name.html"/>
+ <sub name="hb-ot-shape" link="harfbuzz-hb-ot-shape.html"/>
+ <sub name="hb-ot-var" link="harfbuzz-hb-ot-var.html"/>
+ </sub>
+ <sub name="Apple Advanced Typography API" link="ch11.html">
+ <sub name="hb-aat-layout" link="harfbuzz-hb-aat-layout.html"/>
+ </sub>
+ <sub name="Integration API" link="ch12.html">
+ <sub name="hb-coretext" link="harfbuzz-hb-coretext.html"/>
<sub name="hb-ft" link="harfbuzz-hb-ft.html"/>
+ <sub name="hb-glib" link="harfbuzz-hb-glib.html"/>
+ <sub name="hb-gobject" link="harfbuzz-hb-gobject.html"/>
<sub name="hb-graphite2" link="harfbuzz-hb-graphite2.html"/>
+ <sub name="hb-icu" link="harfbuzz-hb-icu.html"/>
<sub name="hb-uniscribe" link="harfbuzz-hb-uniscribe.html"/>
- <sub name="hb-coretext" link="harfbuzz-hb-coretext.html"/>
- <sub name="hb-gobject" link="harfbuzz-hb-gobject.html"/>
</sub>
- <sub name="Object Hierarchy" link="object-tree.html"/>
<sub name="API Index" link="api-index-full.html"/>
- <sub name="Index of new symbols in 0.9.2" link="api-index-0-9-2.html"/>
- <sub name="Index of new symbols in 0.9.5" link="api-index-0-9-5.html"/>
- <sub name="Index of new symbols in 0.9.7" link="api-index-0-9-7.html"/>
- <sub name="Index of new symbols in 0.9.8" link="api-index-0-9-8.html"/>
- <sub name="Index of new symbols in 0.9.10" link="api-index-0-9-10.html"/>
- <sub name="Index of new symbols in 0.9.11" link="api-index-0-9-11.html"/>
- <sub name="Index of new symbols in 0.9.20" link="api-index-0-9-20.html"/>
- <sub name="Index of new symbols in 0.9.22" link="api-index-0-9-22.html"/>
- <sub name="Index of new symbols in 0.9.28" link="api-index-0-9-28.html"/>
- <sub name="Index of new symbols in 0.9.30" link="api-index-0-9-30.html"/>
- <sub name="Index of new symbols in 0.9.31" link="api-index-0-9-31.html"/>
- <sub name="Index of new symbols in 0.9.38" link="api-index-0-9-38.html"/>
- <sub name="Index of new symbols in 0.9.39" link="api-index-0-9-39.html"/>
- <sub name="Index of new symbols in 0.9.41" link="api-index-0-9-41.html"/>
- <sub name="Index of new symbols in 0.9.42" link="api-index-0-9-42.html"/>
- <sub name="Index of new symbols in 1.0.5" link="api-index-1-0-5.html"/>
- <sub name="Index of new symbols in 1.1.2" link="api-index-1-1-2.html"/>
- <sub name="Index of new symbols in 1.1.3" link="api-index-1-1-3.html"/>
- <sub name="Index of new symbols in 1.2.3" link="api-index-1-2-3.html"/>
- <sub name="Index of new symbols in 1.3.3" link="api-index-1-3-3.html"/>
- <sub name="Index of new symbols in 1.4.2" link="api-index-1-4-2.html"/>
- <sub name="Index of new symbols in 1.4.3" link="api-index-1-4-3.html"/>
- <sub name="Index of new symbols in 1.5.0" link="api-index-1-5-0.html"/>
- <sub name="Index of new symbols in 1.6.0" link="api-index-1-6-0.html"/>
<sub name="Index of deprecated API" link="deprecated-api-index.html"/>
+ <sub name="Index of new symbols in 2.1.0" link="api-index-2-1-0.html"/>
+ <sub name="Index of new symbols in 2.0.0" link="api-index-2-0-0.html"/>
+ <sub name="Index of new symbols in 1.9.0" link="api-index-1-9-0.html"/>
+ <sub name="Index of new symbols in 1.8.6" link="api-index-1-8-6.html"/>
+ <sub name="Index of new symbols in 1.8.5" link="api-index-1-8-5.html"/>
+ <sub name="Index of new symbols in 1.8.1" link="api-index-1-8-1.html"/>
+ <sub name="Index of new symbols in 1.8.0" link="api-index-1-8-0.html"/>
+ <sub name="Index of new symbols in 1.7.7" link="api-index-1-7-7.html"/>
+ <sub name="Index of new symbols in 1.7.5" link="api-index-1-7-5.html"/>
+ <sub name="Index of new symbols in 1.6.0" link="api-index-1-6-0.html"/>
+ <sub name="Index of new symbols in 1.5.0" link="api-index-1-5-0.html"/>
+ <sub name="Index of new symbols in 1.4.3" link="api-index-1-4-3.html"/>
+ <sub name="Index of new symbols in 1.4.2" link="api-index-1-4-2.html"/>
+ <sub name="Index of new symbols in 1.4.0" link="api-index-1-4-0.html"/>
+ <sub name="Index of new symbols in 1.3.3" link="api-index-1-3-3.html"/>
+ <sub name="Index of new symbols in 1.2.3" link="api-index-1-2-3.html"/>
+ <sub name="Index of new symbols in 1.1.3" link="api-index-1-1-3.html"/>
+ <sub name="Index of new symbols in 1.1.2" link="api-index-1-1-2.html"/>
+ <sub name="Index of new symbols in 1.0.5" link="api-index-1-0-5.html"/>
+ <sub name="Index of new symbols in 0.9.42" link="api-index-0-9-42.html"/>
+ <sub name="Index of new symbols in 0.9.41" link="api-index-0-9-41.html"/>
+ <sub name="Index of new symbols in 0.9.39" link="api-index-0-9-39.html"/>
+ <sub name="Index of new symbols in 0.9.38" link="api-index-0-9-38.html"/>
+ <sub name="Index of new symbols in 0.9.31" link="api-index-0-9-31.html"/>
+ <sub name="Index of new symbols in 0.9.30" link="api-index-0-9-30.html"/>
+ <sub name="Index of new symbols in 0.9.28" link="api-index-0-9-28.html"/>
+ <sub name="Index of new symbols in 0.9.22" link="api-index-0-9-22.html"/>
+ <sub name="Index of new symbols in 0.9.20" link="api-index-0-9-20.html"/>
+ <sub name="Index of new symbols in 0.9.11" link="api-index-0-9-11.html"/>
+ <sub name="Index of new symbols in 0.9.10" link="api-index-0-9-10.html"/>
+ <sub name="Index of new symbols in 0.9.8" link="api-index-0-9-8.html"/>
+ <sub name="Index of new symbols in 0.9.7" link="api-index-0-9-7.html"/>
+ <sub name="Index of new symbols in 0.9.5" link="api-index-0-9-5.html"/>
+ <sub name="Index of new symbols in 0.9.2" link="api-index-0-9-2.html"/>
<sub name="Annotation Glossary" link="annotation-glossary.html"/>
</sub>
</chapters>
<functions>
+ <keyword type="function" name="hb_blob_create ()" link="harfbuzz-hb-blob.html#hb-blob-create" since="0.9.2"/>
+ <keyword type="function" name="hb_blob_create_from_file ()" link="harfbuzz-hb-blob.html#hb-blob-create-from-file" since="1.7.7"/>
+ <keyword type="function" name="hb_blob_create_sub_blob ()" link="harfbuzz-hb-blob.html#hb-blob-create-sub-blob" since="0.9.2"/>
+ <keyword type="function" name="hb_blob_copy_writable_or_fail ()" link="harfbuzz-hb-blob.html#hb-blob-copy-writable-or-fail" since="1.8.0"/>
+ <keyword type="function" name="hb_blob_destroy ()" link="harfbuzz-hb-blob.html#hb-blob-destroy" since="0.9.2"/>
+ <keyword type="function" name="hb_blob_get_data ()" link="harfbuzz-hb-blob.html#hb-blob-get-data" since="0.9.2"/>
+ <keyword type="function" name="hb_blob_get_data_writable ()" link="harfbuzz-hb-blob.html#hb-blob-get-data-writable" since="0.9.2"/>
+ <keyword type="function" name="hb_blob_get_empty ()" link="harfbuzz-hb-blob.html#hb-blob-get-empty" since="0.9.2"/>
+ <keyword type="function" name="hb_blob_get_length ()" link="harfbuzz-hb-blob.html#hb-blob-get-length" since="0.9.2"/>
+ <keyword type="function" name="hb_blob_get_user_data ()" link="harfbuzz-hb-blob.html#hb-blob-get-user-data" since="0.9.2"/>
+ <keyword type="function" name="hb_blob_is_immutable ()" link="harfbuzz-hb-blob.html#hb-blob-is-immutable" since="0.9.2"/>
+ <keyword type="function" name="hb_blob_make_immutable ()" link="harfbuzz-hb-blob.html#hb-blob-make-immutable" since="0.9.2"/>
+ <keyword type="function" name="hb_blob_reference ()" link="harfbuzz-hb-blob.html#hb-blob-reference" since="0.9.2"/>
+ <keyword type="function" name="hb_blob_set_user_data ()" link="harfbuzz-hb-blob.html#hb-blob-set-user-data" since="0.9.2"/>
+ <keyword type="typedef" name="hb_blob_t" link="harfbuzz-hb-blob.html#hb-blob-t"/>
+ <keyword type="enum" name="enum hb_memory_mode_t" link="harfbuzz-hb-blob.html#hb-memory-mode-t"/>
+ <keyword type="function" name="hb_buffer_create ()" link="harfbuzz-hb-buffer.html#hb-buffer-create" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_reference ()" link="harfbuzz-hb-buffer.html#hb-buffer-reference" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_get_empty ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-empty" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_destroy ()" link="harfbuzz-hb-buffer.html#hb-buffer-destroy" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_reset ()" link="harfbuzz-hb-buffer.html#hb-buffer-reset" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_clear_contents ()" link="harfbuzz-hb-buffer.html#hb-buffer-clear-contents" since="0.9.11"/>
+ <keyword type="function" name="hb_buffer_pre_allocate ()" link="harfbuzz-hb-buffer.html#hb-buffer-pre-allocate" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_allocation_successful ()" link="harfbuzz-hb-buffer.html#hb-buffer-allocation-successful" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_add ()" link="harfbuzz-hb-buffer.html#hb-buffer-add" since="0.9.7"/>
+ <keyword type="function" name="hb_buffer_add_codepoints ()" link="harfbuzz-hb-buffer.html#hb-buffer-add-codepoints" since="0.9.31"/>
+ <keyword type="function" name="hb_buffer_add_utf32 ()" link="harfbuzz-hb-buffer.html#hb-buffer-add-utf32" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_add_utf16 ()" link="harfbuzz-hb-buffer.html#hb-buffer-add-utf16" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_add_utf8 ()" link="harfbuzz-hb-buffer.html#hb-buffer-add-utf8" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_add_latin1 ()" link="harfbuzz-hb-buffer.html#hb-buffer-add-latin1" since="0.9.39"/>
+ <keyword type="function" name="hb_buffer_append ()" link="harfbuzz-hb-buffer.html#hb-buffer-append" since="1.5.0"/>
+ <keyword type="function" name="hb_buffer_set_content_type ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-content-type" since="0.9.5"/>
+ <keyword type="function" name="hb_buffer_get_content_type ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-content-type" since="0.9.5"/>
+ <keyword type="function" name="hb_buffer_set_direction ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-direction" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_get_direction ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-direction" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_set_script ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-script" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_get_script ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-script" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_set_language ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-language" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_get_language ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-language" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_set_flags ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-flags" since="0.9.7"/>
+ <keyword type="function" name="hb_buffer_get_flags ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-flags" since="0.9.7"/>
+ <keyword type="function" name="hb_buffer_set_cluster_level ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-cluster-level" since="0.9.42"/>
+ <keyword type="function" name="hb_buffer_get_cluster_level ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-cluster-level" since="0.9.42"/>
+ <keyword type="function" name="hb_buffer_set_length ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-length" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_get_length ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-length" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_set_segment_properties ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-segment-properties" since="0.9.7"/>
+ <keyword type="function" name="hb_buffer_get_segment_properties ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-segment-properties" since="0.9.7"/>
+ <keyword type="function" name="hb_buffer_guess_segment_properties ()" link="harfbuzz-hb-buffer.html#hb-buffer-guess-segment-properties" since="0.9.7"/>
+ <keyword type="function" name="hb_buffer_set_unicode_funcs ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-unicode-funcs" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_get_unicode_funcs ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-unicode-funcs" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_set_user_data ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-user-data" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_get_user_data ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-user-data" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_get_glyph_infos ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-glyph-infos" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_get_glyph_positions ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-glyph-positions" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_get_invisible_glyph ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-invisible-glyph" since="2.0.0"/>
+ <keyword type="function" name="hb_buffer_set_invisible_glyph ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-invisible-glyph" since="2.0.0"/>
+ <keyword type="function" name="hb_buffer_set_replacement_codepoint ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-replacement-codepoint" since="0.9.31"/>
+ <keyword type="function" name="hb_buffer_get_replacement_codepoint ()" link="harfbuzz-hb-buffer.html#hb-buffer-get-replacement-codepoint" since="0.9.31"/>
+ <keyword type="function" name="hb_buffer_normalize_glyphs ()" link="harfbuzz-hb-buffer.html#hb-buffer-normalize-glyphs" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_reverse ()" link="harfbuzz-hb-buffer.html#hb-buffer-reverse" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_reverse_range ()" link="harfbuzz-hb-buffer.html#hb-buffer-reverse-range" since="0.9.41"/>
+ <keyword type="function" name="hb_buffer_reverse_clusters ()" link="harfbuzz-hb-buffer.html#hb-buffer-reverse-clusters" since="0.9.2"/>
+ <keyword type="function" name="hb_buffer_serialize_glyphs ()" link="harfbuzz-hb-buffer.html#hb-buffer-serialize-glyphs" since="0.9.7"/>
+ <keyword type="function" name="hb_buffer_deserialize_glyphs ()" link="harfbuzz-hb-buffer.html#hb-buffer-deserialize-glyphs" since="0.9.7"/>
+ <keyword type="function" name="hb_buffer_serialize_format_from_string ()" link="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-from-string" since="0.9.7"/>
+ <keyword type="function" name="hb_buffer_serialize_format_to_string ()" link="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-to-string" since="0.9.7"/>
+ <keyword type="function" name="hb_buffer_serialize_list_formats ()" link="harfbuzz-hb-buffer.html#hb-buffer-serialize-list-formats" since="0.9.7"/>
+ <keyword type="function" name="hb_segment_properties_equal ()" link="harfbuzz-hb-buffer.html#hb-segment-properties-equal" since="0.9.7"/>
+ <keyword type="function" name="hb_segment_properties_hash ()" link="harfbuzz-hb-buffer.html#hb-segment-properties-hash" since="0.9.7"/>
+ <keyword type="function" name="hb_buffer_diff ()" link="harfbuzz-hb-buffer.html#hb-buffer-diff" since="1.5.0"/>
+ <keyword type="function" name="hb_buffer_set_message_func ()" link="harfbuzz-hb-buffer.html#hb-buffer-set-message-func" since="1.1.3"/>
+ <keyword type="function" name="hb_glyph_info_get_glyph_flags ()" link="harfbuzz-hb-buffer.html#hb-glyph-info-get-glyph-flags" since="1.5.0"/>
+ <keyword type="function" name="hb_buffer_message_func_t ()" link="harfbuzz-hb-buffer.html#hb-buffer-message-func-t"/>
+ <keyword type="macro" name="HB_SEGMENT_PROPERTIES_DEFAULT" link="harfbuzz-hb-buffer.html#HB-SEGMENT-PROPERTIES-DEFAULT:CAPS"/>
+ <keyword type="macro" name="HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT" link="harfbuzz-hb-buffer.html#HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS" since="0.9.31"/>
+ <keyword type="typedef" name="hb_buffer_t" link="harfbuzz-hb-buffer.html#hb-buffer-t"/>
+ <keyword type="enum" name="enum hb_glyph_flags_t" link="harfbuzz-hb-buffer.html#hb-glyph-flags-t" since="1.5.0"/>
+ <keyword type="struct" name="hb_glyph_position_t" link="harfbuzz-hb-buffer.html#hb-glyph-position-t-struct"/>
+ <keyword type="enum" name="enum hb_buffer_content_type_t" link="harfbuzz-hb-buffer.html#hb-buffer-content-type-t"/>
+ <keyword type="enum" name="enum hb_buffer_flags_t" link="harfbuzz-hb-buffer.html#hb-buffer-flags-t" since="0.9.20"/>
+ <keyword type="enum" name="enum hb_buffer_cluster_level_t" link="harfbuzz-hb-buffer.html#hb-buffer-cluster-level-t" since="0.9.42"/>
+ <keyword type="struct" name="hb_segment_properties_t" link="harfbuzz-hb-buffer.html#hb-segment-properties-t-struct"/>
+ <keyword type="enum" name="enum hb_buffer_serialize_format_t" link="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" since="0.9.2"/>
+ <keyword type="enum" name="enum hb_buffer_serialize_flags_t" link="harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t" since="0.9.20"/>
+ <keyword type="enum" name="enum hb_buffer_diff_flags_t" link="harfbuzz-hb-buffer.html#hb-buffer-diff-flags-t"/>
<keyword type="function" name="hb_tag_from_string ()" link="harfbuzz-hb-common.html#hb-tag-from-string" since="0.9.2"/>
<keyword type="function" name="hb_tag_to_string ()" link="harfbuzz-hb-common.html#hb-tag-to-string" since="0.9.5"/>
<keyword type="function" name="hb_direction_from_string ()" link="harfbuzz-hb-common.html#hb-direction-from-string" since="0.9.2"/>
@@ -131,127 +258,22 @@
<keyword type="macro" name="HB_TAG_MAX" link="harfbuzz-hb-common.html#HB-TAG-MAX:CAPS"/>
<keyword type="macro" name="HB_TAG_MAX_SIGNED" link="harfbuzz-hb-common.html#HB-TAG-MAX-SIGNED:CAPS"/>
<keyword type="macro" name="HB_LANGUAGE_INVALID" link="harfbuzz-hb-common.html#HB-LANGUAGE-INVALID:CAPS"/>
- <keyword type="function" name="hb_unicode_combining_class ()" link="harfbuzz-hb-unicode.html#hb-unicode-combining-class" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_combining_class_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-combining-class-func-t"/>
- <keyword type="function" name="hb_unicode_compose ()" link="harfbuzz-hb-unicode.html#hb-unicode-compose" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_compose_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-compose-func-t"/>
- <keyword type="function" name="hb_unicode_decompose ()" link="harfbuzz-hb-unicode.html#hb-unicode-decompose" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_decompose_compatibility ()" link="harfbuzz-hb-unicode.html#hb-unicode-decompose-compatibility" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_decompose_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-decompose-func-t"/>
- <keyword type="function" name="hb_unicode_eastasian_width ()" link="harfbuzz-hb-unicode.html#hb-unicode-eastasian-width" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_create ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-create" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_destroy ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-destroy" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_get_default ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-default"/>
- <keyword type="function" name="hb_unicode_funcs_get_empty ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-empty" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_get_parent ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-parent" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_get_user_data ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-user-data" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_is_immutable ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-is-immutable" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_make_immutable ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-make-immutable" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_reference ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-reference" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_set_combining_class_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-combining-class-func" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_set_compose_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-compose-func" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_set_decompose_compatibility_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-decompose-compatibility-func" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_set_decompose_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-decompose-func" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_set_eastasian_width_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-eastasian-width-func" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_set_general_category_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-general-category-func" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_set_mirroring_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-mirroring-func" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_set_script_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-script-func" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_funcs_set_user_data ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-user-data" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_general_category ()" link="harfbuzz-hb-unicode.html#hb-unicode-general-category" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_general_category_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-general-category-func-t"/>
- <keyword type="function" name="hb_unicode_mirroring ()" link="harfbuzz-hb-unicode.html#hb-unicode-mirroring" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_mirroring_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-mirroring-func-t"/>
- <keyword type="function" name="hb_unicode_script ()" link="harfbuzz-hb-unicode.html#hb-unicode-script" since="0.9.2"/>
- <keyword type="function" name="hb_unicode_script_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-script-func-t"/>
- <keyword type="macro" name="HB_UNICODE_MAX_DECOMPOSITION_LEN" link="harfbuzz-hb-unicode.html#HB-UNICODE-MAX-DECOMPOSITION-LEN:CAPS"/>
- <keyword type="enum" name="enum hb_unicode_combining_class_t" link="harfbuzz-hb-unicode.html#hb-unicode-combining-class-t"/>
- <keyword type="typedef" name="hb_unicode_funcs_t" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"/>
- <keyword type="enum" name="enum hb_unicode_general_category_t" link="harfbuzz-hb-unicode.html#hb-unicode-general-category-t"/>
- <keyword type="function" name="hb_buffer_create ()" link="harfbuzz-Buffers.html#hb-buffer-create" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_reference ()" link="harfbuzz-Buffers.html#hb-buffer-reference" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_get_empty ()" link="harfbuzz-Buffers.html#hb-buffer-get-empty" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_destroy ()" link="harfbuzz-Buffers.html#hb-buffer-destroy" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_reset ()" link="harfbuzz-Buffers.html#hb-buffer-reset" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_clear_contents ()" link="harfbuzz-Buffers.html#hb-buffer-clear-contents" since="0.9.11"/>
- <keyword type="function" name="hb_buffer_pre_allocate ()" link="harfbuzz-Buffers.html#hb-buffer-pre-allocate" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_allocation_successful ()" link="harfbuzz-Buffers.html#hb-buffer-allocation-successful" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_add ()" link="harfbuzz-Buffers.html#hb-buffer-add" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_add_codepoints ()" link="harfbuzz-Buffers.html#hb-buffer-add-codepoints" since="0.9.31"/>
- <keyword type="function" name="hb_buffer_add_utf32 ()" link="harfbuzz-Buffers.html#hb-buffer-add-utf32" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_add_utf16 ()" link="harfbuzz-Buffers.html#hb-buffer-add-utf16" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_add_utf8 ()" link="harfbuzz-Buffers.html#hb-buffer-add-utf8" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_add_latin1 ()" link="harfbuzz-Buffers.html#hb-buffer-add-latin1" since="0.9.39"/>
- <keyword type="function" name="hb_buffer_append ()" link="harfbuzz-Buffers.html#hb-buffer-append" since="1.5.0"/>
- <keyword type="function" name="hb_buffer_set_content_type ()" link="harfbuzz-Buffers.html#hb-buffer-set-content-type" since="0.9.5"/>
- <keyword type="function" name="hb_buffer_get_content_type ()" link="harfbuzz-Buffers.html#hb-buffer-get-content-type" since="0.9.5"/>
- <keyword type="function" name="hb_buffer_set_direction ()" link="harfbuzz-Buffers.html#hb-buffer-set-direction" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_get_direction ()" link="harfbuzz-Buffers.html#hb-buffer-get-direction" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_set_script ()" link="harfbuzz-Buffers.html#hb-buffer-set-script" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_get_script ()" link="harfbuzz-Buffers.html#hb-buffer-get-script" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_set_language ()" link="harfbuzz-Buffers.html#hb-buffer-set-language" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_get_language ()" link="harfbuzz-Buffers.html#hb-buffer-get-language" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_set_flags ()" link="harfbuzz-Buffers.html#hb-buffer-set-flags" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_get_flags ()" link="harfbuzz-Buffers.html#hb-buffer-get-flags" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_set_cluster_level ()" link="harfbuzz-Buffers.html#hb-buffer-set-cluster-level" since="0.9.42"/>
- <keyword type="function" name="hb_buffer_get_cluster_level ()" link="harfbuzz-Buffers.html#hb-buffer-get-cluster-level" since="0.9.42"/>
- <keyword type="function" name="hb_buffer_set_length ()" link="harfbuzz-Buffers.html#hb-buffer-set-length" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_get_length ()" link="harfbuzz-Buffers.html#hb-buffer-get-length" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_set_segment_properties ()" link="harfbuzz-Buffers.html#hb-buffer-set-segment-properties" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_get_segment_properties ()" link="harfbuzz-Buffers.html#hb-buffer-get-segment-properties" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_guess_segment_properties ()" link="harfbuzz-Buffers.html#hb-buffer-guess-segment-properties" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_set_unicode_funcs ()" link="harfbuzz-Buffers.html#hb-buffer-set-unicode-funcs" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_get_unicode_funcs ()" link="harfbuzz-Buffers.html#hb-buffer-get-unicode-funcs" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_set_user_data ()" link="harfbuzz-Buffers.html#hb-buffer-set-user-data" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_get_user_data ()" link="harfbuzz-Buffers.html#hb-buffer-get-user-data" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_get_glyph_infos ()" link="harfbuzz-Buffers.html#hb-buffer-get-glyph-infos" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_get_glyph_positions ()" link="harfbuzz-Buffers.html#hb-buffer-get-glyph-positions" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_set_replacement_codepoint ()" link="harfbuzz-Buffers.html#hb-buffer-set-replacement-codepoint" since="0.9.31"/>
- <keyword type="function" name="hb_buffer_get_replacement_codepoint ()" link="harfbuzz-Buffers.html#hb-buffer-get-replacement-codepoint" since="0.9.31"/>
- <keyword type="function" name="hb_buffer_normalize_glyphs ()" link="harfbuzz-Buffers.html#hb-buffer-normalize-glyphs" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_reverse ()" link="harfbuzz-Buffers.html#hb-buffer-reverse" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_reverse_range ()" link="harfbuzz-Buffers.html#hb-buffer-reverse-range" since="0.9.41"/>
- <keyword type="function" name="hb_buffer_reverse_clusters ()" link="harfbuzz-Buffers.html#hb-buffer-reverse-clusters" since="0.9.2"/>
- <keyword type="function" name="hb_buffer_serialize_glyphs ()" link="harfbuzz-Buffers.html#hb-buffer-serialize-glyphs" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_deserialize_glyphs ()" link="harfbuzz-Buffers.html#hb-buffer-deserialize-glyphs" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_serialize_format_from_string ()" link="harfbuzz-Buffers.html#hb-buffer-serialize-format-from-string" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_serialize_format_to_string ()" link="harfbuzz-Buffers.html#hb-buffer-serialize-format-to-string" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_serialize_list_formats ()" link="harfbuzz-Buffers.html#hb-buffer-serialize-list-formats" since="0.9.7"/>
- <keyword type="function" name="hb_segment_properties_equal ()" link="harfbuzz-Buffers.html#hb-segment-properties-equal" since="0.9.7"/>
- <keyword type="function" name="hb_segment_properties_hash ()" link="harfbuzz-Buffers.html#hb-segment-properties-hash" since="0.9.7"/>
- <keyword type="function" name="hb_buffer_diff ()" link="harfbuzz-Buffers.html#hb-buffer-diff" since="1.5.0"/>
- <keyword type="function" name="hb_buffer_set_message_func ()" link="harfbuzz-Buffers.html#hb-buffer-set-message-func" since="1.1.3"/>
- <keyword type="function" name="hb_glyph_info_get_glyph_flags ()" link="harfbuzz-Buffers.html#hb-glyph-info-get-glyph-flags" since="1.5.0"/>
- <keyword type="function" name="hb_buffer_message_func_t ()" link="harfbuzz-Buffers.html#hb-buffer-message-func-t"/>
- <keyword type="macro" name="HB_SEGMENT_PROPERTIES_DEFAULT" link="harfbuzz-Buffers.html#HB-SEGMENT-PROPERTIES-DEFAULT:CAPS"/>
- <keyword type="macro" name="HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT" link="harfbuzz-Buffers.html#HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS" since="0.9.31"/>
- <keyword type="typedef" name="hb_buffer_t" link="harfbuzz-Buffers.html#hb-buffer-t"/>
- <keyword type="struct" name="hb_glyph_info_t" link="harfbuzz-Buffers.html#hb-glyph-info-t-struct"/>
- <keyword type="enum" name="enum hb_glyph_flags_t" link="harfbuzz-Buffers.html#hb-glyph-flags-t"/>
- <keyword type="struct" name="hb_glyph_position_t" link="harfbuzz-Buffers.html#hb-glyph-position-t-struct"/>
- <keyword type="enum" name="enum hb_buffer_content_type_t" link="harfbuzz-Buffers.html#hb-buffer-content-type-t"/>
- <keyword type="enum" name="enum hb_buffer_flags_t" link="harfbuzz-Buffers.html#hb-buffer-flags-t" since="0.9.20"/>
- <keyword type="enum" name="enum hb_buffer_cluster_level_t" link="harfbuzz-Buffers.html#hb-buffer-cluster-level-t"/>
- <keyword type="struct" name="hb_segment_properties_t" link="harfbuzz-Buffers.html#hb-segment-properties-t-struct"/>
- <keyword type="enum" name="enum hb_buffer_serialize_format_t" link="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" since="0.9.2"/>
- <keyword type="enum" name="enum hb_buffer_serialize_flags_t" link="harfbuzz-Buffers.html#hb-buffer-serialize-flags-t" since="0.9.20"/>
- <keyword type="enum" name="enum hb_buffer_diff_flags_t" link="harfbuzz-Buffers.html#hb-buffer-diff-flags-t"/>
- <keyword type="function" name="hb_blob_create ()" link="harfbuzz-hb-blob.html#hb-blob-create" since="0.9.2"/>
- <keyword type="function" name="hb_blob_create_from_file ()" link="harfbuzz-hb-blob.html#hb-blob-create-from-file" since="1.7.7"/>
- <keyword type="function" name="hb_blob_create_sub_blob ()" link="harfbuzz-hb-blob.html#hb-blob-create-sub-blob" since="0.9.2"/>
- <keyword type="function" name="hb_blob_copy_writable_or_fail ()" link="harfbuzz-hb-blob.html#hb-blob-copy-writable-or-fail" since="1.8.0"/>
- <keyword type="function" name="hb_blob_destroy ()" link="harfbuzz-hb-blob.html#hb-blob-destroy" since="0.9.2"/>
- <keyword type="function" name="hb_blob_get_data ()" link="harfbuzz-hb-blob.html#hb-blob-get-data" since="0.9.2"/>
- <keyword type="function" name="hb_blob_get_data_writable ()" link="harfbuzz-hb-blob.html#hb-blob-get-data-writable" since="0.9.2"/>
- <keyword type="function" name="hb_blob_get_empty ()" link="harfbuzz-hb-blob.html#hb-blob-get-empty" since="0.9.2"/>
- <keyword type="function" name="hb_blob_get_length ()" link="harfbuzz-hb-blob.html#hb-blob-get-length" since="0.9.2"/>
- <keyword type="function" name="hb_blob_get_user_data ()" link="harfbuzz-hb-blob.html#hb-blob-get-user-data" since="0.9.2"/>
- <keyword type="function" name="hb_blob_is_immutable ()" link="harfbuzz-hb-blob.html#hb-blob-is-immutable" since="0.9.2"/>
- <keyword type="function" name="hb_blob_make_immutable ()" link="harfbuzz-hb-blob.html#hb-blob-make-immutable" since="0.9.2"/>
- <keyword type="function" name="hb_blob_reference ()" link="harfbuzz-hb-blob.html#hb-blob-reference" since="0.9.2"/>
- <keyword type="function" name="hb_blob_set_user_data ()" link="harfbuzz-hb-blob.html#hb-blob-set-user-data" since="0.9.2"/>
- <keyword type="typedef" name="hb_blob_t" link="harfbuzz-hb-blob.html#hb-blob-t"/>
- <keyword type="enum" name="enum hb_memory_mode_t" link="harfbuzz-hb-blob.html#hb-memory-mode-t"/>
- <keyword type="function" name="hb_face_count ()" link="harfbuzz-hb-face.html#hb-face-count"/>
+ <keyword type="function" name="hb_font_get_glyph_func_t ()" link="harfbuzz-hb-deprecated.html#hb-font-get-glyph-func-t" deprecated=""/>
+ <keyword type="function" name="hb_ot_layout_table_find_script ()" link="harfbuzz-hb-deprecated.html#hb-ot-layout-table-find-script"/>
+ <keyword type="function" name="hb_font_funcs_set_glyph_h_kerning_func ()" link="harfbuzz-hb-deprecated.html#hb-font-funcs-set-glyph-h-kerning-func" deprecated="2.0.0" since="0.9.2"/>
+ <keyword type="function" name="hb_font_funcs_set_glyph_v_kerning_func ()" link="harfbuzz-hb-deprecated.html#hb-font-funcs-set-glyph-v-kerning-func" deprecated="2.0.0" since="0.9.2"/>
+ <keyword type="function" name="hb_font_get_glyph_h_kerning ()" link="harfbuzz-hb-deprecated.html#hb-font-get-glyph-h-kerning" deprecated="2.0.0" since="0.9.2"/>
+ <keyword type="function" name="hb_font_get_glyph_kerning_for_direction ()" link="harfbuzz-hb-deprecated.html#hb-font-get-glyph-kerning-for-direction" deprecated="2.0.0" since="0.9.2"/>
+ <keyword type="function" name="hb_font_get_glyph_kerning_func_t ()" link="harfbuzz-hb-deprecated.html#hb-font-get-glyph-kerning-func-t" deprecated=""/>
+ <keyword type="function" name="hb_font_get_glyph_v_kerning ()" link="harfbuzz-hb-deprecated.html#hb-font-get-glyph-v-kerning" deprecated="2.0.0" since="0.9.2"/>
+ <keyword type="macro" name="HB_BUFFER_FLAGS_DEFAULT" link="harfbuzz-hb-deprecated.html#HB-BUFFER-FLAGS-DEFAULT:CAPS" deprecated=""/>
+ <keyword type="macro" name="HB_BUFFER_SERIALIZE_FLAGS_DEFAULT" link="harfbuzz-hb-deprecated.html#HB-BUFFER-SERIALIZE-FLAGS-DEFAULT:CAPS" deprecated=""/>
+ <keyword type="macro" name="HB_SCRIPT_CANADIAN_ABORIGINAL" link="harfbuzz-hb-deprecated.html#HB-SCRIPT-CANADIAN-ABORIGINAL:CAPS" deprecated=""/>
+ <keyword type="macro" name="HB_OT_VAR_NO_AXIS_INDEX" link="harfbuzz-hb-deprecated.html#HB-OT-VAR-NO-AXIS-INDEX:CAPS" deprecated="2.2.0" since="1.4.2"/>
+ <keyword type="macro" name="HB_UNICODE_MAX_DECOMPOSITION_LEN" link="harfbuzz-hb-deprecated.html#HB-UNICODE-MAX-DECOMPOSITION-LEN:CAPS" deprecated="2.0.0"/>
+ <keyword type="typedef" name="hb_font_get_glyph_h_kerning_func_t" link="harfbuzz-hb-deprecated.html#hb-font-get-glyph-h-kerning-func-t" deprecated=""/>
+ <keyword type="typedef" name="hb_font_get_glyph_v_kerning_func_t" link="harfbuzz-hb-deprecated.html#hb-font-get-glyph-v-kerning-func-t" deprecated=""/>
+ <keyword type="function" name="hb_face_count ()" link="harfbuzz-hb-face.html#hb-face-count" since="1.7.7"/>
<keyword type="function" name="hb_face_create ()" link="harfbuzz-hb-face.html#hb-face-create" since="0.9.2"/>
<keyword type="function" name="hb_face_create_for_tables ()" link="harfbuzz-hb-face.html#hb-face-create-for-tables" since="0.9.2"/>
<keyword type="function" name="hb_face_destroy ()" link="harfbuzz-hb-face.html#hb-face-destroy" since="0.9.2"/>
@@ -270,6 +292,11 @@
<keyword type="function" name="hb_face_set_index ()" link="harfbuzz-hb-face.html#hb-face-set-index" since="0.9.2"/>
<keyword type="function" name="hb_face_set_upem ()" link="harfbuzz-hb-face.html#hb-face-set-upem" since="0.9.2"/>
<keyword type="function" name="hb_face_set_user_data ()" link="harfbuzz-hb-face.html#hb-face-set-user-data" since="0.9.2"/>
+ <keyword type="function" name="hb_face_collect_unicodes ()" link="harfbuzz-hb-face.html#hb-face-collect-unicodes" since="1.9.0"/>
+ <keyword type="function" name="hb_face_collect_variation_selectors ()" link="harfbuzz-hb-face.html#hb-face-collect-variation-selectors" since="1.9.0"/>
+ <keyword type="function" name="hb_face_collect_variation_unicodes ()" link="harfbuzz-hb-face.html#hb-face-collect-variation-unicodes" since="1.9.0"/>
+ <keyword type="function" name="hb_face_builder_create ()" link="harfbuzz-hb-face.html#hb-face-builder-create" since="1.9.0"/>
+ <keyword type="function" name="hb_face_builder_add_table ()" link="harfbuzz-hb-face.html#hb-face-builder-add-table" since="1.9.0"/>
<keyword type="typedef" name="hb_face_t" link="harfbuzz-hb-face.html#hb-face-t"/>
<keyword type="function" name="hb_font_add_glyph_origin_for_direction ()" link="harfbuzz-hb-font.html#hb-font-add-glyph-origin-for-direction" since="0.9.2"/>
<keyword type="function" name="hb_font_create ()" link="harfbuzz-hb-font.html#hb-font-create" since="0.9.2"/>
@@ -286,13 +313,14 @@
<keyword type="function" name="hb_font_funcs_set_glyph_extents_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-extents-func" since="0.9.2"/>
<keyword type="function" name="hb_font_funcs_set_glyph_from_name_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-from-name-func" since="0.9.2"/>
<keyword type="function" name="hb_font_funcs_set_glyph_h_advance_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-advance-func" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_set_glyph_h_kerning_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-kerning-func" since="0.9.2"/>
+ <keyword type="function" name="hb_font_funcs_set_glyph_h_advances_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-advances-func" since="1.8.6"/>
<keyword type="function" name="hb_font_funcs_set_glyph_h_origin_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-h-origin-func" since="0.9.2"/>
<keyword type="function" name="hb_font_funcs_set_glyph_name_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-name-func" since="0.9.2"/>
<keyword type="function" name="hb_font_funcs_set_glyph_v_advance_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-advance-func" since="0.9.2"/>
- <keyword type="function" name="hb_font_funcs_set_glyph_v_kerning_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-kerning-func" since="0.9.2"/>
+ <keyword type="function" name="hb_font_funcs_set_glyph_v_advances_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-advances-func" since="1.8.6"/>
<keyword type="function" name="hb_font_funcs_set_glyph_v_origin_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-glyph-v-origin-func" since="0.9.2"/>
<keyword type="function" name="hb_font_funcs_set_nominal_glyph_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-nominal-glyph-func" since="1.2.3"/>
+ <keyword type="function" name="hb_font_funcs_set_nominal_glyphs_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-nominal-glyphs-func" since="2.0.0"/>
<keyword type="function" name="hb_font_funcs_set_user_data ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-user-data" since="0.9.2"/>
<keyword type="function" name="hb_font_funcs_set_variation_glyph_func ()" link="harfbuzz-hb-font.html#hb-font-funcs-set-variation-glyph-func" since="1.2.3"/>
<keyword type="function" name="hb_font_get_empty ()" link="harfbuzz-hb-font.html#hb-font-get-empty" since="0.9.2"/>
@@ -300,6 +328,8 @@
<keyword type="function" name="hb_font_get_glyph ()" link="harfbuzz-hb-font.html#hb-font-get-glyph" since="0.9.2"/>
<keyword type="function" name="hb_font_get_glyph_advance_for_direction ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-advance-for-direction" since="0.9.2"/>
<keyword type="function" name="hb_font_get_glyph_advance_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-advance-func-t"/>
+ <keyword type="function" name="hb_font_get_glyph_advances_for_direction ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-advances-for-direction" since="1.8.6"/>
+ <keyword type="function" name="hb_font_get_glyph_advances_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-advances-func-t"/>
<keyword type="function" name="hb_font_get_glyph_contour_point ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-contour-point" since="0.9.2"/>
<keyword type="function" name="hb_font_get_glyph_contour_point_for_origin ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-contour-point-for-origin" since="0.9.2"/>
<keyword type="function" name="hb_font_get_glyph_contour_point_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-contour-point-func-t"/>
@@ -309,16 +339,14 @@
<keyword type="function" name="hb_font_get_glyph_from_name ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-from-name" since="0.9.2"/>
<keyword type="function" name="hb_font_get_glyph_from_name_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-from-name-func-t"/>
<keyword type="function" name="hb_font_get_glyph_h_advance ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-advance" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_h_kerning ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-kerning" since="0.9.2"/>
+ <keyword type="function" name="hb_font_get_glyph_h_advances ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-advances" since="1.8.6"/>
<keyword type="function" name="hb_font_get_glyph_h_origin ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-origin" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_kerning_for_direction ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-kerning-for-direction" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_kerning_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-kerning-func-t"/>
<keyword type="function" name="hb_font_get_glyph_name ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-name" since="0.9.2"/>
<keyword type="function" name="hb_font_get_glyph_name_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-name-func-t"/>
<keyword type="function" name="hb_font_get_glyph_origin_for_direction ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-origin-for-direction" since="0.9.2"/>
<keyword type="function" name="hb_font_get_glyph_origin_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-origin-func-t"/>
<keyword type="function" name="hb_font_get_glyph_v_advance ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-advance" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_v_kerning ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-kerning" since="0.9.2"/>
+ <keyword type="function" name="hb_font_get_glyph_v_advances ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-advances" since="1.8.6"/>
<keyword type="function" name="hb_font_get_glyph_v_origin ()" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-origin" since="0.9.2"/>
<keyword type="function" name="hb_font_get_nominal_glyph ()" link="harfbuzz-hb-font.html#hb-font-get-nominal-glyph" since="1.2.3"/>
<keyword type="function" name="hb_font_get_nominal_glyph_func_t ()" link="harfbuzz-hb-font.html#hb-font-get-nominal-glyph-func-t"/>
@@ -358,35 +386,31 @@
<keyword type="function" name="hb_font_get_v_extents ()" link="harfbuzz-hb-font.html#hb-font-get-v-extents" since="1.1.3"/>
<keyword type="typedef" name="hb_font_funcs_t" link="harfbuzz-hb-font.html#hb-font-funcs-t"/>
<keyword type="typedef" name="hb_font_get_glyph_h_advance_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-advance-func-t"/>
- <keyword type="typedef" name="hb_font_get_glyph_h_kerning_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-kerning-func-t"/>
+ <keyword type="typedef" name="hb_font_get_glyph_h_advances_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-advances-func-t"/>
<keyword type="typedef" name="hb_font_get_glyph_h_origin_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-h-origin-func-t"/>
<keyword type="typedef" name="hb_font_get_glyph_v_advance_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-advance-func-t"/>
- <keyword type="typedef" name="hb_font_get_glyph_v_kerning_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-kerning-func-t"/>
+ <keyword type="typedef" name="hb_font_get_glyph_v_advances_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-advances-func-t"/>
<keyword type="typedef" name="hb_font_get_glyph_v_origin_func_t" link="harfbuzz-hb-font.html#hb-font-get-glyph-v-origin-func-t"/>
<keyword type="struct" name="hb_variation_t" link="harfbuzz-hb-font.html#hb-variation-t" since="1.4.2"/>
<keyword type="typedef" name="hb_font_t" link="harfbuzz-hb-font.html#hb-font-t"/>
<keyword type="typedef" name="hb_font_get_font_h_extents_func_t" link="harfbuzz-hb-font.html#hb-font-get-font-h-extents-func-t"/>
<keyword type="typedef" name="hb_font_get_font_v_extents_func_t" link="harfbuzz-hb-font.html#hb-font-get-font-v-extents-func-t"/>
- <keyword type="function" name="hb_feature_from_string ()" link="harfbuzz-Shaping.html#hb-feature-from-string" since="0.9.5"/>
- <keyword type="function" name="hb_feature_to_string ()" link="harfbuzz-Shaping.html#hb-feature-to-string" since="0.9.5"/>
- <keyword type="function" name="hb_shape ()" link="harfbuzz-Shaping.html#hb-shape" since="0.9.2"/>
- <keyword type="function" name="hb_shape_full ()" link="harfbuzz-Shaping.html#hb-shape-full" since="0.9.2"/>
- <keyword type="function" name="hb_shape_list_shapers ()" link="harfbuzz-Shaping.html#hb-shape-list-shapers" since="0.9.2"/>
- <keyword type="struct" name="hb_feature_t" link="harfbuzz-Shaping.html#hb-feature-t-struct"/>
- <keyword type="macro" name="HB_VERSION_ATLEAST()" link="harfbuzz-hb-version.html#HB-VERSION-ATLEAST:CAPS"/>
- <keyword type="function" name="hb_version ()" link="harfbuzz-hb-version.html#hb-version" since="0.9.2"/>
- <keyword type="function" name="hb_version_atleast ()" link="harfbuzz-hb-version.html#hb-version-atleast" since="0.9.30"/>
- <keyword type="function" name="hb_version_string ()" link="harfbuzz-hb-version.html#hb-version-string" since="0.9.2"/>
- <keyword type="macro" name="HB_VERSION_MAJOR" link="harfbuzz-hb-version.html#HB-VERSION-MAJOR:CAPS"/>
- <keyword type="macro" name="HB_VERSION_MICRO" link="harfbuzz-hb-version.html#HB-VERSION-MICRO:CAPS"/>
- <keyword type="macro" name="HB_VERSION_MINOR" link="harfbuzz-hb-version.html#HB-VERSION-MINOR:CAPS"/>
- <keyword type="macro" name="HB_VERSION_STRING" link="harfbuzz-hb-version.html#HB-VERSION-STRING:CAPS"/>
- <keyword type="function" name="hb_font_funcs_set_glyph_func ()" link="harfbuzz-hb-deprecated.html#hb-font-funcs-set-glyph-func" deprecated="1.2.3" since="0.9.2"/>
- <keyword type="function" name="hb_font_get_glyph_func_t ()" link="harfbuzz-hb-deprecated.html#hb-font-get-glyph-func-t" deprecated=""/>
- <keyword type="function" name="hb_set_invert ()" link="harfbuzz-hb-deprecated.html#hb-set-invert" deprecated="1.6.1" since="0.9.10"/>
- <keyword type="macro" name="HB_BUFFER_FLAGS_DEFAULT" link="harfbuzz-hb-deprecated.html#HB-BUFFER-FLAGS-DEFAULT:CAPS" deprecated=""/>
- <keyword type="macro" name="HB_BUFFER_SERIALIZE_FLAGS_DEFAULT" link="harfbuzz-hb-deprecated.html#HB-BUFFER-SERIALIZE-FLAGS-DEFAULT:CAPS" deprecated=""/>
- <keyword type="macro" name="HB_SCRIPT_CANADIAN_ABORIGINAL" link="harfbuzz-hb-deprecated.html#HB-SCRIPT-CANADIAN-ABORIGINAL:CAPS" deprecated=""/>
+ <keyword type="function" name="hb_map_allocation_successful ()" link="harfbuzz-hb-map.html#hb-map-allocation-successful" since="1.7.7"/>
+ <keyword type="function" name="hb_map_clear ()" link="harfbuzz-hb-map.html#hb-map-clear" since="1.7.7"/>
+ <keyword type="function" name="hb_map_create ()" link="harfbuzz-hb-map.html#hb-map-create" since="1.7.7"/>
+ <keyword type="function" name="hb_map_del ()" link="harfbuzz-hb-map.html#hb-map-del" since="1.7.7"/>
+ <keyword type="function" name="hb_map_destroy ()" link="harfbuzz-hb-map.html#hb-map-destroy" since="1.7.7"/>
+ <keyword type="function" name="hb_map_get ()" link="harfbuzz-hb-map.html#hb-map-get" since="1.7.7"/>
+ <keyword type="function" name="hb_map_get_empty ()" link="harfbuzz-hb-map.html#hb-map-get-empty" since="1.7.7"/>
+ <keyword type="function" name="hb_map_get_population ()" link="harfbuzz-hb-map.html#hb-map-get-population" since="1.7.7"/>
+ <keyword type="function" name="hb_map_get_user_data ()" link="harfbuzz-hb-map.html#hb-map-get-user-data" since="1.7.7"/>
+ <keyword type="function" name="hb_map_has ()" link="harfbuzz-hb-map.html#hb-map-has" since="1.7.7"/>
+ <keyword type="function" name="hb_map_is_empty ()" link="harfbuzz-hb-map.html#hb-map-is-empty" since="1.7.7"/>
+ <keyword type="function" name="hb_map_reference ()" link="harfbuzz-hb-map.html#hb-map-reference" since="1.7.7"/>
+ <keyword type="function" name="hb_map_set ()" link="harfbuzz-hb-map.html#hb-map-set" since="1.7.7"/>
+ <keyword type="function" name="hb_map_set_user_data ()" link="harfbuzz-hb-map.html#hb-map-set-user-data" since="1.7.7"/>
+ <keyword type="macro" name="HB_MAP_VALUE_INVALID" link="harfbuzz-hb-map.html#HB-MAP-VALUE-INVALID:CAPS"/>
+ <keyword type="typedef" name="hb_map_t" link="harfbuzz-hb-map.html#hb-map-t"/>
<keyword type="function" name="hb_set_add ()" link="harfbuzz-hb-set.html#hb-set-add" since="0.9.2"/>
<keyword type="function" name="hb_set_add_range ()" link="harfbuzz-hb-set.html#hb-set-add-range" since="0.9.7"/>
<keyword type="function" name="hb_set_allocation_successful ()" link="harfbuzz-hb-set.html#hb-set-allocation-successful" since="0.9.2"/>
@@ -417,8 +441,95 @@
<keyword type="function" name="hb_set_union ()" link="harfbuzz-hb-set.html#hb-set-union" since="0.9.2"/>
<keyword type="macro" name="HB_SET_VALUE_INVALID" link="harfbuzz-hb-set.html#HB-SET-VALUE-INVALID:CAPS"/>
<keyword type="typedef" name="hb_set_t" link="harfbuzz-hb-set.html#hb-set-t"/>
+ <keyword type="function" name="hb_shape_plan_create ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-create" since="0.9.7"/>
+ <keyword type="function" name="hb_shape_plan_create_cached ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-create-cached" since="0.9.7"/>
+ <keyword type="function" name="hb_shape_plan_create2 ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-create2"/>
+ <keyword type="function" name="hb_shape_plan_create_cached2 ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-create-cached2"/>
+ <keyword type="function" name="hb_shape_plan_destroy ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-destroy" since="0.9.7"/>
+ <keyword type="function" name="hb_shape_plan_execute ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-execute" since="0.9.7"/>
+ <keyword type="function" name="hb_shape_plan_get_empty ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-get-empty" since="0.9.7"/>
+ <keyword type="function" name="hb_shape_plan_get_shaper ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-get-shaper" since="0.9.7"/>
+ <keyword type="function" name="hb_shape_plan_get_user_data ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-get-user-data" since="0.9.7"/>
+ <keyword type="function" name="hb_shape_plan_reference ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-reference" since="0.9.7"/>
+ <keyword type="function" name="hb_shape_plan_set_user_data ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-set-user-data" since="0.9.7"/>
+ <keyword type="typedef" name="hb_shape_plan_t" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"/>
+ <keyword type="function" name="hb_feature_from_string ()" link="harfbuzz-hb-shape.html#hb-feature-from-string" since="0.9.5"/>
+ <keyword type="function" name="hb_feature_to_string ()" link="harfbuzz-hb-shape.html#hb-feature-to-string" since="0.9.5"/>
+ <keyword type="function" name="hb_shape ()" link="harfbuzz-hb-shape.html#hb-shape" since="0.9.2"/>
+ <keyword type="function" name="hb_shape_full ()" link="harfbuzz-hb-shape.html#hb-shape-full" since="0.9.2"/>
+ <keyword type="function" name="hb_shape_list_shapers ()" link="harfbuzz-hb-shape.html#hb-shape-list-shapers" since="0.9.2"/>
+ <keyword type="macro" name="HB_FEATURE_GLOBAL_END" link="harfbuzz-hb-shape.html#HB-FEATURE-GLOBAL-END:CAPS" since="2.0.0"/>
+ <keyword type="macro" name="HB_FEATURE_GLOBAL_START" link="harfbuzz-hb-shape.html#HB-FEATURE-GLOBAL-START:CAPS" since="2.0.0"/>
+ <keyword type="struct" name="hb_feature_t" link="harfbuzz-hb-shape.html#hb-feature-t-struct"/>
+ <keyword type="function" name="hb_unicode_combining_class ()" link="harfbuzz-hb-unicode.html#hb-unicode-combining-class" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_combining_class_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-combining-class-func-t"/>
+ <keyword type="function" name="hb_unicode_compose ()" link="harfbuzz-hb-unicode.html#hb-unicode-compose" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_compose_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-compose-func-t"/>
+ <keyword type="function" name="hb_unicode_decompose ()" link="harfbuzz-hb-unicode.html#hb-unicode-decompose" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_decompose_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-decompose-func-t"/>
+ <keyword type="function" name="hb_unicode_funcs_create ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-create" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_funcs_destroy ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-destroy" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_funcs_get_default ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-default"/>
+ <keyword type="function" name="hb_unicode_funcs_get_empty ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-empty" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_funcs_get_parent ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-parent" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_funcs_get_user_data ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-get-user-data" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_funcs_is_immutable ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-is-immutable" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_funcs_make_immutable ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-make-immutable" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_funcs_reference ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-reference" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_funcs_set_combining_class_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-combining-class-func" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_funcs_set_compose_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-compose-func" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_funcs_set_decompose_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-decompose-func" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_funcs_set_general_category_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-general-category-func" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_funcs_set_mirroring_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-mirroring-func" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_funcs_set_script_func ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-script-func" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_funcs_set_user_data ()" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-set-user-data" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_general_category ()" link="harfbuzz-hb-unicode.html#hb-unicode-general-category" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_general_category_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-general-category-func-t"/>
+ <keyword type="function" name="hb_unicode_mirroring ()" link="harfbuzz-hb-unicode.html#hb-unicode-mirroring" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_mirroring_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-mirroring-func-t"/>
+ <keyword type="function" name="hb_unicode_script ()" link="harfbuzz-hb-unicode.html#hb-unicode-script" since="0.9.2"/>
+ <keyword type="function" name="hb_unicode_script_func_t ()" link="harfbuzz-hb-unicode.html#hb-unicode-script-func-t"/>
+ <keyword type="macro" name="HB_UNICODE_MAX" link="harfbuzz-hb-unicode.html#HB-UNICODE-MAX:CAPS" since="1.9.0"/>
+ <keyword type="enum" name="enum hb_unicode_combining_class_t" link="harfbuzz-hb-unicode.html#hb-unicode-combining-class-t"/>
+ <keyword type="typedef" name="hb_unicode_funcs_t" link="harfbuzz-hb-unicode.html#hb-unicode-funcs-t"/>
+ <keyword type="enum" name="enum hb_unicode_general_category_t" link="harfbuzz-hb-unicode.html#hb-unicode-general-category-t"/>
+ <keyword type="macro" name="HB_VERSION_ATLEAST()" link="harfbuzz-hb-version.html#HB-VERSION-ATLEAST:CAPS"/>
+ <keyword type="function" name="hb_version ()" link="harfbuzz-hb-version.html#hb-version" since="0.9.2"/>
+ <keyword type="function" name="hb_version_atleast ()" link="harfbuzz-hb-version.html#hb-version-atleast" since="0.9.30"/>
+ <keyword type="function" name="hb_version_string ()" link="harfbuzz-hb-version.html#hb-version-string" since="0.9.2"/>
+ <keyword type="macro" name="HB_VERSION_MAJOR" link="harfbuzz-hb-version.html#HB-VERSION-MAJOR:CAPS"/>
+ <keyword type="macro" name="HB_VERSION_MICRO" link="harfbuzz-hb-version.html#HB-VERSION-MICRO:CAPS"/>
+ <keyword type="macro" name="HB_VERSION_MINOR" link="harfbuzz-hb-version.html#HB-VERSION-MINOR:CAPS"/>
+ <keyword type="macro" name="HB_VERSION_STRING" link="harfbuzz-hb-version.html#HB-VERSION-STRING:CAPS"/>
+ <keyword type="macro" name="HB_COLOR()" link="harfbuzz-hb-ot-color.html#HB-COLOR:CAPS"/>
+ <keyword type="macro" name="hb_color_get_alpha()" link="harfbuzz-hb-ot-color.html#hb-color-get-alpha" since="2.1.0"/>
+ <keyword type="macro" name="hb_color_get_blue()" link="harfbuzz-hb-ot-color.html#hb-color-get-blue" since="2.1.0"/>
+ <keyword type="macro" name="hb_color_get_green()" link="harfbuzz-hb-ot-color.html#hb-color-get-green" since="2.1.0"/>
+ <keyword type="macro" name="hb_color_get_red()" link="harfbuzz-hb-ot-color.html#hb-color-get-red" since="2.1.0"/>
+ <keyword type="function" name="hb_ot_color_glyph_get_layers ()" link="harfbuzz-hb-ot-color.html#hb-ot-color-glyph-get-layers" since="2.1.0"/>
+ <keyword type="function" name="hb_ot_color_glyph_reference_png ()" link="harfbuzz-hb-ot-color.html#hb-ot-color-glyph-reference-png" since="2.1.0"/>
+ <keyword type="function" name="hb_ot_color_glyph_reference_svg ()" link="harfbuzz-hb-ot-color.html#hb-ot-color-glyph-reference-svg" since="2.1.0"/>
+ <keyword type="function" name="hb_ot_color_has_layers ()" link="harfbuzz-hb-ot-color.html#hb-ot-color-has-layers" since="2.1.0"/>
+ <keyword type="function" name="hb_ot_color_has_palettes ()" link="harfbuzz-hb-ot-color.html#hb-ot-color-has-palettes" since="2.1.0"/>
+ <keyword type="function" name="hb_ot_color_has_png ()" link="harfbuzz-hb-ot-color.html#hb-ot-color-has-png" since="2.1.0"/>
+ <keyword type="function" name="hb_ot_color_has_svg ()" link="harfbuzz-hb-ot-color.html#hb-ot-color-has-svg" since="2.1.0"/>
+ <keyword type="function" name="hb_ot_color_palette_color_get_name_id ()" link="harfbuzz-hb-ot-color.html#hb-ot-color-palette-color-get-name-id" since="2.1.0"/>
+ <keyword type="function" name="hb_ot_color_palette_get_colors ()" link="harfbuzz-hb-ot-color.html#hb-ot-color-palette-get-colors" since="2.1.0"/>
+ <keyword type="function" name="hb_ot_color_palette_get_count ()" link="harfbuzz-hb-ot-color.html#hb-ot-color-palette-get-count" since="2.1.0"/>
+ <keyword type="function" name="hb_ot_color_palette_get_flags ()" link="harfbuzz-hb-ot-color.html#hb-ot-color-palette-get-flags" since="2.1.0"/>
+ <keyword type="function" name="hb_ot_color_palette_get_name_id ()" link="harfbuzz-hb-ot-color.html#hb-ot-color-palette-get-name-id" since="2.1.0"/>
+ <keyword type="typedef" name="hb_color_t" link="harfbuzz-hb-ot-color.html#hb-color-t" since="2.1.0"/>
+ <keyword type="enum" name="enum hb_ot_color_palette_flags_t" link="harfbuzz-hb-ot-color.html#hb-ot-color-palette-flags-t" since="2.1.0"/>
+ <keyword type="function" name="hb_ot_font_set_funcs ()" link="harfbuzz-hb-ot-font.html#hb-ot-font-set-funcs" since="0.9.28"/>
+ <keyword type="function" name="hb_ot_tag_to_language ()" link="harfbuzz-hb-ot-layout.html#hb-ot-tag-to-language" since="0.9.2"/>
+ <keyword type="function" name="hb_ot_tag_to_script ()" link="harfbuzz-hb-ot-layout.html#hb-ot-tag-to-script"/>
+ <keyword type="function" name="hb_ot_tags_from_script_and_language ()" link="harfbuzz-hb-ot-layout.html#hb-ot-tags-from-script-and-language" since="2.0.0"/>
+ <keyword type="function" name="hb_ot_tags_to_script_and_language ()" link="harfbuzz-hb-ot-layout.html#hb-ot-tags-to-script-and-language" since="2.0.0"/>
<keyword type="function" name="hb_ot_layout_collect_lookups ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-collect-lookups" since="0.9.8"/>
+ <keyword type="function" name="hb_ot_layout_collect_features ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-collect-features" since="1.8.5"/>
+ <keyword type="function" name="hb_ot_layout_feature_get_characters ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-feature-get-characters" since="2.0.0"/>
<keyword type="function" name="hb_ot_layout_feature_get_lookups ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-feature-get-lookups" since="0.9.7"/>
+ <keyword type="function" name="hb_ot_layout_feature_get_name_ids ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-feature-get-name-ids" since="2.0.0"/>
<keyword type="function" name="hb_ot_layout_feature_with_variations_get_lookups ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-feature-with-variations-get-lookups"/>
<keyword type="function" name="hb_ot_layout_get_attach_points ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-get-attach-points"/>
<keyword type="function" name="hb_ot_layout_get_glyph_class ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-get-glyph-class" since="0.9.7"/>
@@ -437,33 +548,29 @@
<keyword type="function" name="hb_ot_layout_lookup_substitute_closure ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-lookup-substitute-closure" since="0.9.7"/>
<keyword type="function" name="hb_ot_layout_lookups_substitute_closure ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-lookups-substitute-closure" since="1.8.1"/>
<keyword type="function" name="hb_ot_layout_lookup_would_substitute ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-lookup-would-substitute" since="0.9.7"/>
- <keyword type="function" name="hb_ot_layout_script_find_language ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-script-find-language"/>
<keyword type="function" name="hb_ot_layout_script_get_language_tags ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-script-get-language-tags"/>
- <keyword type="function" name="hb_ot_layout_table_choose_script ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-choose-script"/>
+ <keyword type="function" name="hb_ot_layout_script_select_language ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-script-select-language" since="2.0.0"/>
<keyword type="function" name="hb_ot_layout_table_find_feature_variations ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-find-feature-variations"/>
- <keyword type="function" name="hb_ot_layout_table_find_script ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-find-script"/>
<keyword type="function" name="hb_ot_layout_table_get_feature_tags ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-get-feature-tags"/>
<keyword type="function" name="hb_ot_layout_table_get_script_tags ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-get-script-tags"/>
<keyword type="function" name="hb_ot_layout_table_get_lookup_count ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-get-lookup-count" since="0.9.22"/>
+ <keyword type="function" name="hb_ot_layout_table_select_script ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-table-select-script" since="2.0.0"/>
<keyword type="function" name="hb_ot_shape_plan_collect_lookups ()" link="harfbuzz-hb-ot-layout.html#hb-ot-shape-plan-collect-lookups" since="0.9.7"/>
<keyword type="function" name="hb_ot_layout_language_get_required_feature_index ()" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-language-get-required-feature-index"/>
+ <keyword type="macro" name="HB_OT_MAX_TAGS_PER_LANGUAGE" link="harfbuzz-hb-ot-layout.html#HB-OT-MAX-TAGS-PER-LANGUAGE:CAPS" since="2.0.0"/>
+ <keyword type="macro" name="HB_OT_MAX_TAGS_PER_SCRIPT" link="harfbuzz-hb-ot-layout.html#HB-OT-MAX-TAGS-PER-SCRIPT:CAPS" since="2.0.0"/>
+ <keyword type="macro" name="HB_OT_TAG_DEFAULT_LANGUAGE" link="harfbuzz-hb-ot-layout.html#HB-OT-TAG-DEFAULT-LANGUAGE:CAPS"/>
+ <keyword type="macro" name="HB_OT_TAG_DEFAULT_SCRIPT" link="harfbuzz-hb-ot-layout.html#HB-OT-TAG-DEFAULT-SCRIPT:CAPS"/>
<keyword type="macro" name="HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX" link="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-DEFAULT-LANGUAGE-INDEX:CAPS"/>
<keyword type="macro" name="HB_OT_LAYOUT_NO_FEATURE_INDEX" link="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-NO-FEATURE-INDEX:CAPS"/>
<keyword type="macro" name="HB_OT_LAYOUT_NO_SCRIPT_INDEX" link="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-NO-SCRIPT-INDEX:CAPS"/>
<keyword type="macro" name="HB_OT_LAYOUT_NO_VARIATIONS_INDEX" link="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-NO-VARIATIONS-INDEX:CAPS"/>
+ <keyword type="macro" name="HB_OT_TAG_BASE" link="harfbuzz-hb-ot-layout.html#HB-OT-TAG-BASE:CAPS"/>
<keyword type="macro" name="HB_OT_TAG_GDEF" link="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GDEF:CAPS"/>
<keyword type="macro" name="HB_OT_TAG_GPOS" link="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GPOS:CAPS"/>
<keyword type="macro" name="HB_OT_TAG_GSUB" link="harfbuzz-hb-ot-layout.html#HB-OT-TAG-GSUB:CAPS"/>
<keyword type="macro" name="HB_OT_TAG_JSTF" link="harfbuzz-hb-ot-layout.html#HB-OT-TAG-JSTF:CAPS"/>
<keyword type="enum" name="enum hb_ot_layout_glyph_class_t" link="harfbuzz-hb-ot-layout.html#hb-ot-layout-glyph-class-t"/>
- <keyword type="function" name="hb_ot_tag_from_language ()" link="harfbuzz-hb-ot-tag.html#hb-ot-tag-from-language"/>
- <keyword type="function" name="hb_ot_tag_to_language ()" link="harfbuzz-hb-ot-tag.html#hb-ot-tag-to-language" since="0.9.2"/>
- <keyword type="function" name="hb_ot_tag_to_script ()" link="harfbuzz-hb-ot-tag.html#hb-ot-tag-to-script"/>
- <keyword type="function" name="hb_ot_tags_from_script ()" link="harfbuzz-hb-ot-tag.html#hb-ot-tags-from-script"/>
- <keyword type="macro" name="HB_OT_TAG_DEFAULT_LANGUAGE" link="harfbuzz-hb-ot-tag.html#HB-OT-TAG-DEFAULT-LANGUAGE:CAPS"/>
- <keyword type="macro" name="HB_OT_TAG_DEFAULT_SCRIPT" link="harfbuzz-hb-ot-tag.html#HB-OT-TAG-DEFAULT-SCRIPT:CAPS"/>
- <keyword type="function" name="hb_ot_font_set_funcs ()" link="harfbuzz-hb-ot-font.html#hb-ot-font-set-funcs" since="0.9.28"/>
- <keyword type="function" name="hb_ot_shape_glyphs_closure ()" link="harfbuzz-hb-ot-shape.html#hb-ot-shape-glyphs-closure" since="0.9.2"/>
<keyword type="function" name="hb_ot_math_has_data ()" link="harfbuzz-hb-ot-math.html#hb-ot-math-has-data" since="1.3.3"/>
<keyword type="function" name="hb_ot_math_get_constant ()" link="harfbuzz-hb-ot-math.html#hb-ot-math-get-constant" since="1.3.3"/>
<keyword type="function" name="hb_ot_math_get_glyph_italics_correction ()" link="harfbuzz-hb-ot-math.html#hb-ot-math-get-glyph-italics-correction" since="1.3.3"/>
@@ -480,25 +587,44 @@
<keyword type="struct" name="hb_ot_math_glyph_variant_t" link="harfbuzz-hb-ot-math.html#hb-ot-math-glyph-variant-t-struct"/>
<keyword type="enum" name="enum hb_ot_math_glyph_part_flags_t" link="harfbuzz-hb-ot-math.html#hb-ot-math-glyph-part-flags-t" since="1.3.3"/>
<keyword type="struct" name="hb_ot_math_glyph_part_t" link="harfbuzz-hb-ot-math.html#hb-ot-math-glyph-part-t-struct"/>
- <keyword type="function" name="hb_shape_plan_create ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-create" since="0.9.7"/>
- <keyword type="function" name="hb_shape_plan_create_cached ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-create-cached" since="0.9.7"/>
- <keyword type="function" name="hb_shape_plan_create2 ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-create2"/>
- <keyword type="function" name="hb_shape_plan_create_cached2 ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-create-cached2"/>
- <keyword type="function" name="hb_shape_plan_destroy ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-destroy" since="0.9.7"/>
- <keyword type="function" name="hb_shape_plan_execute ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-execute" since="0.9.7"/>
- <keyword type="function" name="hb_shape_plan_get_empty ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-get-empty" since="0.9.7"/>
- <keyword type="function" name="hb_shape_plan_get_shaper ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-get-shaper" since="0.9.7"/>
- <keyword type="function" name="hb_shape_plan_get_user_data ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-get-user-data" since="0.9.7"/>
- <keyword type="function" name="hb_shape_plan_reference ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-reference" since="0.9.7"/>
- <keyword type="function" name="hb_shape_plan_set_user_data ()" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-set-user-data" since="0.9.7"/>
- <keyword type="typedef" name="hb_shape_plan_t" link="harfbuzz-hb-shape-plan.html#hb-shape-plan-t"/>
- <keyword type="function" name="hb_glib_get_unicode_funcs ()" link="harfbuzz-hb-glib.html#hb-glib-get-unicode-funcs"/>
- <keyword type="function" name="hb_glib_script_from_script ()" link="harfbuzz-hb-glib.html#hb-glib-script-from-script"/>
- <keyword type="function" name="hb_glib_script_to_script ()" link="harfbuzz-hb-glib.html#hb-glib-script-to-script"/>
- <keyword type="function" name="hb_glib_blob_create ()" link="harfbuzz-hb-glib.html#hb-glib-blob-create" since="0.9.38"/>
- <keyword type="function" name="hb_icu_get_unicode_funcs ()" link="harfbuzz-hb-icu.html#hb-icu-get-unicode-funcs"/>
- <keyword type="function" name="hb_icu_script_from_script ()" link="harfbuzz-hb-icu.html#hb-icu-script-from-script"/>
- <keyword type="function" name="hb_icu_script_to_script ()" link="harfbuzz-hb-icu.html#hb-icu-script-to-script"/>
+ <keyword type="function" name="hb_ot_name_list_names ()" link="harfbuzz-hb-ot-name.html#hb-ot-name-list-names" since="2.1.0"/>
+ <keyword type="function" name="hb_ot_name_get_utf16 ()" link="harfbuzz-hb-ot-name.html#hb-ot-name-get-utf16" since="2.1.0"/>
+ <keyword type="function" name="hb_ot_name_get_utf32 ()" link="harfbuzz-hb-ot-name.html#hb-ot-name-get-utf32" since="2.1.0"/>
+ <keyword type="function" name="hb_ot_name_get_utf8 ()" link="harfbuzz-hb-ot-name.html#hb-ot-name-get-utf8" since="2.1.0"/>
+ <keyword type="typedef" name="hb_ot_name_id_t" link="harfbuzz-hb-ot-name.html#hb-ot-name-id-t" since="2.0.0"/>
+ <keyword type="function" name="hb_ot_shape_glyphs_closure ()" link="harfbuzz-hb-ot-shape.html#hb-ot-shape-glyphs-closure" since="0.9.2"/>
+ <keyword type="function" name="hb_ot_var_has_data ()" link="harfbuzz-hb-ot-var.html#hb-ot-var-has-data" since="1.4.2"/>
+ <keyword type="function" name="hb_ot_var_find_axis_info ()" link="harfbuzz-hb-ot-var.html#hb-ot-var-find-axis-info" since="2.2.0"/>
+ <keyword type="function" name="hb_ot_var_get_axis_count ()" link="harfbuzz-hb-ot-var.html#hb-ot-var-get-axis-count" since="1.4.2"/>
+ <keyword type="function" name="hb_ot_var_get_axis_infos ()" link="harfbuzz-hb-ot-var.html#hb-ot-var-get-axis-infos" since="2.2.0"/>
+ <keyword type="function" name="hb_ot_var_get_named_instance_count ()" link="harfbuzz-hb-ot-var.html#hb-ot-var-get-named-instance-count"/>
+ <keyword type="function" name="hb_ot_var_named_instance_get_subfamily_name_id ()" link="harfbuzz-hb-ot-var.html#hb-ot-var-named-instance-get-subfamily-name-id"/>
+ <keyword type="function" name="hb_ot_var_named_instance_get_postscript_name_id ()" link="harfbuzz-hb-ot-var.html#hb-ot-var-named-instance-get-postscript-name-id"/>
+ <keyword type="function" name="hb_ot_var_named_instance_get_design_coords ()" link="harfbuzz-hb-ot-var.html#hb-ot-var-named-instance-get-design-coords"/>
+ <keyword type="function" name="hb_ot_var_normalize_variations ()" link="harfbuzz-hb-ot-var.html#hb-ot-var-normalize-variations" since="1.4.2"/>
+ <keyword type="function" name="hb_ot_var_normalize_coords ()" link="harfbuzz-hb-ot-var.html#hb-ot-var-normalize-coords" since="1.4.2"/>
+ <keyword type="macro" name="HB_OT_TAG_VAR_AXIS_ITALIC" link="harfbuzz-hb-ot-var.html#HB-OT-TAG-VAR-AXIS-ITALIC:CAPS"/>
+ <keyword type="macro" name="HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE" link="harfbuzz-hb-ot-var.html#HB-OT-TAG-VAR-AXIS-OPTICAL-SIZE:CAPS"/>
+ <keyword type="macro" name="HB_OT_TAG_VAR_AXIS_SLANT" link="harfbuzz-hb-ot-var.html#HB-OT-TAG-VAR-AXIS-SLANT:CAPS"/>
+ <keyword type="macro" name="HB_OT_TAG_VAR_AXIS_WEIGHT" link="harfbuzz-hb-ot-var.html#HB-OT-TAG-VAR-AXIS-WEIGHT:CAPS"/>
+ <keyword type="macro" name="HB_OT_TAG_VAR_AXIS_WIDTH" link="harfbuzz-hb-ot-var.html#HB-OT-TAG-VAR-AXIS-WIDTH:CAPS"/>
+ <keyword type="enum" name="enum hb_ot_var_axis_flags_t" link="harfbuzz-hb-ot-var.html#hb-ot-var-axis-flags-t" since="2.2.0"/>
+ <keyword type="function" name="hb_aat_layout_feature_type_get_name_id ()" link="harfbuzz-hb-aat-layout.html#hb-aat-layout-feature-type-get-name-id" since="2.2.0"/>
+ <keyword type="function" name="hb_aat_layout_feature_type_get_selector_infos ()" link="harfbuzz-hb-aat-layout.html#hb-aat-layout-feature-type-get-selector-infos"/>
+ <keyword type="function" name="hb_aat_layout_get_feature_types ()" link="harfbuzz-hb-aat-layout.html#hb-aat-layout-get-feature-types" since="2.2.0"/>
+ <keyword type="function" name="hb_aat_layout_has_positioning ()" link="harfbuzz-hb-aat-layout.html#hb-aat-layout-has-positioning"/>
+ <keyword type="function" name="hb_aat_layout_has_substitution ()" link="harfbuzz-hb-aat-layout.html#hb-aat-layout-has-substitution"/>
+ <keyword type="function" name="hb_aat_layout_has_tracking ()" link="harfbuzz-hb-aat-layout.html#hb-aat-layout-has-tracking"/>
+ <keyword type="macro" name="HB_AAT_LAYOUT_NO_SELECTOR_INDEX" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-NO-SELECTOR-INDEX:CAPS"/>
+ <keyword type="enum" name="enum hb_aat_layout_feature_type_t" link="harfbuzz-hb-aat-layout.html#hb-aat-layout-feature-type-t" since="2.2.0"/>
+ <keyword type="enum" name="enum hb_aat_layout_feature_selector_t" link="harfbuzz-hb-aat-layout.html#hb-aat-layout-feature-selector-t" since="2.2.0"/>
+ <keyword type="function" name="hb_coretext_face_create ()" link="harfbuzz-hb-coretext.html#hb-coretext-face-create"/>
+ <keyword type="function" name="hb_coretext_font_create ()" link="harfbuzz-hb-coretext.html#hb-coretext-font-create"/>
+ <keyword type="function" name="hb_coretext_face_get_cg_font ()" link="harfbuzz-hb-coretext.html#hb-coretext-face-get-cg-font"/>
+ <keyword type="function" name="hb_coretext_font_get_ct_font ()" link="harfbuzz-hb-coretext.html#hb-coretext-font-get-ct-font"/>
+ <keyword type="macro" name="HB_CORETEXT_TAG_KERX" link="harfbuzz-hb-coretext.html#HB-CORETEXT-TAG-KERX:CAPS"/>
+ <keyword type="macro" name="HB_CORETEXT_TAG_MORT" link="harfbuzz-hb-coretext.html#HB-CORETEXT-TAG-MORT:CAPS"/>
+ <keyword type="macro" name="HB_CORETEXT_TAG_MORX" link="harfbuzz-hb-coretext.html#HB-CORETEXT-TAG-MORX:CAPS"/>
<keyword type="function" name="hb_ft_face_create ()" link="harfbuzz-hb-ft.html#hb-ft-face-create" since="0.9.2"/>
<keyword type="function" name="hb_ft_face_create_cached ()" link="harfbuzz-hb-ft.html#hb-ft-face-create-cached" since="0.9.2"/>
<keyword type="function" name="hb_ft_face_create_referenced ()" link="harfbuzz-hb-ft.html#hb-ft-face-create-referenced" since="0.9.38"/>
@@ -509,18 +635,10 @@
<keyword type="function" name="hb_ft_font_set_load_flags ()" link="harfbuzz-hb-ft.html#hb-ft-font-set-load-flags" since="1.0.5"/>
<keyword type="function" name="hb_ft_font_get_load_flags ()" link="harfbuzz-hb-ft.html#hb-ft-font-get-load-flags" since="1.0.5"/>
<keyword type="function" name="hb_ft_font_set_funcs ()" link="harfbuzz-hb-ft.html#hb-ft-font-set-funcs"/>
- <keyword type="function" name="hb_graphite2_face_get_gr_face ()" link="harfbuzz-hb-graphite2.html#hb-graphite2-face-get-gr-face"/>
- <keyword type="function" name="hb_graphite2_font_get_gr_font ()" link="harfbuzz-hb-graphite2.html#hb-graphite2-font-get-gr-font" deprecated=""/>
- <keyword type="macro" name="HB_GRAPHITE2_TAG_SILF" link="harfbuzz-hb-graphite2.html#HB-GRAPHITE2-TAG-SILF:CAPS"/>
- <keyword type="function" name="hb_uniscribe_font_get_hfont ()" link="harfbuzz-hb-uniscribe.html#hb-uniscribe-font-get-hfont"/>
- <keyword type="function" name="hb_uniscribe_font_get_logfontw ()" link="harfbuzz-hb-uniscribe.html#hb-uniscribe-font-get-logfontw"/>
- <keyword type="function" name="hb_coretext_face_create ()" link="harfbuzz-hb-coretext.html#hb-coretext-face-create"/>
- <keyword type="function" name="hb_coretext_font_create ()" link="harfbuzz-hb-coretext.html#hb-coretext-font-create"/>
- <keyword type="function" name="hb_coretext_face_get_cg_font ()" link="harfbuzz-hb-coretext.html#hb-coretext-face-get-cg-font"/>
- <keyword type="function" name="hb_coretext_font_get_ct_font ()" link="harfbuzz-hb-coretext.html#hb-coretext-font-get-ct-font"/>
- <keyword type="macro" name="HB_CORETEXT_TAG_KERX" link="harfbuzz-hb-coretext.html#HB-CORETEXT-TAG-KERX:CAPS"/>
- <keyword type="macro" name="HB_CORETEXT_TAG_MORT" link="harfbuzz-hb-coretext.html#HB-CORETEXT-TAG-MORT:CAPS"/>
- <keyword type="macro" name="HB_CORETEXT_TAG_MORX" link="harfbuzz-hb-coretext.html#HB-CORETEXT-TAG-MORX:CAPS"/>
+ <keyword type="function" name="hb_glib_get_unicode_funcs ()" link="harfbuzz-hb-glib.html#hb-glib-get-unicode-funcs"/>
+ <keyword type="function" name="hb_glib_script_from_script ()" link="harfbuzz-hb-glib.html#hb-glib-script-from-script"/>
+ <keyword type="function" name="hb_glib_script_to_script ()" link="harfbuzz-hb-glib.html#hb-glib-script-to-script"/>
+ <keyword type="function" name="hb_glib_blob_create ()" link="harfbuzz-hb-glib.html#hb-glib-blob-create" since="0.9.38"/>
<keyword type="function" name="hb_gobject_blob_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-blob-get-type" since="0.9.2"/>
<keyword type="function" name="hb_gobject_buffer_content_type_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-buffer-content-type-get-type"/>
<keyword type="function" name="hb_gobject_buffer_diff_flags_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-buffer-diff-flags-get-type"/>
@@ -533,7 +651,9 @@
<keyword type="function" name="hb_gobject_font_funcs_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-font-funcs-get-type" since="0.9.2"/>
<keyword type="function" name="hb_gobject_font_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-font-get-type" since="0.9.2"/>
<keyword type="function" name="hb_gobject_glyph_flags_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-glyph-flags-get-type"/>
+ <keyword type="function" name="hb_gobject_map_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-map-get-type"/>
<keyword type="function" name="hb_gobject_memory_mode_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-memory-mode-get-type"/>
+ <keyword type="function" name="hb_gobject_ot_color_palette_flags_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-ot-color-palette-flags-get-type"/>
<keyword type="function" name="hb_gobject_ot_layout_glyph_class_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-ot-layout-glyph-class-get-type"/>
<keyword type="function" name="hb_gobject_ot_math_constant_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-ot-math-constant-get-type"/>
<keyword type="function" name="hb_gobject_ot_math_glyph_part_get_type ()" link="harfbuzz-hb-gobject.html#hb-gobject-ot-math-glyph-part-get-type"/>
@@ -564,7 +684,9 @@
<keyword type="macro" name="HB_GOBJECT_TYPE_FONT" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-FONT:CAPS"/>
<keyword type="macro" name="HB_GOBJECT_TYPE_FONT_FUNCS" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-FONT-FUNCS:CAPS"/>
<keyword type="macro" name="HB_GOBJECT_TYPE_GLYPH_FLAGS" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-GLYPH-FLAGS:CAPS"/>
+ <keyword type="macro" name="HB_GOBJECT_TYPE_MAP" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-MAP:CAPS"/>
<keyword type="macro" name="HB_GOBJECT_TYPE_MEMORY_MODE" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-MEMORY-MODE:CAPS"/>
+ <keyword type="macro" name="HB_GOBJECT_TYPE_OT_COLOR_PALETTE_FLAGS" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-OT-COLOR-PALETTE-FLAGS:CAPS"/>
<keyword type="macro" name="HB_GOBJECT_TYPE_OT_LAYOUT_GLYPH_CLASS" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-OT-LAYOUT-GLYPH-CLASS:CAPS"/>
<keyword type="macro" name="HB_GOBJECT_TYPE_OT_MATH_CONSTANT" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-OT-MATH-CONSTANT:CAPS"/>
<keyword type="macro" name="HB_GOBJECT_TYPE_OT_MATH_GLYPH_PART" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-OT-MATH-GLYPH-PART:CAPS"/>
@@ -583,15 +705,204 @@
<keyword type="macro" name="HB_GOBJECT_TYPE_SEGMENT_PROPERTIES" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-SEGMENT-PROPERTIES:CAPS"/>
<keyword type="macro" name="HB_GOBJECT_TYPE_SET" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-SET:CAPS"/>
<keyword type="macro" name="HB_GOBJECT_TYPE_USER_DATA_KEY" link="harfbuzz-hb-gobject.html#HB-GOBJECT-TYPE-USER-DATA-KEY:CAPS"/>
+ <keyword type="function" name="hb_graphite2_face_get_gr_face ()" link="harfbuzz-hb-graphite2.html#hb-graphite2-face-get-gr-face"/>
+ <keyword type="macro" name="HB_GRAPHITE2_TAG_SILF" link="harfbuzz-hb-graphite2.html#HB-GRAPHITE2-TAG-SILF:CAPS"/>
+ <keyword type="function" name="hb_icu_get_unicode_funcs ()" link="harfbuzz-hb-icu.html#hb-icu-get-unicode-funcs"/>
+ <keyword type="function" name="hb_icu_script_from_script ()" link="harfbuzz-hb-icu.html#hb-icu-script-from-script"/>
+ <keyword type="function" name="hb_icu_script_to_script ()" link="harfbuzz-hb-icu.html#hb-icu-script-to-script"/>
+ <keyword type="function" name="hb_uniscribe_font_get_hfont ()" link="harfbuzz-hb-uniscribe.html#hb-uniscribe-font-get-hfont"/>
+ <keyword type="function" name="hb_uniscribe_font_get_logfontw ()" link="harfbuzz-hb-uniscribe.html#hb-uniscribe-font-get-logfontw"/>
+ <keyword type="constant" name="HB_MEMORY_MODE_DUPLICATE" link="harfbuzz-hb-blob.html#HB-MEMORY-MODE-DUPLICATE:CAPS"/>
+ <keyword type="constant" name="HB_MEMORY_MODE_READONLY" link="harfbuzz-hb-blob.html#HB-MEMORY-MODE-READONLY:CAPS"/>
+ <keyword type="constant" name="HB_MEMORY_MODE_WRITABLE" link="harfbuzz-hb-blob.html#HB-MEMORY-MODE-WRITABLE:CAPS"/>
+ <keyword type="constant" name="HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE" link="harfbuzz-hb-blob.html#HB-MEMORY-MODE-READONLY-MAY-MAKE-WRITABLE:CAPS"/>
+ <keyword type="constant" name="HB_GLYPH_FLAG_UNSAFE_TO_BREAK" link="harfbuzz-hb-buffer.html#HB-GLYPH-FLAG-UNSAFE-TO-BREAK:CAPS"/>
+ <keyword type="constant" name="HB_GLYPH_FLAG_DEFINED" link="harfbuzz-hb-buffer.html#HB-GLYPH-FLAG-DEFINED:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_CONTENT_TYPE_INVALID" link="harfbuzz-hb-buffer.html#HB-BUFFER-CONTENT-TYPE-INVALID:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_CONTENT_TYPE_UNICODE" link="harfbuzz-hb-buffer.html#HB-BUFFER-CONTENT-TYPE-UNICODE:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_CONTENT_TYPE_GLYPHS" link="harfbuzz-hb-buffer.html#HB-BUFFER-CONTENT-TYPE-GLYPHS:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_FLAG_DEFAULT" link="harfbuzz-hb-buffer.html#HB-BUFFER-FLAG-DEFAULT:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_FLAG_BOT" link="harfbuzz-hb-buffer.html#HB-BUFFER-FLAG-BOT:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_FLAG_EOT" link="harfbuzz-hb-buffer.html#HB-BUFFER-FLAG-EOT:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES" link="harfbuzz-hb-buffer.html#HB-BUFFER-FLAG-PRESERVE-DEFAULT-IGNORABLES:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES" link="harfbuzz-hb-buffer.html#HB-BUFFER-FLAG-REMOVE-DEFAULT-IGNORABLES:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES" link="harfbuzz-hb-buffer.html#HB-BUFFER-CLUSTER-LEVEL-MONOTONE-GRAPHEMES:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS" link="harfbuzz-hb-buffer.html#HB-BUFFER-CLUSTER-LEVEL-MONOTONE-CHARACTERS:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_CLUSTER_LEVEL_CHARACTERS" link="harfbuzz-hb-buffer.html#HB-BUFFER-CLUSTER-LEVEL-CHARACTERS:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_CLUSTER_LEVEL_DEFAULT" link="harfbuzz-hb-buffer.html#HB-BUFFER-CLUSTER-LEVEL-DEFAULT:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_SERIALIZE_FORMAT_TEXT" link="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FORMAT-TEXT:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_SERIALIZE_FORMAT_JSON" link="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FORMAT-JSON:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_SERIALIZE_FORMAT_INVALID" link="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FORMAT-INVALID:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_DEFAULT" link="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-DEFAULT:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS" link="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-NO-CLUSTERS:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS" link="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-NO-POSITIONS:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES" link="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-NO-GLYPH-NAMES:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS" link="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-GLYPH-EXTENTS:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS" link="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-GLYPH-FLAGS:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES" link="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-NO-ADVANCES:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_DIFF_FLAG_EQUAL" link="harfbuzz-hb-buffer.html#HB-BUFFER-DIFF-FLAG-EQUAL:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH" link="harfbuzz-hb-buffer.html#HB-BUFFER-DIFF-FLAG-CONTENT-TYPE-MISMATCH:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH" link="harfbuzz-hb-buffer.html#HB-BUFFER-DIFF-FLAG-LENGTH-MISMATCH:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT" link="harfbuzz-hb-buffer.html#HB-BUFFER-DIFF-FLAG-NOTDEF-PRESENT:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT" link="harfbuzz-hb-buffer.html#HB-BUFFER-DIFF-FLAG-DOTTED-CIRCLE-PRESENT:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH" link="harfbuzz-hb-buffer.html#HB-BUFFER-DIFF-FLAG-CODEPOINT-MISMATCH:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH" link="harfbuzz-hb-buffer.html#HB-BUFFER-DIFF-FLAG-CLUSTER-MISMATCH:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH" link="harfbuzz-hb-buffer.html#HB-BUFFER-DIFF-FLAG-GLYPH-FLAGS-MISMATCH:CAPS"/>
+ <keyword type="constant" name="HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH" link="harfbuzz-hb-buffer.html#HB-BUFFER-DIFF-FLAG-POSITION-MISMATCH:CAPS"/>
<keyword type="constant" name="HB_DIRECTION_INVALID" link="harfbuzz-hb-common.html#HB-DIRECTION-INVALID:CAPS"/>
<keyword type="constant" name="HB_DIRECTION_LTR" link="harfbuzz-hb-common.html#HB-DIRECTION-LTR:CAPS"/>
<keyword type="constant" name="HB_DIRECTION_RTL" link="harfbuzz-hb-common.html#HB-DIRECTION-RTL:CAPS"/>
<keyword type="constant" name="HB_DIRECTION_TTB" link="harfbuzz-hb-common.html#HB-DIRECTION-TTB:CAPS"/>
<keyword type="constant" name="HB_DIRECTION_BTT" link="harfbuzz-hb-common.html#HB-DIRECTION-BTT:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_COMMON" link="harfbuzz-hb-common.html#HB-SCRIPT-COMMON:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_INHERITED" link="harfbuzz-hb-common.html#HB-SCRIPT-INHERITED:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_UNKNOWN" link="harfbuzz-hb-common.html#HB-SCRIPT-UNKNOWN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_ARABIC" link="harfbuzz-hb-common.html#HB-SCRIPT-ARABIC:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_ARMENIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-ARMENIAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_BENGALI" link="harfbuzz-hb-common.html#HB-SCRIPT-BENGALI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_CYRILLIC" link="harfbuzz-hb-common.html#HB-SCRIPT-CYRILLIC:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_DEVANAGARI" link="harfbuzz-hb-common.html#HB-SCRIPT-DEVANAGARI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_GEORGIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-GEORGIAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_GREEK" link="harfbuzz-hb-common.html#HB-SCRIPT-GREEK:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_GUJARATI" link="harfbuzz-hb-common.html#HB-SCRIPT-GUJARATI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_GURMUKHI" link="harfbuzz-hb-common.html#HB-SCRIPT-GURMUKHI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_HANGUL" link="harfbuzz-hb-common.html#HB-SCRIPT-HANGUL:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_HAN" link="harfbuzz-hb-common.html#HB-SCRIPT-HAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_HEBREW" link="harfbuzz-hb-common.html#HB-SCRIPT-HEBREW:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_HIRAGANA" link="harfbuzz-hb-common.html#HB-SCRIPT-HIRAGANA:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_KANNADA" link="harfbuzz-hb-common.html#HB-SCRIPT-KANNADA:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_KATAKANA" link="harfbuzz-hb-common.html#HB-SCRIPT-KATAKANA:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_LAO" link="harfbuzz-hb-common.html#HB-SCRIPT-LAO:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_LATIN" link="harfbuzz-hb-common.html#HB-SCRIPT-LATIN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_MALAYALAM" link="harfbuzz-hb-common.html#HB-SCRIPT-MALAYALAM:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_ORIYA" link="harfbuzz-hb-common.html#HB-SCRIPT-ORIYA:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_TAMIL" link="harfbuzz-hb-common.html#HB-SCRIPT-TAMIL:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_TELUGU" link="harfbuzz-hb-common.html#HB-SCRIPT-TELUGU:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_THAI" link="harfbuzz-hb-common.html#HB-SCRIPT-THAI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_TIBETAN" link="harfbuzz-hb-common.html#HB-SCRIPT-TIBETAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_BOPOMOFO" link="harfbuzz-hb-common.html#HB-SCRIPT-BOPOMOFO:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_BRAILLE" link="harfbuzz-hb-common.html#HB-SCRIPT-BRAILLE:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_CANADIAN_SYLLABICS" link="harfbuzz-hb-common.html#HB-SCRIPT-CANADIAN-SYLLABICS:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_CHEROKEE" link="harfbuzz-hb-common.html#HB-SCRIPT-CHEROKEE:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_ETHIOPIC" link="harfbuzz-hb-common.html#HB-SCRIPT-ETHIOPIC:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_KHMER" link="harfbuzz-hb-common.html#HB-SCRIPT-KHMER:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_MONGOLIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-MONGOLIAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_MYANMAR" link="harfbuzz-hb-common.html#HB-SCRIPT-MYANMAR:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_OGHAM" link="harfbuzz-hb-common.html#HB-SCRIPT-OGHAM:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_RUNIC" link="harfbuzz-hb-common.html#HB-SCRIPT-RUNIC:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_SINHALA" link="harfbuzz-hb-common.html#HB-SCRIPT-SINHALA:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_SYRIAC" link="harfbuzz-hb-common.html#HB-SCRIPT-SYRIAC:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_THAANA" link="harfbuzz-hb-common.html#HB-SCRIPT-THAANA:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_YI" link="harfbuzz-hb-common.html#HB-SCRIPT-YI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_DESERET" link="harfbuzz-hb-common.html#HB-SCRIPT-DESERET:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_GOTHIC" link="harfbuzz-hb-common.html#HB-SCRIPT-GOTHIC:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_OLD_ITALIC" link="harfbuzz-hb-common.html#HB-SCRIPT-OLD-ITALIC:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_BUHID" link="harfbuzz-hb-common.html#HB-SCRIPT-BUHID:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_HANUNOO" link="harfbuzz-hb-common.html#HB-SCRIPT-HANUNOO:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_TAGALOG" link="harfbuzz-hb-common.html#HB-SCRIPT-TAGALOG:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_TAGBANWA" link="harfbuzz-hb-common.html#HB-SCRIPT-TAGBANWA:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_CYPRIOT" link="harfbuzz-hb-common.html#HB-SCRIPT-CYPRIOT:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_LIMBU" link="harfbuzz-hb-common.html#HB-SCRIPT-LIMBU:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_LINEAR_B" link="harfbuzz-hb-common.html#HB-SCRIPT-LINEAR-B:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_OSMANYA" link="harfbuzz-hb-common.html#HB-SCRIPT-OSMANYA:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_SHAVIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-SHAVIAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_TAI_LE" link="harfbuzz-hb-common.html#HB-SCRIPT-TAI-LE:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_UGARITIC" link="harfbuzz-hb-common.html#HB-SCRIPT-UGARITIC:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_BUGINESE" link="harfbuzz-hb-common.html#HB-SCRIPT-BUGINESE:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_COPTIC" link="harfbuzz-hb-common.html#HB-SCRIPT-COPTIC:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_GLAGOLITIC" link="harfbuzz-hb-common.html#HB-SCRIPT-GLAGOLITIC:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_KHAROSHTHI" link="harfbuzz-hb-common.html#HB-SCRIPT-KHAROSHTHI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_NEW_TAI_LUE" link="harfbuzz-hb-common.html#HB-SCRIPT-NEW-TAI-LUE:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_OLD_PERSIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-OLD-PERSIAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_SYLOTI_NAGRI" link="harfbuzz-hb-common.html#HB-SCRIPT-SYLOTI-NAGRI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_TIFINAGH" link="harfbuzz-hb-common.html#HB-SCRIPT-TIFINAGH:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_BALINESE" link="harfbuzz-hb-common.html#HB-SCRIPT-BALINESE:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_CUNEIFORM" link="harfbuzz-hb-common.html#HB-SCRIPT-CUNEIFORM:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_NKO" link="harfbuzz-hb-common.html#HB-SCRIPT-NKO:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_PHAGS_PA" link="harfbuzz-hb-common.html#HB-SCRIPT-PHAGS-PA:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_PHOENICIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-PHOENICIAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_CARIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-CARIAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_CHAM" link="harfbuzz-hb-common.html#HB-SCRIPT-CHAM:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_KAYAH_LI" link="harfbuzz-hb-common.html#HB-SCRIPT-KAYAH-LI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_LEPCHA" link="harfbuzz-hb-common.html#HB-SCRIPT-LEPCHA:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_LYCIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-LYCIAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_LYDIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-LYDIAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_OL_CHIKI" link="harfbuzz-hb-common.html#HB-SCRIPT-OL-CHIKI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_REJANG" link="harfbuzz-hb-common.html#HB-SCRIPT-REJANG:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_SAURASHTRA" link="harfbuzz-hb-common.html#HB-SCRIPT-SAURASHTRA:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_SUNDANESE" link="harfbuzz-hb-common.html#HB-SCRIPT-SUNDANESE:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_VAI" link="harfbuzz-hb-common.html#HB-SCRIPT-VAI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_AVESTAN" link="harfbuzz-hb-common.html#HB-SCRIPT-AVESTAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_BAMUM" link="harfbuzz-hb-common.html#HB-SCRIPT-BAMUM:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_EGYPTIAN_HIEROGLYPHS" link="harfbuzz-hb-common.html#HB-SCRIPT-EGYPTIAN-HIEROGLYPHS:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_IMPERIAL_ARAMAIC" link="harfbuzz-hb-common.html#HB-SCRIPT-IMPERIAL-ARAMAIC:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_INSCRIPTIONAL_PAHLAVI" link="harfbuzz-hb-common.html#HB-SCRIPT-INSCRIPTIONAL-PAHLAVI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_INSCRIPTIONAL_PARTHIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-INSCRIPTIONAL-PARTHIAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_JAVANESE" link="harfbuzz-hb-common.html#HB-SCRIPT-JAVANESE:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_KAITHI" link="harfbuzz-hb-common.html#HB-SCRIPT-KAITHI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_LISU" link="harfbuzz-hb-common.html#HB-SCRIPT-LISU:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_MEETEI_MAYEK" link="harfbuzz-hb-common.html#HB-SCRIPT-MEETEI-MAYEK:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_OLD_SOUTH_ARABIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-OLD-SOUTH-ARABIAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_OLD_TURKIC" link="harfbuzz-hb-common.html#HB-SCRIPT-OLD-TURKIC:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_SAMARITAN" link="harfbuzz-hb-common.html#HB-SCRIPT-SAMARITAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_TAI_THAM" link="harfbuzz-hb-common.html#HB-SCRIPT-TAI-THAM:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_TAI_VIET" link="harfbuzz-hb-common.html#HB-SCRIPT-TAI-VIET:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_BATAK" link="harfbuzz-hb-common.html#HB-SCRIPT-BATAK:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_BRAHMI" link="harfbuzz-hb-common.html#HB-SCRIPT-BRAHMI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_MANDAIC" link="harfbuzz-hb-common.html#HB-SCRIPT-MANDAIC:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_CHAKMA" link="harfbuzz-hb-common.html#HB-SCRIPT-CHAKMA:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_MEROITIC_CURSIVE" link="harfbuzz-hb-common.html#HB-SCRIPT-MEROITIC-CURSIVE:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_MEROITIC_HIEROGLYPHS" link="harfbuzz-hb-common.html#HB-SCRIPT-MEROITIC-HIEROGLYPHS:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_MIAO" link="harfbuzz-hb-common.html#HB-SCRIPT-MIAO:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_SHARADA" link="harfbuzz-hb-common.html#HB-SCRIPT-SHARADA:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_SORA_SOMPENG" link="harfbuzz-hb-common.html#HB-SCRIPT-SORA-SOMPENG:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_TAKRI" link="harfbuzz-hb-common.html#HB-SCRIPT-TAKRI:CAPS"/>
<keyword type="constant" name="HB_SCRIPT_BASSA_VAH" link="harfbuzz-hb-common.html#HB-SCRIPT-BASSA-VAH:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_CAUCASIAN_ALBANIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-CAUCASIAN-ALBANIAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_DUPLOYAN" link="harfbuzz-hb-common.html#HB-SCRIPT-DUPLOYAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_ELBASAN" link="harfbuzz-hb-common.html#HB-SCRIPT-ELBASAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_GRANTHA" link="harfbuzz-hb-common.html#HB-SCRIPT-GRANTHA:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_KHOJKI" link="harfbuzz-hb-common.html#HB-SCRIPT-KHOJKI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_KHUDAWADI" link="harfbuzz-hb-common.html#HB-SCRIPT-KHUDAWADI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_LINEAR_A" link="harfbuzz-hb-common.html#HB-SCRIPT-LINEAR-A:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_MAHAJANI" link="harfbuzz-hb-common.html#HB-SCRIPT-MAHAJANI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_MANICHAEAN" link="harfbuzz-hb-common.html#HB-SCRIPT-MANICHAEAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_MENDE_KIKAKUI" link="harfbuzz-hb-common.html#HB-SCRIPT-MENDE-KIKAKUI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_MODI" link="harfbuzz-hb-common.html#HB-SCRIPT-MODI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_MRO" link="harfbuzz-hb-common.html#HB-SCRIPT-MRO:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_NABATAEAN" link="harfbuzz-hb-common.html#HB-SCRIPT-NABATAEAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_OLD_NORTH_ARABIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-OLD-NORTH-ARABIAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_OLD_PERMIC" link="harfbuzz-hb-common.html#HB-SCRIPT-OLD-PERMIC:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_PAHAWH_HMONG" link="harfbuzz-hb-common.html#HB-SCRIPT-PAHAWH-HMONG:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_PALMYRENE" link="harfbuzz-hb-common.html#HB-SCRIPT-PALMYRENE:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_PAU_CIN_HAU" link="harfbuzz-hb-common.html#HB-SCRIPT-PAU-CIN-HAU:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_PSALTER_PAHLAVI" link="harfbuzz-hb-common.html#HB-SCRIPT-PSALTER-PAHLAVI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_SIDDHAM" link="harfbuzz-hb-common.html#HB-SCRIPT-SIDDHAM:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_TIRHUTA" link="harfbuzz-hb-common.html#HB-SCRIPT-TIRHUTA:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_WARANG_CITI" link="harfbuzz-hb-common.html#HB-SCRIPT-WARANG-CITI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_AHOM" link="harfbuzz-hb-common.html#HB-SCRIPT-AHOM:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_ANATOLIAN_HIEROGLYPHS" link="harfbuzz-hb-common.html#HB-SCRIPT-ANATOLIAN-HIEROGLYPHS:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_HATRAN" link="harfbuzz-hb-common.html#HB-SCRIPT-HATRAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_MULTANI" link="harfbuzz-hb-common.html#HB-SCRIPT-MULTANI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_OLD_HUNGARIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-OLD-HUNGARIAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_SIGNWRITING" link="harfbuzz-hb-common.html#HB-SCRIPT-SIGNWRITING:CAPS"/>
<keyword type="constant" name="HB_SCRIPT_ADLAM" link="harfbuzz-hb-common.html#HB-SCRIPT-ADLAM:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_BHAIKSUKI" link="harfbuzz-hb-common.html#HB-SCRIPT-BHAIKSUKI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_MARCHEN" link="harfbuzz-hb-common.html#HB-SCRIPT-MARCHEN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_OSAGE" link="harfbuzz-hb-common.html#HB-SCRIPT-OSAGE:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_TANGUT" link="harfbuzz-hb-common.html#HB-SCRIPT-TANGUT:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_NEWA" link="harfbuzz-hb-common.html#HB-SCRIPT-NEWA:CAPS"/>
<keyword type="constant" name="HB_SCRIPT_MASARAM_GONDI" link="harfbuzz-hb-common.html#HB-SCRIPT-MASARAM-GONDI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_NUSHU" link="harfbuzz-hb-common.html#HB-SCRIPT-NUSHU:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_SOYOMBO" link="harfbuzz-hb-common.html#HB-SCRIPT-SOYOMBO:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_ZANABAZAR_SQUARE" link="harfbuzz-hb-common.html#HB-SCRIPT-ZANABAZAR-SQUARE:CAPS"/>
<keyword type="constant" name="HB_SCRIPT_DOGRA" link="harfbuzz-hb-common.html#HB-SCRIPT-DOGRA:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_GUNJALA_GONDI" link="harfbuzz-hb-common.html#HB-SCRIPT-GUNJALA-GONDI:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_HANIFI_ROHINGYA" link="harfbuzz-hb-common.html#HB-SCRIPT-HANIFI-ROHINGYA:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_MAKASAR" link="harfbuzz-hb-common.html#HB-SCRIPT-MAKASAR:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_MEDEFAIDRIN" link="harfbuzz-hb-common.html#HB-SCRIPT-MEDEFAIDRIN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_OLD_SOGDIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-OLD-SOGDIAN:CAPS"/>
+ <keyword type="constant" name="HB_SCRIPT_SOGDIAN" link="harfbuzz-hb-common.html#HB-SCRIPT-SOGDIAN:CAPS"/>
<keyword type="constant" name="HB_SCRIPT_INVALID" link="harfbuzz-hb-common.html#HB-SCRIPT-INVALID:CAPS"/>
<keyword type="constant" name="_HB_SCRIPT_MAX_VALUE" link="harfbuzz-hb-common.html#HB-SCRIPT-MAX-VALUE:CAPS"/>
<keyword type="constant" name="_HB_SCRIPT_MAX_VALUE_SIGNED" link="harfbuzz-hb-common.html#HB-SCRIPT-MAX-VALUE-SIGNED:CAPS"/>
@@ -682,43 +993,9 @@
<keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-LINE-SEPARATOR:CAPS"/>
<keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-PARAGRAPH-SEPARATOR:CAPS"/>
<keyword type="constant" name="HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR" link="harfbuzz-hb-unicode.html#HB-UNICODE-GENERAL-CATEGORY-SPACE-SEPARATOR:CAPS"/>
- <keyword type="constant" name="HB_GLYPH_FLAG_UNSAFE_TO_BREAK" link="harfbuzz-Buffers.html#HB-GLYPH-FLAG-UNSAFE-TO-BREAK:CAPS"/>
- <keyword type="constant" name="HB_GLYPH_FLAG_DEFINED" link="harfbuzz-Buffers.html#HB-GLYPH-FLAG-DEFINED:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_CONTENT_TYPE_INVALID" link="harfbuzz-Buffers.html#HB-BUFFER-CONTENT-TYPE-INVALID:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_CONTENT_TYPE_UNICODE" link="harfbuzz-Buffers.html#HB-BUFFER-CONTENT-TYPE-UNICODE:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_CONTENT_TYPE_GLYPHS" link="harfbuzz-Buffers.html#HB-BUFFER-CONTENT-TYPE-GLYPHS:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_FLAG_DEFAULT" link="harfbuzz-Buffers.html#HB-BUFFER-FLAG-DEFAULT:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_FLAG_BOT" link="harfbuzz-Buffers.html#HB-BUFFER-FLAG-BOT:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_FLAG_EOT" link="harfbuzz-Buffers.html#HB-BUFFER-FLAG-EOT:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES" link="harfbuzz-Buffers.html#HB-BUFFER-FLAG-PRESERVE-DEFAULT-IGNORABLES:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES" link="harfbuzz-Buffers.html#HB-BUFFER-FLAG-REMOVE-DEFAULT-IGNORABLES:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES" link="harfbuzz-Buffers.html#HB-BUFFER-CLUSTER-LEVEL-MONOTONE-GRAPHEMES:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS" link="harfbuzz-Buffers.html#HB-BUFFER-CLUSTER-LEVEL-MONOTONE-CHARACTERS:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_CLUSTER_LEVEL_CHARACTERS" link="harfbuzz-Buffers.html#HB-BUFFER-CLUSTER-LEVEL-CHARACTERS:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_CLUSTER_LEVEL_DEFAULT" link="harfbuzz-Buffers.html#HB-BUFFER-CLUSTER-LEVEL-DEFAULT:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_SERIALIZE_FORMAT_TEXT" link="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FORMAT-TEXT:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_SERIALIZE_FORMAT_JSON" link="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FORMAT-JSON:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_SERIALIZE_FORMAT_INVALID" link="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FORMAT-INVALID:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_DEFAULT" link="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-DEFAULT:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS" link="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-NO-CLUSTERS:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS" link="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-NO-POSITIONS:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES" link="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-NO-GLYPH-NAMES:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS" link="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-GLYPH-EXTENTS:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS" link="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-GLYPH-FLAGS:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES" link="harfbuzz-Buffers.html#HB-BUFFER-SERIALIZE-FLAG-NO-ADVANCES:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_DIFF_FLAG_EQUAL" link="harfbuzz-Buffers.html#HB-BUFFER-DIFF-FLAG-EQUAL:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH" link="harfbuzz-Buffers.html#HB-BUFFER-DIFF-FLAG-CONTENT-TYPE-MISMATCH:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH" link="harfbuzz-Buffers.html#HB-BUFFER-DIFF-FLAG-LENGTH-MISMATCH:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT" link="harfbuzz-Buffers.html#HB-BUFFER-DIFF-FLAG-NOTDEF-PRESENT:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT" link="harfbuzz-Buffers.html#HB-BUFFER-DIFF-FLAG-DOTTED-CIRCLE-PRESENT:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH" link="harfbuzz-Buffers.html#HB-BUFFER-DIFF-FLAG-CODEPOINT-MISMATCH:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH" link="harfbuzz-Buffers.html#HB-BUFFER-DIFF-FLAG-CLUSTER-MISMATCH:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH" link="harfbuzz-Buffers.html#HB-BUFFER-DIFF-FLAG-GLYPH-FLAGS-MISMATCH:CAPS"/>
- <keyword type="constant" name="HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH" link="harfbuzz-Buffers.html#HB-BUFFER-DIFF-FLAG-POSITION-MISMATCH:CAPS"/>
- <keyword type="constant" name="HB_MEMORY_MODE_DUPLICATE" link="harfbuzz-hb-blob.html#HB-MEMORY-MODE-DUPLICATE:CAPS"/>
- <keyword type="constant" name="HB_MEMORY_MODE_READONLY" link="harfbuzz-hb-blob.html#HB-MEMORY-MODE-READONLY:CAPS"/>
- <keyword type="constant" name="HB_MEMORY_MODE_WRITABLE" link="harfbuzz-hb-blob.html#HB-MEMORY-MODE-WRITABLE:CAPS"/>
- <keyword type="constant" name="HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE" link="harfbuzz-hb-blob.html#HB-MEMORY-MODE-READONLY-MAY-MAKE-WRITABLE:CAPS"/>
+ <keyword type="constant" name="HB_OT_COLOR_PALETTE_FLAG_DEFAULT" link="harfbuzz-hb-ot-color.html#HB-OT-COLOR-PALETTE-FLAG-DEFAULT:CAPS"/>
+ <keyword type="constant" name="HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_LIGHT_BACKGROUND" link="harfbuzz-hb-ot-color.html#HB-OT-COLOR-PALETTE-FLAG-USABLE-WITH-LIGHT-BACKGROUND:CAPS"/>
+ <keyword type="constant" name="HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_DARK_BACKGROUND" link="harfbuzz-hb-ot-color.html#HB-OT-COLOR-PALETTE-FLAG-USABLE-WITH-DARK-BACKGROUND:CAPS"/>
<keyword type="constant" name="HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED" link="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-GLYPH-CLASS-UNCLASSIFIED:CAPS"/>
<keyword type="constant" name="HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH" link="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-GLYPH-CLASS-BASE-GLYPH:CAPS"/>
<keyword type="constant" name="HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE" link="harfbuzz-hb-ot-layout.html#HB-OT-LAYOUT-GLYPH-CLASS-LIGATURE:CAPS"/>
@@ -785,15 +1062,307 @@
<keyword type="constant" name="HB_OT_MATH_KERN_BOTTOM_RIGHT" link="harfbuzz-hb-ot-math.html#HB-OT-MATH-KERN-BOTTOM-RIGHT:CAPS"/>
<keyword type="constant" name="HB_OT_MATH_KERN_BOTTOM_LEFT" link="harfbuzz-hb-ot-math.html#HB-OT-MATH-KERN-BOTTOM-LEFT:CAPS"/>
<keyword type="constant" name="HB_MATH_GLYPH_PART_FLAG_EXTENDER" link="harfbuzz-hb-ot-math.html#HB-MATH-GLYPH-PART-FLAG-EXTENDER:CAPS"/>
- <keyword type="member" name="hb-glyph-info-t-struct.codepoint" link="harfbuzz-Buffers.html#hb-glyph-info-t-struct.codepoint"/>
- <keyword type="member" name="hb-glyph-info-t-struct.mask" link="harfbuzz-Buffers.html#hb-glyph-info-t-struct.mask"/>
- <keyword type="member" name="hb-glyph-info-t-struct.cluster" link="harfbuzz-Buffers.html#hb-glyph-info-t-struct.cluster"/>
- <keyword type="member" name="hb-glyph-position-t-struct.x-advance" link="harfbuzz-Buffers.html#hb-glyph-position-t-struct.x-advance"/>
- <keyword type="member" name="hb-glyph-position-t-struct.y-advance" link="harfbuzz-Buffers.html#hb-glyph-position-t-struct.y-advance"/>
- <keyword type="member" name="hb-glyph-position-t-struct.x-offset" link="harfbuzz-Buffers.html#hb-glyph-position-t-struct.x-offset"/>
- <keyword type="member" name="hb-glyph-position-t-struct.y-offset" link="harfbuzz-Buffers.html#hb-glyph-position-t-struct.y-offset"/>
- <keyword type="member" name="hb-segment-properties-t-struct.direction" link="harfbuzz-Buffers.html#hb-segment-properties-t-struct.direction"/>
- <keyword type="member" name="hb-segment-properties-t-struct.script" link="harfbuzz-Buffers.html#hb-segment-properties-t-struct.script"/>
- <keyword type="member" name="hb-segment-properties-t-struct.language" link="harfbuzz-Buffers.html#hb-segment-properties-t-struct.language"/>
+ <keyword type="constant" name="HB_OT_VAR_AXIS_FLAG_HIDDEN" link="harfbuzz-hb-ot-var.html#HB-OT-VAR-AXIS-FLAG-HIDDEN:CAPS"/>
+ <keyword type="constant" name="_HB_OT_VAR_AXIS_FLAG_MAX_VALUE" link="harfbuzz-hb-ot-var.html#HB-OT-VAR-AXIS-FLAG-MAX-VALUE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_INVALID" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-INVALID:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-ALL-TYPOGRAPHIC:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-LIGATURES:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_CURISVE_CONNECTION" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-CURISVE-CONNECTION:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-LETTER-CASE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-VERTICAL-SUBSTITUTION:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-LINGUISTIC-REARRANGEMENT:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-NUMBER-SPACING:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-SMART-SWASH-TYPE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-DIACRITICS-TYPE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-VERTICAL-POSITION:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-FRACTIONS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-OVERLAPPING-CHARACTERS-TYPE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-TYPOGRAPHIC-EXTRAS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-MATHEMATICAL-EXTRAS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-ORNAMENT-SETS-TYPE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-CHARACTER-ALTERNATIVES:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-DESIGN-COMPLEXITY-TYPE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-STYLE-OPTIONS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-CHARACTER-SHAPE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-NUMBER-CASE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-TEXT-SPACING:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-TRANSLITERATION:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-ANNOTATION-TYPE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-KANA-SPACING-TYPE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-IDEOGRAPHIC-SPACING-TYPE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-UNICODE-DECOMPOSITION-TYPE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-RUBY-KANA:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-CJK-SYMBOL-ALTERNATIVES-TYPE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-IDEOGRAPHIC-ALTERNATIVES-TYPE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-CJK-VERTICAL-ROMAN-PLACEMENT-TYPE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-ITALIC-CJK-ROMAN:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-CASE-SENSITIVE-LAYOUT:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-ALTERNATE-KANA:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-STYLISTIC-ALTERNATIVES:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-CONTEXTUAL-ALTERNATIVES:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-LOWER-CASE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-UPPER-CASE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_LANGUAGE_TAG_TYPE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-LANGUAGE-TAG-TYPE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-CJK-ROMAN-SPACING-TYPE:CAPS"/>
+ <keyword type="constant" name="_HB_AAT_LAYOUT_FEATURE_TYPE_MAX_VALUE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-TYPE-MAX-VALUE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_INVALID" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-INVALID:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ALL-TYPE-FEATURES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ALL-TYPE-FEATURES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-REQUIRED-LIGATURES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-REQUIRED-LIGATURES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-COMMON-LIGATURES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-COMMON-LIGATURES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-RARE-LIGATURES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-RARE-LIGATURES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-LOGOS-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-LOGOS-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-REBUS-PICTURES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-REBUS-PICTURES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-DIPHTHONG-LIGATURES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-DIPHTHONG-LIGATURES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SQUARED-LIGATURES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SQUARED-LIGATURES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ABBREV-SQUARED-LIGATURES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ABBREV-SQUARED-LIGATURES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SYMBOL-LIGATURES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SYMBOL-LIGATURES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CONTEXTUAL-LIGATURES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CONTEXTUAL-LIGATURES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-HISTORICAL-LIGATURES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-HISTORICAL-LIGATURES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_UNCONNECTED" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-UNCONNECTED:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_PARTIALLY_CONNECTED" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-PARTIALLY-CONNECTED:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CURSIVE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CURSIVE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_AND_LOWER_CASE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-UPPER-AND-LOWER-CASE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_CAPS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ALL-CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_LOWER_CASE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ALL-LOWER-CASE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SMALL_CAPS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SMALL-CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-INITIAL-CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS_AND_SMALL_CAPS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-INITIAL-CAPS-AND-SMALL-CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SUBSTITUTE-VERTICAL-FORMS-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SUBSTITUTE-VERTICAL-FORMS-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-LINGUISTIC-REARRANGEMENT-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-LINGUISTIC-REARRANGEMENT-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_NUMBERS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-MONOSPACED-NUMBERS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_NUMBERS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-PROPORTIONAL-NUMBERS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_NUMBERS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-THIRD-WIDTH-NUMBERS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_NUMBERS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-QUARTER-WIDTH-NUMBERS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-WORD-INITIAL-SWASHES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-WORD-INITIAL-SWASHES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-WORD-FINAL-SWASHES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-WORD-FINAL-SWASHES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-LINE-INITIAL-SWASHES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-LINE-INITIAL-SWASHES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-LINE-FINAL-SWASHES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-LINE-FINAL-SWASHES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-NON-FINAL-SWASHES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-NON-FINAL-SWASHES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SHOW_DIACRITICS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SHOW-DIACRITICS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_HIDE_DIACRITICS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-HIDE-DIACRITICS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_DECOMPOSE_DIACRITICS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-DECOMPOSE-DIACRITICS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_NORMAL_POSITION" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-NORMAL-POSITION:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SUPERIORS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SUPERIORS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_INFERIORS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-INFERIORS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ORDINALS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ORDINALS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SCIENTIFIC_INFERIORS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SCIENTIFIC-INFERIORS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_FRACTIONS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-FRACTIONS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_VERTICAL_FRACTIONS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-VERTICAL-FRACTIONS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAGONAL_FRACTIONS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-DIAGONAL-FRACTIONS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-PREVENT-OVERLAP-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-PREVENT-OVERLAP-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-HYPHENS-TO-EM-DASH-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-HYPHENS-TO-EM-DASH-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-HYPHEN-TO-EN-DASH-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-HYPHEN-TO-EN-DASH-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SLASHED-ZERO-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SLASHED-ZERO-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-FORM-INTERROBANG-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-FORM-INTERROBANG-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SMART-QUOTES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SMART-QUOTES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-PERIODS-TO-ELLIPSIS-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-PERIODS-TO-ELLIPSIS-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-HYPHEN-TO-MINUS-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-HYPHEN-TO-MINUS-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ASTERISK-TO-MULTIPLY-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ASTERISK-TO-MULTIPLY-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SLASH-TO-DIVIDE-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SLASH-TO-DIVIDE-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-INEQUALITY-LIGATURES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-INEQUALITY-LIGATURES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-EXPONENTS-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-EXPONENTS-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-MATHEMATICAL-GREEK-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-MATHEMATICAL-GREEK-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ORNAMENTS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-ORNAMENTS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_DINGBATS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-DINGBATS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_PI_CHARACTERS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-PI-CHARACTERS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_FLEURONS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-FLEURONS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_DECORATIVE_BORDERS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-DECORATIVE-BORDERS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_INTERNATIONAL_SYMBOLS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-INTERNATIONAL-SYMBOLS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_MATH_SYMBOLS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-MATH-SYMBOLS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ALTERNATES" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-ALTERNATES:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL1" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-DESIGN-LEVEL1:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL2" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-DESIGN-LEVEL2:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL3" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-DESIGN-LEVEL3:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL4" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-DESIGN-LEVEL4:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL5" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-DESIGN-LEVEL5:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLE_OPTIONS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-STYLE-OPTIONS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_DISPLAY_TEXT" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-DISPLAY-TEXT:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ENGRAVED_TEXT" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ENGRAVED-TEXT:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ILLUMINATED_CAPS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ILLUMINATED-CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_TITLING_CAPS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-TITLING-CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_TALL_CAPS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-TALL-CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_CHARACTERS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-TRADITIONAL-CHARACTERS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SIMPLIFIED_CHARACTERS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SIMPLIFIED-CHARACTERS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1978_CHARACTERS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-JIS1978-CHARACTERS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1983_CHARACTERS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-JIS1983-CHARACTERS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1990_CHARACTERS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-JIS1990-CHARACTERS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_ONE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-TRADITIONAL-ALT-ONE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_TWO" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-TRADITIONAL-ALT-TWO:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_THREE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-TRADITIONAL-ALT-THREE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FOUR" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-TRADITIONAL-ALT-FOUR:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FIVE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-TRADITIONAL-ALT-FIVE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPERT_CHARACTERS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-EXPERT-CHARACTERS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS2004_CHARACTERS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-JIS2004-CHARACTERS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_HOJO_CHARACTERS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-HOJO-CHARACTERS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_NLCCHARACTERS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-NLCCHARACTERS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_NAMES_CHARACTERS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-TRADITIONAL-NAMES-CHARACTERS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_NUMBERS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-LOWER-CASE-NUMBERS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_NUMBERS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-UPPER-CASE-NUMBERS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_TEXT" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-PROPORTIONAL-TEXT:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_TEXT" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-MONOSPACED-TEXT:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_TEXT" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-HALF-WIDTH-TEXT:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_TEXT" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-THIRD-WIDTH-TEXT:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_TEXT" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-QUARTER-WIDTH-TEXT:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_PROPORTIONAL_TEXT" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ALT-PROPORTIONAL-TEXT:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_HALF_WIDTH_TEXT" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ALT-HALF-WIDTH-TEXT:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_TRANSLITERATION" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-TRANSLITERATION:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-HANJA-TO-HANGUL:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_HIRAGANA_TO_KATAKANA" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-HIRAGANA-TO-KATAKANA:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_KATAKANA_TO_HIRAGANA" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-KATAKANA-TO-HIRAGANA:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_KANA_TO_ROMANIZATION" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-KANA-TO-ROMANIZATION:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_HIRAGANA" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ROMANIZATION-TO-HIRAGANA:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_KATAKANA" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ROMANIZATION-TO-KATAKANA:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_ONE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-HANJA-TO-HANGUL-ALT-ONE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_TWO" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-HANJA-TO-HANGUL-ALT-TWO:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_THREE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-HANJA-TO-HANGUL-ALT-THREE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ANNOTATION" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-ANNOTATION:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_BOX_ANNOTATION" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-BOX-ANNOTATION:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ROUNDED_BOX_ANNOTATION" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ROUNDED-BOX-ANNOTATION:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CIRCLE_ANNOTATION" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CIRCLE-ANNOTATION:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_CIRCLE_ANNOTATION" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-INVERTED-CIRCLE-ANNOTATION:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_PARENTHESIS_ANNOTATION" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-PARENTHESIS-ANNOTATION:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIOD_ANNOTATION" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-PERIOD-ANNOTATION:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMAN_NUMERAL_ANNOTATION" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ROMAN-NUMERAL-ANNOTATION:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAMOND_ANNOTATION" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-DIAMOND-ANNOTATION:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_BOX_ANNOTATION" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-INVERTED-BOX-ANNOTATION:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_ROUNDED_BOX_ANNOTATION" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-INVERTED-ROUNDED-BOX-ANNOTATION:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_KANA" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-FULL-WIDTH-KANA:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_KANA" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-PROPORTIONAL-KANA:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_IDEOGRAPHS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-FULL-WIDTH-IDEOGRAPHS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_IDEOGRAPHS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-PROPORTIONAL-IDEOGRAPHS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_IDEOGRAPHS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-HALF-WIDTH-IDEOGRAPHS:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CANONICAL-COMPOSITION-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CANONICAL-COMPOSITION-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-COMPATIBILITY-COMPOSITION-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-COMPATIBILITY-COMPOSITION-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-TRANSCODING-COMPOSITION-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-TRANSCODING-COMPOSITION-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_RUBY_KANA" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-RUBY-KANA:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-RUBY-KANA:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-RUBY-KANA-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-RUBY-KANA-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_SYMBOL_ALTERNATIVES" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-CJK-SYMBOL-ALTERNATIVES:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_ONE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-SYMBOL-ALT-ONE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_TWO" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-SYMBOL-ALT-TWO:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_THREE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-SYMBOL-ALT-THREE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FOUR" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-SYMBOL-ALT-FOUR:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FIVE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-SYMBOL-ALT-FIVE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_IDEOGRAPHIC_ALTERNATIVES" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-IDEOGRAPHIC-ALTERNATIVES:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_ONE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-IDEOGRAPHIC-ALT-ONE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_TWO" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-IDEOGRAPHIC-ALT-TWO:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_THREE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-IDEOGRAPHIC-ALT-THREE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FOUR" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-IDEOGRAPHIC-ALT-FOUR:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FIVE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-IDEOGRAPHIC-ALT-FIVE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_CENTERED" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-VERTICAL-ROMAN-CENTERED:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_HBASELINE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-VERTICAL-ROMAN-HBASELINE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_ITALIC_ROMAN" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-CJK-ITALIC-ROMAN:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-ITALIC-ROMAN:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-ITALIC-ROMAN-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CJK-ITALIC-ROMAN-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CASE-SENSITIVE-LAYOUT-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CASE-SENSITIVE-LAYOUT-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CASE-SENSITIVE-SPACING-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CASE-SENSITIVE-SPACING-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ALTERNATE-HORIZ-KANA-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ALTERNATE-HORIZ-KANA-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ALTERNATE-VERT-KANA-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-ALTERNATE-VERT-KANA-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLISTIC_ALTERNATES" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-NO-STYLISTIC-ALTERNATES:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-ONE-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-ONE-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-TWO-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-TWO-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-THREE-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-THREE-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-FOUR-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-FOUR-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-FIVE-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-FIVE-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-SIX-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-SIX-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-SEVEN-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-SEVEN-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-EIGHT-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-EIGHT-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-NINE-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-NINE-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-TEN-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-TEN-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-ELEVEN-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-ELEVEN-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-TWELVE-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-TWELVE-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-THIRTEEN-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-THIRTEEN-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-FOURTEEN-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-FOURTEEN-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-FIFTEEN-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-FIFTEEN-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-SIXTEEN-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-SIXTEEN-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-SEVENTEEN-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-SEVENTEEN-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-EIGHTEEN-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-EIGHTEEN-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-NINETEEN-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-NINETEEN-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-TWENTY-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-STYLISTIC-ALT-TWENTY-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CONTEXTUAL-ALTERNATES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CONTEXTUAL-ALTERNATES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SWASH-ALTERNATES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-SWASH-ALTERNATES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_ON" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CONTEXTUAL-SWASH-ALTERNATES-ON:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_OFF" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-CONTEXTUAL-SWASH-ALTERNATES-OFF:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_LOWER_CASE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-DEFAULT-LOWER-CASE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_SMALL_CAPS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-LOWER-CASE-SMALL-CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_PETITE_CAPS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-LOWER-CASE-PETITE-CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_UPPER_CASE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-DEFAULT-UPPER-CASE:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_SMALL_CAPS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-UPPER-CASE-SMALL-CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_PETITE_CAPS" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-UPPER-CASE-PETITE-CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_CJK_ROMAN" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-HALF-WIDTH-CJK-ROMAN:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_CJK_ROMAN" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-PROPORTIONAL-CJK-ROMAN:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_CJK_ROMAN" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-DEFAULT-CJK-ROMAN:CAPS"/>
+ <keyword type="constant" name="HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_CJK_ROMAN" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-FULL-WIDTH-CJK-ROMAN:CAPS"/>
+ <keyword type="constant" name="_HB_AAT_LAYOUT_FEATURE_SELECTOR_MAX_VALUE" link="harfbuzz-hb-aat-layout.html#HB-AAT-LAYOUT-FEATURE-SELECTOR-MAX-VALUE:CAPS"/>
+ <keyword type="member" name="hb-glyph-position-t-struct.x-advance" link="harfbuzz-hb-buffer.html#hb-glyph-position-t-struct.x-advance"/>
+ <keyword type="member" name="hb-glyph-position-t-struct.y-advance" link="harfbuzz-hb-buffer.html#hb-glyph-position-t-struct.y-advance"/>
+ <keyword type="member" name="hb-glyph-position-t-struct.x-offset" link="harfbuzz-hb-buffer.html#hb-glyph-position-t-struct.x-offset"/>
+ <keyword type="member" name="hb-glyph-position-t-struct.y-offset" link="harfbuzz-hb-buffer.html#hb-glyph-position-t-struct.y-offset"/>
+ <keyword type="member" name="hb-segment-properties-t-struct.direction" link="harfbuzz-hb-buffer.html#hb-segment-properties-t-struct.direction"/>
+ <keyword type="member" name="hb-segment-properties-t-struct.script" link="harfbuzz-hb-buffer.html#hb-segment-properties-t-struct.script"/>
+ <keyword type="member" name="hb-segment-properties-t-struct.language" link="harfbuzz-hb-buffer.html#hb-segment-properties-t-struct.language"/>
</functions>
</book>
diff --git a/docs/html/hello-harfbuzz.html b/docs/html/hello-harfbuzz.html
deleted file mode 100644
index edc8985..0000000
--- a/docs/html/hello-harfbuzz.html
+++ /dev/null
@@ -1,181 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Hello, HarfBuzz: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
-<link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="pt01.html" title="Part I. User's manual">
-<link rel="prev" href="building.html" title="Building">
-<link rel="next" href="buffers-language-script-and-direction.html" title="Buffers, language, script and direction">
-<meta name="generator" content="GTK-Doc V1.27.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="building.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="buffers-language-script-and-direction.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="hello-harfbuzz"></a>Hello, HarfBuzz</h2></div></div></div>
-<div class="toc"><dl class="toc"><dt><span class="section"><a href="hello-harfbuzz.html#what-harfbuzz-doesnt-do">What HarfBuzz doesn't do</a></span></dt></dl></div>
-<p>
- Here's the simplest HarfBuzz that can possibly work. We will improve
- it later.
- </p>
-<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
- Create a buffer and put your text in it.
- </p></li></ol></div>
-<pre class="programlisting">
- #include &lt;hb.h&gt;
- hb_buffer_t *buf;
- buf = hb_buffer_create();
- hb_buffer_add_utf8(buf, text, strlen(text), 0, strlen(text));
-</pre>
-<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem" value="2"><p>
- Guess the script, language and direction of the buffer.
- </p></li></ol></div>
-<pre class="programlisting">
- hb_buffer_guess_segment_properties(buf);
-</pre>
-<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem" value="3"><p>
- Create a face and a font, using FreeType for now.
- </p></li></ol></div>
-<pre class="programlisting">
- #include &lt;hb-ft.h&gt;
- FT_New_Face(ft_library, font_path, index, &amp;face)
- hb_font_t *font = hb_ft_font_create(face);
-</pre>
-<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem" value="4"><p>
- Shape!
- </p></li></ol></div>
-<pre class="programlisting">
- hb_shape(font, buf, NULL, 0);
-</pre>
-<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem" value="5"><p>
- Get the glyph and position information.
- </p></li></ol></div>
-<pre class="programlisting">
- hb_glyph_info_t *glyph_info = hb_buffer_get_glyph_infos(buf, &amp;glyph_count);
- hb_glyph_position_t *glyph_pos = hb_buffer_get_glyph_positions(buf, &amp;glyph_count);
-</pre>
-<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem" value="6"><p>
- Iterate over each glyph.
- </p></li></ol></div>
-<pre class="programlisting">
- for (i = 0; i &lt; glyph_count; ++i) {
- glyphid = glyph_info[i].codepoint;
- x_offset = glyph_pos[i].x_offset / 64.0;
- y_offset = glyph_pos[i].y_offset / 64.0;
- x_advance = glyph_pos[i].x_advance / 64.0;
- y_advance = glyph_pos[i].y_advance / 64.0;
- draw_glyph(glyphid, cursor_x + x_offset, cursor_y + y_offset);
- cursor_x += x_advance;
- cursor_y += y_advance;
- }
-</pre>
-<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem" value="7"><p>
- Tidy up.
- </p></li></ol></div>
-<pre class="programlisting">
- hb_buffer_destroy(buf);
- hb_font_destroy(hb_ft_font);
-</pre>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="what-harfbuzz-doesnt-do"></a>What HarfBuzz doesn't do</h2></div></div></div>
-<p>
- The code above will take a UTF8 string, shape it, and give you the
- information required to lay it out correctly on a single
- horizontal (or vertical) line using the font provided. That is the
- extent of HarfBuzz's responsibility.
- </p>
-<p>
- If you are implementing a text layout engine you may have other
- responsibilities, that HarfBuzz will not help you with:
- </p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
-<li class="listitem">
-<p>
- HarfBuzz won't help you with bidirectionality. If you want to
- lay out text with mixed Hebrew and English, you will need to
- ensure that the buffer provided to HarfBuzz has those
- characters in the correct layout order. This will be different
- from the logical order in which the Unicode text is stored. In
- other words, the user will hit the keys in the following
- sequence:
- </p>
-<pre class="programlisting">
-A B C [space] ג ב א [space] D E F
- </pre>
-<p>
- but will expect to see in the output:
- </p>
-<pre class="programlisting">
-ABC אבג DEF
- </pre>
-<p>
- This reordering is called <span class="emphasis"><em>bidi processing</em></span>
- ("bidi" is short for bidirectional), and there's an
- algorithm as an annex to the Unicode Standard which tells you how
- to reorder a string from logical order into presentation order.
- Before sending your string to HarfBuzz, you may need to apply the
- bidi algorithm to it. Libraries such as ICU and fribidi can do
- this for you.
- </p>
-</li>
-<li class="listitem"><p>
- HarfBuzz won't help you with text that contains different font
- properties. For instance, if you have the string "a
- <span class="emphasis"><em>huge</em></span> breakfast", and you expect
- "huge" to be italic, you will need to send three
- strings to HarfBuzz: <code class="literal">a</code>, in your Roman font;
- <code class="literal">huge</code> using your italic font; and
- <code class="literal">breakfast</code> using your Roman font again.
- Similarly if you change font, font size, script, language or
- direction within your string, you will need to shape each run
- independently and then output them independently. HarfBuzz
- expects to shape a run of characters sharing the same
- properties.
- </p></li>
-<li class="listitem">
-<p>
- HarfBuzz won't help you with line breaking, hyphenation or
- justification. As mentioned above, it lays out the string
- along a <span class="emphasis"><em>single line</em></span> of, notionally,
- infinite length. If you want to find out where the potential
- word, sentence and line break points are in your text, you
- could use the ICU library's break iterator functions.
- </p>
-<p>
- HarfBuzz can tell you how wide a shaped piece of text is, which is
- useful input to a justification algorithm, but it knows nothing
- about paragraphs, lines or line lengths. Nor will it adjust the
- space between words to fit them proportionally into a line. If you
- want to layout text in paragraphs, you will probably want to send
- each word of your text to HarfBuzz to determine its shaped width
- after glyph substitutions, then work out how many words will fit
- on a line, and then finally output each word of the line separated
- by a space of the correct size to fully justify the paragraph.
- </p>
-</li>
-</ul></div>
-<p>
- As a layout engine implementor, HarfBuzz will help you with the
- interface between your text and your font, and that's something
- that you'll need - what you then do with the glyphs that your font
- returns is up to you. The example we saw above enough to get us
- started using HarfBuzz. Now we are going to use the remainder of
- HarfBuzz's API to refine that example and improve our text shaping
- capabilities.
- </p>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/home.png b/docs/html/home.png
index 9346b33..c989d46 100644
--- a/docs/html/home.png
+++ b/docs/html/home.png
Binary files differ
diff --git a/docs/html/index.html b/docs/html/index.html
index 8f72dcb..7d9e404 100644
--- a/docs/html/index.html
+++ b/docs/html/index.html
@@ -4,10 +4,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>HarfBuzz Manual: HarfBuzz Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
-<meta name="description" content="HarfBuzz HarfBuzz is an OpenType text shaping engine. The current HarfBuzz codebase, formerly known as harfbuzz-ng, is versioned 1.x.x and is stable and under active maintenance. This is what is used in latest versions of Firefox, GNOME, ChromeOS, Chrome, LibreOffice, XeTeX, Android, and KDE, among other places. The canonical source tree is available here. Also available on github. See for release tarballs. The old HarfBuzz codebase, these days known as harfbuzz-old, was derived from FreeType, Pango, and Qt and is available here. It is not actively developed or maintained, and is extremely buggy. All users are encouraged to switch over to the new HarfBuzz as soon as possible. There are no release tarballs of old HarfBuzz whatsoever.">
+<meta name="description" content="HarfBuzz HarfBuzz is an OpenType text shaping engine. Using the HarfBuzz library allows programs to convert a sequence of Unicode input into properly formatted and positioned glyph output—for any writing system and language. The canonical source-code tree is available at github.com/harfbuzz/harfbuzz and is also available at cgit.freedesktop.org/harfbuzz. See for release tarballs.">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="next" href="pt01.html" title="Part I. User's manual">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,28 +20,18 @@
<div align="center"><img src="HarfBuzz.png" align="middle"></div>
<p>
HarfBuzz is an <a class="ulink" href="http://www.microsoft.com/typography/otspec/" target="_top">OpenType</a>
- text shaping engine.
+ text shaping engine. Using the HarfBuzz library allows
+ programs to convert a sequence of Unicode input into
+ properly formatted and positioned glyph output—for any writing
+ system and language.
</p>
<p>
- The current HarfBuzz codebase, formerly known as harfbuzz-ng, is
- versioned 1.x.x and is stable and under active maintenance. This is
- what is used in latest versions of Firefox, GNOME, ChromeOS, Chrome,
- LibreOffice, XeTeX, Android, and KDE, among other places. The canonical
- source tree is available
- <a class="ulink" href="http://cgit.freedesktop.org/harfbuzz/" target="_top">here</a>.
- Also available on
- <a class="ulink" href="https://github.com/harfbuzz/harfbuzz" target="_top">github</a>.
- See <a class="xref" href="install-harfbuzz.html#download" title="Download">Download</a> for release tarballs.
- </p>
-<p>
- The old HarfBuzz codebase, these days known as harfbuzz-old, was
- derived from <a class="ulink" href="http://freetype.org/" target="_top">FreeType</a>,
- <a class="ulink" href="http://pango.org/" target="_top">Pango</a>, and
- <a class="ulink" href="http://qt-project.org/" target="_top">Qt</a> and is available
- <a class="ulink" href="http://cgit.freedesktop.org/harfbuzz.old/" target="_top">here</a>.
- It is not actively developed or maintained, and is extremely buggy. All
- users are encouraged to switch over to the new HarfBuzz as soon as
- possible. There are no release tarballs of old HarfBuzz whatsoever.
+ The canonical source-code tree is available at
+ <a class="ulink" href="https://github.com/harfbuzz/harfbuzz" target="_top">github.com/harfbuzz/harfbuzz</a>
+ and is also available at
+ <a class="ulink" href="http://cgit.freedesktop.org/harfbuzz/" target="_top">cgit.freedesktop.org/harfbuzz</a>.
+ See <a class="xref" href="install-harfbuzz.html#download" title="Downloading HarfBuzz">Downloading HarfBuzz</a> for
+ release tarballs.
</p>
</div></div>
</div>
@@ -52,16 +42,40 @@
<dd><dl>
<dt><span class="chapter"><a href="what-is-harfbuzz.html">What is HarfBuzz?</a></span></dt>
<dd><dl>
-<dt><span class="section"><a href="what-is-harfbuzz.html#why-do-i-need-it">Why do I need it?</a></span></dt>
+<dt><span class="section"><a href="what-is-harfbuzz.html#what-is-text-shaping">What is text shaping?</a></span></dt>
+<dt><span class="section"><a href="why-do-i-need-a-shaping-engine.html">Why do I need a shaping engine?</a></span></dt>
+<dt><span class="section"><a href="ch01s03.html">What does HarfBuzz do?</a></span></dt>
+<dt><span class="section"><a href="what-harfbuzz-doesnt-do.html">What HarfBuzz doesn't do</a></span></dt>
<dt><span class="section"><a href="why-is-it-called-harfbuzz.html">Why is it called HarfBuzz?</a></span></dt>
</dl></dd>
-<dt><span class="chapter"><a href="install-harfbuzz.html">Install HarfBuzz</a></span></dt>
+<dt><span class="chapter"><a href="install-harfbuzz.html">Installing HarfBuzz</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="install-harfbuzz.html#download">Downloading HarfBuzz</a></span></dt>
+<dt><span class="section"><a href="building.html">Building HarfBuzz</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="building.html#building.linux">Building on Linux</a></span></dt>
+<dt><span class="section"><a href="building.html#building.windows">Building on Windows</a></span></dt>
+<dt><span class="section"><a href="building.html#building.macos">Building on macOS</a></span></dt>
+<dt><span class="section"><a href="building.html#configuration">Configuration options</a></span></dt>
+</dl></dd>
+</dl></dd>
+<dt><span class="chapter"><a href="getting-started.html">Getting started with HarfBuzz</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="getting-started.html#id-1.2.4.2">An overview of the HarfBuzz shaping API</a></span></dt>
+<dt><span class="section"><a href="ch03s02.html">Terminology</a></span></dt>
+<dt><span class="section"><a href="ch03s03.html">A simple shaping example</a></span></dt>
+</dl></dd>
+<dt><span class="chapter"><a href="shaping-concepts.html">Shaping concepts</a></span></dt>
<dd><dl>
-<dt><span class="section"><a href="install-harfbuzz.html#download">Download</a></span></dt>
-<dt><span class="section"><a href="building.html">Building</a></span></dt>
+<dt><span class="section"><a href="shaping-concepts.html#text-shaping-concepts">Text shaping</a></span></dt>
+<dt><span class="section"><a href="complex-scripts.html">Complex scripts</a></span></dt>
+<dt><span class="section"><a href="shaping-operations.html">Shaping operations</a></span></dt>
+<dt><span class="section"><a href="unicode-character-categories.html">Unicode character categories</a></span></dt>
+<dt><span class="section"><a href="text-runs.html">Text runs</a></span></dt>
+<dt><span class="section"><a href="opentype-shaping-models.html">OpenType shaping models</a></span></dt>
+<dt><span class="section"><a href="graphite-shaping.html">Graphite shaping</a></span></dt>
+<dt><span class="section"><a href="aat-shaping.html">AAT shaping</a></span></dt>
</dl></dd>
-<dt><span class="chapter"><a href="hello-harfbuzz.html">Hello, HarfBuzz</a></span></dt>
-<dd><dl><dt><span class="section"><a href="hello-harfbuzz.html#what-harfbuzz-doesnt-do">What HarfBuzz doesn't do</a></span></dt></dl></dd>
<dt><span class="chapter"><a href="buffers-language-script-and-direction.html">Buffers, language, script and direction</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="buffers-language-script-and-direction.html#creating-and-destroying-buffers">Creating and destroying buffers</a></span></dt>
@@ -76,16 +90,18 @@
<dt><span class="section"><a href="using-harfbuzzs-native-opentype-implementation.html">Using HarfBuzz's native OpenType implementation</a></span></dt>
<dt><span class="section"><a href="using-your-own-font-functions.html">Using your own font functions</a></span></dt>
</dl></dd>
-<dt><span class="chapter"><a href="clusters.html"></a></span></dt>
+<dt><span class="chapter"><a href="clusters.html">Clusters</a></span></dt>
<dd><dl>
-<dt><span class="sect1"><a href="clusters.html#clusters">Clusters</a></span></dt>
-<dt><span class="sect1"><a href="a-clustering-example-for-levels-0-and-1.html">A clustering example for levels 0 and 1</a></span></dt>
-<dt><span class="sect1"><a href="reordering-in-levels-0-and-1.html">Reordering in levels 0 and 1</a></span></dt>
-<dt><span class="sect1"><a href="the-distinction-between-levels-0-and-1.html">The distinction between levels 0 and 1</a></span></dt>
-<dt><span class="sect1"><a href="level-2.html">Level 2</a></span></dt>
+<dt><span class="section"><a href="clusters.html#clusters-and-shaping">Clusters and shaping</a></span></dt>
+<dt><span class="section"><a href="working-with-harfbuzz-clusters.html">Working with HarfBuzz clusters</a></span></dt>
+<dt><span class="section"><a href="a-clustering-example-for-levels-0-and-1.html">A clustering example for levels 0 and 1</a></span></dt>
+<dt><span class="section"><a href="reordering-in-levels-0-and-1.html">Reordering in levels 0 and 1</a></span></dt>
+<dt><span class="section"><a href="the-distinction-between-levels-0-and-1.html">The distinction between levels 0 and 1</a></span></dt>
+<dt><span class="section"><a href="level-2.html">Level 2</a></span></dt>
<dd><dl>
-<dt><span class="sect2"><a href="level-2.html#ligatures-with-combining-marks">Ligatures with combining marks</a></span></dt>
-<dt><span class="sect2"><a href="level-2.html#reordering">Reordering</a></span></dt>
+<dt><span class="section"><a href="level-2.html#ligatures-with-combining-marks-in-level-2">Ligatures with combining marks in level 2</a></span></dt>
+<dt><span class="section"><a href="level-2.html#reordering-in-level-2">Reordering in level 2</a></span></dt>
+<dt><span class="section"><a href="level-2.html#other-considerations-in-level-2">Other considerations in level 2</a></span></dt>
</dl></dd>
</dl></dd>
<dt><span class="chapter"><a href="shaping-and-shape-plans.html">Shaping and shape plans</a></span></dt>
@@ -96,116 +112,138 @@
</dl></dd>
<dt><span class="part"><a href="pt02.html">II. Reference manual</a></span></dt>
<dd><dl>
-<dt><span class="chapter"><a href="ch08.html">HarfBuzz API</a></span></dt>
+<dt><span class="chapter"><a href="ch09.html">Core API</a></span></dt>
<dd><dl>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb.html">hb</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-blob.html">hb-blob</a></span><span class="refpurpose"> — Binary data containers</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-common.html">hb-common</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-buffer.html">hb-buffer</a></span><span class="refpurpose"> — Input and output buffers</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-unicode.html">hb-unicode</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-common.html">hb-common</a></span><span class="refpurpose"> — Common data types</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-Buffers.html">Buffers</a></span><span class="refpurpose"> — Input and output buffers</span>
+<span class="refentrytitle"><a href="harfbuzz-hb-deprecated.html">hb-deprecated</a></span><span class="refpurpose"> — Deprecated API</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-blob.html">hb-blob</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-face.html">hb-face</a></span><span class="refpurpose"> — Font face objects</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-face.html">hb-face</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-font.html">hb-font</a></span><span class="refpurpose"> — Font objects</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-font.html">hb-font</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-map.html">hb-map</a></span><span class="refpurpose"> — Object representing integer to integer mapping</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-Shaping.html">Shaping</a></span><span class="refpurpose"> — Conversion of text strings into positioned glyphs</span>
+<span class="refentrytitle"><a href="harfbuzz-hb-set.html">hb-set</a></span><span class="refpurpose"> — Object representing a set of integers</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-version.html">hb-version</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-shape-plan.html">hb-shape-plan</a></span><span class="refpurpose"> — Object representing a shaping plan</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-deprecated.html">hb-deprecated</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-shape.html">hb-shape</a></span><span class="refpurpose"> — Conversion of text strings into positioned glyphs</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-set.html">hb-set</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-unicode.html">hb-unicode</a></span><span class="refpurpose"> — Unicode character property access</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot.html">hb-ot</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-version.html">hb-version</a></span><span class="refpurpose"> — Information about the version of HarfBuzz in use</span>
+</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="ch10.html">OpenType API</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-color.html">hb-ot-color</a></span><span class="refpurpose"> — OpenType Color Fonts</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-layout.html">hb-ot-layout</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-font.html">hb-ot-font</a></span><span class="refpurpose"> — OpenType font implementation</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-tag.html">hb-ot-tag</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-layout.html">hb-ot-layout</a></span><span class="refpurpose"> — OpenType Layout</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-font.html">hb-ot-font</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-math.html">hb-ot-math</a></span><span class="refpurpose"> — OpenType Math information</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-shape.html">hb-ot-shape</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-name.html">hb-ot-name</a></span><span class="refpurpose"> — OpenType font name information</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-math.html">hb-ot-math</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-shape.html">hb-ot-shape</a></span><span class="refpurpose"> — OpenType shaping support</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-shape-plan.html">hb-shape-plan</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-var.html">hb-ot-var</a></span><span class="refpurpose"> — OpenType Font Variations</span>
</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="ch11.html">Apple Advanced Typography API</a></span></dt>
+<dd><dl><dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-aat-layout.html">hb-aat-layout</a></span><span class="refpurpose"> — Apple Advanced Typography Layout</span>
+</dt></dl></dd>
+<dt><span class="chapter"><a href="ch12.html">Integration API</a></span></dt>
+<dd><dl>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-glib.html">hb-glib</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-coretext.html">hb-coretext</a></span><span class="refpurpose"> — CoreText integration</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-icu.html">hb-icu</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-ft.html">hb-ft</a></span><span class="refpurpose"> — FreeType integration</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ft.html">hb-ft</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-glib.html">hb-glib</a></span><span class="refpurpose"> — GLib integration</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-graphite2.html">hb-graphite2</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-gobject.html">hb-gobject</a></span><span class="refpurpose"> — GObject integration</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-uniscribe.html">hb-uniscribe</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-graphite2.html">hb-graphite2</a></span><span class="refpurpose"> — Graphite2 integration</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-coretext.html">hb-coretext</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-icu.html">hb-icu</a></span><span class="refpurpose"> — ICU integration</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-gobject.html">hb-gobject</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-uniscribe.html">hb-uniscribe</a></span><span class="refpurpose"> — Windows integration</span>
</dt>
</dl></dd>
-<dt><span class="chapter"><a href="object-tree.html">Object Hierarchy</a></span></dt>
<dt><span class="index"><a href="api-index-full.html">API Index</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-2.html">Index of new symbols in 0.9.2</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-5.html">Index of new symbols in 0.9.5</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-7.html">Index of new symbols in 0.9.7</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-8.html">Index of new symbols in 0.9.8</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-10.html">Index of new symbols in 0.9.10</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-11.html">Index of new symbols in 0.9.11</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-20.html">Index of new symbols in 0.9.20</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-22.html">Index of new symbols in 0.9.22</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-28.html">Index of new symbols in 0.9.28</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-30.html">Index of new symbols in 0.9.30</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-31.html">Index of new symbols in 0.9.31</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-38.html">Index of new symbols in 0.9.38</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-39.html">Index of new symbols in 0.9.39</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-41.html">Index of new symbols in 0.9.41</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-42.html">Index of new symbols in 0.9.42</a></span></dt>
-<dt><span class="index"><a href="api-index-1-0-5.html">Index of new symbols in 1.0.5</a></span></dt>
-<dt><span class="index"><a href="api-index-1-1-2.html">Index of new symbols in 1.1.2</a></span></dt>
-<dt><span class="index"><a href="api-index-1-1-3.html">Index of new symbols in 1.1.3</a></span></dt>
-<dt><span class="index"><a href="api-index-1-2-3.html">Index of new symbols in 1.2.3</a></span></dt>
-<dt><span class="index"><a href="api-index-1-3-3.html">Index of new symbols in 1.3.3</a></span></dt>
-<dt><span class="index"><a href="api-index-1-4-2.html">Index of new symbols in 1.4.2</a></span></dt>
-<dt><span class="index"><a href="api-index-1-4-3.html">Index of new symbols in 1.4.3</a></span></dt>
-<dt><span class="index"><a href="api-index-1-5-0.html">Index of new symbols in 1.5.0</a></span></dt>
-<dt><span class="index"><a href="api-index-1-6-0.html">Index of new symbols in 1.6.0</a></span></dt>
<dt><span class="index"><a href="deprecated-api-index.html">Index of deprecated API</a></span></dt>
+<dt><span class="index"><a href="api-index-2-1-0.html">Index of new symbols in 2.1.0</a></span></dt>
+<dt><span class="index"><a href="api-index-2-0-0.html">Index of new symbols in 2.0.0</a></span></dt>
+<dt><span class="index"><a href="api-index-1-9-0.html">Index of new symbols in 1.9.0</a></span></dt>
+<dt><span class="index"><a href="api-index-1-8-6.html">Index of new symbols in 1.8.6</a></span></dt>
+<dt><span class="index"><a href="api-index-1-8-5.html">Index of new symbols in 1.8.5</a></span></dt>
+<dt><span class="index"><a href="api-index-1-8-1.html">Index of new symbols in 1.8.1</a></span></dt>
+<dt><span class="index"><a href="api-index-1-8-0.html">Index of new symbols in 1.8.0</a></span></dt>
+<dt><span class="index"><a href="api-index-1-7-7.html">Index of new symbols in 1.7.7</a></span></dt>
+<dt><span class="index"><a href="api-index-1-7-5.html">Index of new symbols in 1.7.5</a></span></dt>
+<dt><span class="index"><a href="api-index-1-6-0.html">Index of new symbols in 1.6.0</a></span></dt>
+<dt><span class="index"><a href="api-index-1-5-0.html">Index of new symbols in 1.5.0</a></span></dt>
+<dt><span class="index"><a href="api-index-1-4-3.html">Index of new symbols in 1.4.3</a></span></dt>
+<dt><span class="index"><a href="api-index-1-4-2.html">Index of new symbols in 1.4.2</a></span></dt>
+<dt><span class="index"><a href="api-index-1-4-0.html">Index of new symbols in 1.4.0</a></span></dt>
+<dt><span class="index"><a href="api-index-1-3-3.html">Index of new symbols in 1.3.3</a></span></dt>
+<dt><span class="index"><a href="api-index-1-2-3.html">Index of new symbols in 1.2.3</a></span></dt>
+<dt><span class="index"><a href="api-index-1-1-3.html">Index of new symbols in 1.1.3</a></span></dt>
+<dt><span class="index"><a href="api-index-1-1-2.html">Index of new symbols in 1.1.2</a></span></dt>
+<dt><span class="index"><a href="api-index-1-0-5.html">Index of new symbols in 1.0.5</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-42.html">Index of new symbols in 0.9.42</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-41.html">Index of new symbols in 0.9.41</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-39.html">Index of new symbols in 0.9.39</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-38.html">Index of new symbols in 0.9.38</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-31.html">Index of new symbols in 0.9.31</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-30.html">Index of new symbols in 0.9.30</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-28.html">Index of new symbols in 0.9.28</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-22.html">Index of new symbols in 0.9.22</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-20.html">Index of new symbols in 0.9.20</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-11.html">Index of new symbols in 0.9.11</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-10.html">Index of new symbols in 0.9.10</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-8.html">Index of new symbols in 0.9.8</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-7.html">Index of new symbols in 0.9.7</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-5.html">Index of new symbols in 0.9.5</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-2.html">Index of new symbols in 0.9.2</a></span></dt>
<dt><span class="glossary"><a href="annotation-glossary.html">Annotation Glossary</a></span></dt>
</dl></dd>
</dl></div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/install-harfbuzz.html b/docs/html/install-harfbuzz.html
index 019915b..940cf1a 100644
--- a/docs/html/install-harfbuzz.html
+++ b/docs/html/install-harfbuzz.html
@@ -2,13 +2,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Install HarfBuzz: HarfBuzz Manual</title>
+<title>Installing HarfBuzz: HarfBuzz Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="pt01.html" title="Part I. User's manual">
<link rel="prev" href="why-is-it-called-harfbuzz.html" title="Why is it called HarfBuzz?">
-<link rel="next" href="building.html" title="Building">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="next" href="building.html" title="Building HarfBuzz">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -21,39 +21,50 @@
</tr></table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
-<a name="install-harfbuzz"></a>Install HarfBuzz</h2></div></div></div>
+<a name="install-harfbuzz"></a>Installing HarfBuzz</h2></div></div></div>
<div class="toc"><dl class="toc">
-<dt><span class="section"><a href="install-harfbuzz.html#download">Download</a></span></dt>
-<dt><span class="section"><a href="building.html">Building</a></span></dt>
+<dt><span class="section"><a href="install-harfbuzz.html#download">Downloading HarfBuzz</a></span></dt>
+<dt><span class="section"><a href="building.html">Building HarfBuzz</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="building.html#building.linux">Building on Linux</a></span></dt>
+<dt><span class="section"><a href="building.html#building.windows">Building on Windows</a></span></dt>
+<dt><span class="section"><a href="building.html#building.macos">Building on macOS</a></span></dt>
+<dt><span class="section"><a href="building.html#configuration">Configuration options</a></span></dt>
+</dl></dd>
</dl></div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="download"></a>Download</h2></div></div></div>
+<a name="download"></a>Downloading HarfBuzz</h2></div></div></div>
<p>
- For tarball releases of HarfBuzz, look
- <a class="ulink" href="http://www.freedesktop.org/software/harfbuzz/release/" target="_top">here</a>.
- At the same place you will
- also find Win32 binary bundles that include libharfbuzz DLL, hb-view.exe,
- hb-shape.exe, and all dependencies.
+ The HarfBuzz source code is hosted at <a class="ulink" href="https://github.com/harfbuzz/harfbuzz" target="_top">github.com/harfbuzz/harfbuzz</a>. The
+ same source tree is also available at the
+ <a class="ulink" href="http://cgit.freedesktop.org/harfbuzz/" target="_top">Freedesktop.org</a>
+ site.
</p>
<p>
- The canonical source tree is available
- <a class="ulink" href="http://cgit.freedesktop.org/harfbuzz/" target="_top">here</a>.
- Also available on <a class="ulink" href="https://github.com/harfbuzz/harfbuzz" target="_top">github</a>.
+ Tarball releases and Win32 binary bundles (which include the
+ libharfbuzz DLL, hb-view.exe, hb-shape.exe, and all
+ dependencies) of HarfBuzz can be downloaded from <a class="ulink" href="https://github.com/harfbuzz/harfbuzz" target="_top">github.com/harfbuzz/harfbuzz/releases</a>
+ or from
+ <a class="ulink" href="http://www.freedesktop.org/software/harfbuzz/release/" target="_top">Freedesktop.org</a>.
</p>
<p>
- The API that comes with <code class="filename">hb.h</code> will
- not change incompatibly. Other, peripheral, headers are more likely to go
- through minor modifications, but again, will do our best to never change
- API in an incompatible way. We will never break the ABI.
+ Release notes are posted with each new release to provide an
+ overview of the changes. The project <a class="ulink" href="https://github.com/harfbuzz/harfbuzz/issues" target="_top">tracks bug
+ reports and other issues</a> on GitHub. Discussion and
+ questions are welcome on the <a class="ulink" href="http://freedesktop.org/mailman/listinfo/harfbuzz/" target="_top">HarfBuzz
+ mailing list</a>.
</p>
<p>
- If you are not sure whether Pango or HarfBuzz is right for you, read
- <a class="ulink" href="http://mces.blogspot.in/2009/11/pango-vs-harfbuzz.html" target="_top">this</a>.
+ The API included in the <code class="filename">hb.h</code> file will not change in a
+ compatibility-breaking way in any release. However, other,
+ peripheral headers are more likely to go through minor
+ modifications. We will do our best to never change APIs in an
+ incompatible way. We will <span class="emphasis"><em>never</em></span> break the ABI.
</p>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/left-insensitive.png b/docs/html/left-insensitive.png
index 3269393..b1148fb 100644
--- a/docs/html/left-insensitive.png
+++ b/docs/html/left-insensitive.png
Binary files differ
diff --git a/docs/html/left.png b/docs/html/left.png
index 2abde03..c164913 100644
--- a/docs/html/left.png
+++ b/docs/html/left.png
Binary files differ
diff --git a/docs/html/level-2.html b/docs/html/level-2.html
index 23410dc..3e67349 100644
--- a/docs/html/level-2.html
+++ b/docs/html/level-2.html
@@ -5,10 +5,10 @@
<title>Level 2: 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="clusters.html" title="">
+<link rel="up" href="clusters.html" title="Clusters">
<link rel="prev" href="the-distinction-between-levels-0-and-1.html" title="The distinction between levels 0 and 1">
<link rel="next" href="shaping-and-shape-plans.html" title="Shaping and shape plans">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,112 +19,167 @@
<td><a accesskey="p" href="the-distinction-between-levels-0-and-1.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="shaping-and-shape-plans.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="sect1">
+<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="level-2"></a>Level 2</h2></div></div></div>
<p>
- Level 2 is a different beast from levels 0 and 1. It is simple to
- describe, but hard to make sense of. It simply doesn't do any
- cluster merging whatsoever. When things ligate or otherwise multiple
- glyphs turn into one, the cluster value of the first glyph is
- retained.
- </p>
-<p>
- Here are a few examples of why processing cluster values produced at
- this level might be tricky:
- </p>
-<div class="sect2">
-<div class="titlepage"><div><div><h3 class="title">
-<a name="ligatures-with-combining-marks"></a>Ligatures with combining marks</h3></div></div></div>
+ HarfBuzz's level 2 cluster behavior uses a significantly
+ different model than that of level 0 and level 1.
+ </p>
<p>
- Imagine capital letters are bases and lower case letters are
- combining marks. With an input sequence like this:
+ The level 2 behavior is easy to describe, but it may be
+ difficult to understand in practical terms. In brief, level 2
+ performs no merging of clusters whatsoever.
</p>
-<pre class="programlisting">
- A,a,B,b,C,c
- 0,1,2,3,4,5
-</pre>
<p>
- if <code class="literal">A,B,C</code> ligate, then here are the cluster
- values one would get under the various levels:
+ This means that there is no initial base-and-mark merging step
+ (as is done in level 0), and it means that reordering moves and
+ ligature substitutions do not trigger a cluster merge.
</p>
<p>
- level 0:
+ Only one shaping operation directly affects clusters when using
+ level 2:
</p>
-<pre class="programlisting">
- ABC,a,b,c
- 0 ,0,0,0
-</pre>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+ When a cluster <span class="emphasis"><em>decomposes</em></span>, all of the
+ resulting child clusters inherit as their cluster value the
+ cluster value of the parent cluster.
+ </p></li></ul></div>
<p>
- level 1:
+ When glyphs do form a ligature (or when some other feature
+ substitutes multiple glyphs with one glyph) the cluster value
+ of the first glyph is retained as the cluster value for the
+ resulting ligature.
</p>
-<pre class="programlisting">
- ABC,a,b,c
- 0 ,0,0,5
-</pre>
<p>
- level 2:
+ This occurrence sounds similar to a cluster merge, but it is
+ different. In particular, no subsequent characters —
+ including marks and modifiers — are affected. They retain
+ their previous cluster values.
</p>
-<pre class="programlisting">
- ABC,a,b,c
- 0 ,1,3,5
-</pre>
-<p>
- Making sense of the last example is the hardest for a client,
- because there is nothing in the cluster values to suggest that
- <code class="literal">B</code> and <code class="literal">C</code> ligated with
- <code class="literal">A</code>.
+<p>
+ Level 2 cluster behavior is ultimately less complex than level 0
+ or level 1, but there are several cases for which processing
+ cluster values produced at level 2 may be tricky.
</p>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="ligatures-with-combining-marks-in-level-2"></a>Ligatures with combining marks in level 2</h3></div></div></div>
+<p>
+ The first example of how HarfBuzz's level 2 cluster behavior
+ can be tricky is when the text to be shaped includes combining
+ marks attached to ligatures.
+ </p>
+<p>
+ Let us start with an input sequence with the following
+ characters (top row) and initial cluster values (bottom row):
+ </p>
+<pre class="programlisting">
+ A,acute,B,breve,C,circumflex
+ 0,1 ,2,3 ,4,5
+ </pre>
+<p>
+ If the sequence <code class="literal">A,B,C</code> forms a ligature,
+ then these are the cluster values HarfBuzz will return under
+ the various cluster levels:
+ </p>
+<p>
+ Level 0:
+ </p>
+<pre class="programlisting">
+ ABC,acute,breve,circumflex
+ 0 ,0 ,0 ,0
+ </pre>
+<p>
+ Level 1:
+ </p>
+<pre class="programlisting">
+ ABC,acute,breve,circumflex
+ 0 ,0 ,0 ,5
+ </pre>
+<p>
+ Level 2:
+ </p>
+<pre class="programlisting">
+ ABC,acute,breve,circumflex
+ 0 ,1 ,3 ,5
+ </pre>
+<p>
+ Making sense of the level 2 result is the hardest for a client
+ program, because there is nothing in the cluster values that
+ indicates that <code class="literal">B</code> and <code class="literal">C</code>
+ formed a ligature with <code class="literal">A</code>.
+ </p>
+<p>
+ In contrast, the "merged" cluster values of the mark glyphs
+ that are seen in the level 0 and level 1 output are evidence
+ that a ligature substitution took place.
+ </p>
</div>
-<div class="sect2">
+<div class="section">
<div class="titlepage"><div><div><h3 class="title">
-<a name="reordering"></a>Reordering</h3></div></div></div>
+<a name="reordering-in-level-2"></a>Reordering in level 2</h3></div></div></div>
<p>
- Another tricky case is when things reorder. Under level 2:
- </p>
+ Another example of how HarfBuzz's level 2 cluster behavior
+ can be tricky is when glyphs reorder. Consider an input sequence
+ with the following characters (top row) and initial cluster
+ values (bottom row):
+ </p>
<pre class="programlisting">
- A,B,C,D,E
- 0,1,2,3,4
-</pre>
+ A,B,C,D,E
+ 0,1,2,3,4
+ </pre>
<p>
- Now imagine <code class="literal">D</code> moves before
- <code class="literal">B</code>:
- </p>
+ Now imagine <code class="literal">D</code> moves before
+ <code class="literal">B</code> in a reordering operation. The cluster
+ values will then be:
+ </p>
<pre class="programlisting">
- A,D,B,C,E
- 0,3,1,2,4
-</pre>
+ A,D,B,C,E
+ 0,3,1,2,4
+ </pre>
<p>
- Now, if <code class="literal">D</code> ligates with <code class="literal">B</code>, we
- get:
- </p>
+ Next, if <code class="literal">D</code> forms a ligature with
+ <code class="literal">B</code>, the output is:
+ </p>
<pre class="programlisting">
- A,DB,C,E
- 0,3 ,2,4
-</pre>
-<p>
- In a different scenario, <code class="literal">A</code> and
- <code class="literal">B</code> could have ligated
- <span class="emphasis"><em>before</em></span> <code class="literal">D</code> reordered; that
- would have resulted in:
- </p>
+ A,DB,C,E
+ 0,3 ,2,4
+ </pre>
+<p>
+ However, in a different scenario, in which the shaping rules
+ of the script instead caused <code class="literal">A</code> and
+ <code class="literal">B</code> to form a ligature
+ <span class="emphasis"><em>before</em></span> the <code class="literal">D</code> reordered, the
+ result would be:
+ </p>
<pre class="programlisting">
- AB,D,C,E
- 0 ,3,2,4
-</pre>
+ AB,D,C,E
+ 0 ,3,2,4
+ </pre>
<p>
- There's no way to differentiate between these two scenarios based
- on the cluster numbers alone.
- </p>
+ There is no way for a client program to differentiate between
+ these two scenarios based on the cluster values
+ alone. Consequently, client programs that use level 2 might
+ need to undertake additional work in order to manage cursor
+ positioning, text attributes, or other desired features.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="other-considerations-in-level-2"></a>Other considerations in level 2</h3></div></div></div>
<p>
- Another problem happens with ligatures under level 2 if the
- direction of the text is forced to opposite of its natural
- direction (e.g. left-to-right Arabic). But that's too much of a
- corner case to worry about.
- </p>
+ There may be other problems encountered with ligatures under
+ level 2, such as if the direction of the text is forced to
+ opposite of its natural direction (for example, Arabic text
+ that is forced into left-to-right directionality). But,
+ generally speaking, these other scenarios are minor corner
+ cases that are too obscure for most client programs to need to
+ worry about.
+ </p>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/object-tree.html b/docs/html/object-tree.html
deleted file mode 100644
index 80d35bc..0000000
--- a/docs/html/object-tree.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Object Hierarchy: 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="pt02.html" title="Part II. Reference manual">
-<link rel="prev" href="harfbuzz-hb-gobject.html" title="hb-gobject">
-<link rel="next" href="api-index-full.html" title="API Index">
-<meta name="generator" content="GTK-Doc V1.27.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="pt02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="harfbuzz-hb-gobject.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="api-index-full.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="object-tree"></a>Object Hierarchy</h2></div></div></div>
-<pre class="screen">
- <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html">GBoxed</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t">hb_blob_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-buffer-t">hb_buffer_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-face.html#hb-face-t">hb_face_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Shaping.html#hb-feature-t">hb_feature_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-font.html#hb-font-funcs-t">hb_font_funcs_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-font.html#hb-font-t">hb_font_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-glyph-info-t">hb_glyph_info_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-glyph-position-t">hb_glyph_position_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-ot-math.html#hb-ot-math-glyph-part-t">hb_ot_math_glyph_part_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-ot-math.html#hb-ot-math-glyph-variant-t">hb_ot_math_glyph_variant_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-segment-properties-t">hb_segment_properties_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-set.html#hb-set-t">hb_set_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-shape-plan.html#hb-shape-plan-t">hb_shape_plan_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t">hb_unicode_funcs_t</a>
- <span class="lineart">╰──</span> <a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t">hb_user_data_key_t</a>
- <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t">hb_buffer_cluster_level_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t">hb_buffer_content_type_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t">hb_buffer_serialize_format_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t">hb_direction_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-blob.html#hb-memory-mode-t" title="enum hb_memory_mode_t">hb_memory_mode_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-ot-layout.html#hb-ot-layout-glyph-class-t" title="enum hb_ot_layout_glyph_class_t">hb_ot_layout_glyph_class_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-ot-math.html#hb-ot-math-constant-t" title="enum hb_ot_math_constant_t">hb_ot_math_constant_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-ot-math.html#hb-ot-math-kern-t" title="enum hb_ot_math_kern_t">hb_ot_math_kern_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t">hb_script_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-combining-class-t" title="enum hb_unicode_combining_class_t">hb_unicode_combining_class_t</a>
- <span class="lineart">╰──</span> <a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-general-category-t" title="enum hb_unicode_general_category_t">hb_unicode_general_category_t</a>
- <a href="/home/behdad/.local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html">GFlags</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-buffer-diff-flags-t" title="enum hb_buffer_diff_flags_t">hb_buffer_diff_flags_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t">hb_buffer_flags_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t">hb_buffer_serialize_flags_t</a>
- <span class="lineart">├──</span> <a class="link" href="harfbuzz-Buffers.html#hb-glyph-flags-t" title="enum hb_glyph_flags_t">hb_glyph_flags_t</a>
- <span class="lineart">╰──</span> <a class="link" href="harfbuzz-hb-ot-math.html#hb-ot-math-glyph-part-flags-t" title="enum hb_ot_math_glyph_part_flags_t">hb_ot_math_glyph_part_flags_t</a>
-</pre>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
-</body>
-</html> \ No newline at end of file
diff --git a/docs/html/opentype-shaping-models.html b/docs/html/opentype-shaping-models.html
new file mode 100644
index 0000000..46b9e2b
--- /dev/null
+++ b/docs/html/opentype-shaping-models.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>OpenType shaping models: 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="shaping-concepts.html" title="Shaping concepts">
+<link rel="prev" href="text-runs.html" title="Text runs">
+<link rel="next" href="graphite-shaping.html" title="Graphite shaping">
+<meta name="generator" content="GTK-Doc V1.25 (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="shaping-concepts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="text-runs.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="graphite-shaping.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="opentype-shaping-models"></a>OpenType shaping models</h2></div></div></div>
+<p>
+ OpenType provides shaping models for the following scripts:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ The <span class="emphasis"><em>default</em></span> shaping model handles all
+ non-complex scripts, and may also be used as a fallback for
+ handling unrecognized scripts.
+ </p></li>
+<li class="listitem">
+<p>
+ The <span class="emphasis"><em>Indic</em></span> shaping model handles the Indic
+ scripts Bengali, Devanagari, Gujarati, Gurmukhi, Kannada,
+ Malayalam, Oriya, Tamil, Telugu, and Sinhala.
+ </p>
+<p>
+ The Indic shaping model was revised significantly in
+ 2005. To denote the change, a new set of <span class="emphasis"><em>script
+ tags</em></span> was assigned for Bengali, Devanagari,
+ Gujarati, Gurmukhi, Kannada, Malayalam, Oriya, Tamil, and
+ Telugu. For the sake of clarity, the term "Indic2" is
+ sometimes used to refer to the current, revised shaping
+ model.
+ </p>
+</li>
+<li class="listitem"><p>
+ The <span class="emphasis"><em>Arabic</em></span> shaping model supports
+ Arabic, Mongolian, N'Ko, Syriac, and several other connected
+ or cursive scripts.
+ </p></li>
+<li class="listitem"><p>
+ The <span class="emphasis"><em>Thai/Lao</em></span> shaping model supports
+ the Thai and Lao scripts.
+ </p></li>
+<li class="listitem"><p>
+ The <span class="emphasis"><em>Khmer</em></span> shaping model supports the
+ Khmer script.
+ </p></li>
+<li class="listitem"><p>
+ The <span class="emphasis"><em>Myanmar</em></span> shaping model supports the
+ Myanmar (or Burmese) script.
+ </p></li>
+<li class="listitem"><p>
+ The <span class="emphasis"><em>Tibetan</em></span> shaping model supports the
+ Tibetan script.
+ </p></li>
+<li class="listitem"><p>
+ The <span class="emphasis"><em>Hangul</em></span> shaping model supports the
+ Hangul script.
+ </p></li>
+<li class="listitem"><p>
+ The <span class="emphasis"><em>Hebrew</em></span> shaping model supports the
+ Hebrew script.
+ </p></li>
+<li class="listitem"><p>
+ The <span class="emphasis"><em>Universal Shaping Engine</em></span> (USE)
+ shaping model supports complex scripts not covered by one of
+ the above, script-specific shaping models, including
+ Javanese, Balinese, Buginese, Batak, Chakma, Lepcha, Modi,
+ Phags-pa, Tagalog, Siddham, Sundanese, Tai Le, Tai Tham, Tai
+ Viet, and many others.
+ </p></li>
+<li class="listitem"><p>
+ Text runs that do not fall under one of the above shaping
+ models may still require processing by a shaping engine. Of
+ particular note is <span class="emphasis"><em>Emoji</em></span> shaping, which
+ may involve variation-selector sequences and glyph
+ substitution. Emoji shaping is handled by the default
+ shaping model.
+ </p></li>
+</ul></div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/plans-and-caching.html b/docs/html/plans-and-caching.html
index 89a9f35..5d81872 100644
--- a/docs/html/plans-and-caching.html
+++ b/docs/html/plans-and-caching.html
@@ -8,7 +8,7 @@
<link rel="up" href="shaping-and-shape-plans.html" title="Shaping and shape plans">
<link rel="prev" href="shaping-and-shape-plans.html" title="Shaping and shape plans">
<link rel="next" href="pt02.html" title="Part II. Reference manual">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -26,6 +26,6 @@
</p>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/pt01.html b/docs/html/pt01.html
index 5cc9f2c..2aee80e 100644
--- a/docs/html/pt01.html
+++ b/docs/html/pt01.html
@@ -8,7 +8,7 @@
<link rel="up" href="index.html" title="HarfBuzz Manual">
<link rel="prev" href="index.html" title="HarfBuzz Manual">
<link rel="next" href="what-is-harfbuzz.html" title="What is HarfBuzz?">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -27,16 +27,40 @@
<dl class="toc">
<dt><span class="chapter"><a href="what-is-harfbuzz.html">What is HarfBuzz?</a></span></dt>
<dd><dl>
-<dt><span class="section"><a href="what-is-harfbuzz.html#why-do-i-need-it">Why do I need it?</a></span></dt>
+<dt><span class="section"><a href="what-is-harfbuzz.html#what-is-text-shaping">What is text shaping?</a></span></dt>
+<dt><span class="section"><a href="why-do-i-need-a-shaping-engine.html">Why do I need a shaping engine?</a></span></dt>
+<dt><span class="section"><a href="ch01s03.html">What does HarfBuzz do?</a></span></dt>
+<dt><span class="section"><a href="what-harfbuzz-doesnt-do.html">What HarfBuzz doesn't do</a></span></dt>
<dt><span class="section"><a href="why-is-it-called-harfbuzz.html">Why is it called HarfBuzz?</a></span></dt>
</dl></dd>
-<dt><span class="chapter"><a href="install-harfbuzz.html">Install HarfBuzz</a></span></dt>
+<dt><span class="chapter"><a href="install-harfbuzz.html">Installing HarfBuzz</a></span></dt>
<dd><dl>
-<dt><span class="section"><a href="install-harfbuzz.html#download">Download</a></span></dt>
-<dt><span class="section"><a href="building.html">Building</a></span></dt>
+<dt><span class="section"><a href="install-harfbuzz.html#download">Downloading HarfBuzz</a></span></dt>
+<dt><span class="section"><a href="building.html">Building HarfBuzz</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="building.html#building.linux">Building on Linux</a></span></dt>
+<dt><span class="section"><a href="building.html#building.windows">Building on Windows</a></span></dt>
+<dt><span class="section"><a href="building.html#building.macos">Building on macOS</a></span></dt>
+<dt><span class="section"><a href="building.html#configuration">Configuration options</a></span></dt>
+</dl></dd>
+</dl></dd>
+<dt><span class="chapter"><a href="getting-started.html">Getting started with HarfBuzz</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="getting-started.html#id-1.2.4.2">An overview of the HarfBuzz shaping API</a></span></dt>
+<dt><span class="section"><a href="ch03s02.html">Terminology</a></span></dt>
+<dt><span class="section"><a href="ch03s03.html">A simple shaping example</a></span></dt>
+</dl></dd>
+<dt><span class="chapter"><a href="shaping-concepts.html">Shaping concepts</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="shaping-concepts.html#text-shaping-concepts">Text shaping</a></span></dt>
+<dt><span class="section"><a href="complex-scripts.html">Complex scripts</a></span></dt>
+<dt><span class="section"><a href="shaping-operations.html">Shaping operations</a></span></dt>
+<dt><span class="section"><a href="unicode-character-categories.html">Unicode character categories</a></span></dt>
+<dt><span class="section"><a href="text-runs.html">Text runs</a></span></dt>
+<dt><span class="section"><a href="opentype-shaping-models.html">OpenType shaping models</a></span></dt>
+<dt><span class="section"><a href="graphite-shaping.html">Graphite shaping</a></span></dt>
+<dt><span class="section"><a href="aat-shaping.html">AAT shaping</a></span></dt>
</dl></dd>
-<dt><span class="chapter"><a href="hello-harfbuzz.html">Hello, HarfBuzz</a></span></dt>
-<dd><dl><dt><span class="section"><a href="hello-harfbuzz.html#what-harfbuzz-doesnt-do">What HarfBuzz doesn't do</a></span></dt></dl></dd>
<dt><span class="chapter"><a href="buffers-language-script-and-direction.html">Buffers, language, script and direction</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="buffers-language-script-and-direction.html#creating-and-destroying-buffers">Creating and destroying buffers</a></span></dt>
@@ -51,16 +75,18 @@
<dt><span class="section"><a href="using-harfbuzzs-native-opentype-implementation.html">Using HarfBuzz's native OpenType implementation</a></span></dt>
<dt><span class="section"><a href="using-your-own-font-functions.html">Using your own font functions</a></span></dt>
</dl></dd>
-<dt><span class="chapter"><a href="clusters.html"></a></span></dt>
+<dt><span class="chapter"><a href="clusters.html">Clusters</a></span></dt>
<dd><dl>
-<dt><span class="sect1"><a href="clusters.html#clusters">Clusters</a></span></dt>
-<dt><span class="sect1"><a href="a-clustering-example-for-levels-0-and-1.html">A clustering example for levels 0 and 1</a></span></dt>
-<dt><span class="sect1"><a href="reordering-in-levels-0-and-1.html">Reordering in levels 0 and 1</a></span></dt>
-<dt><span class="sect1"><a href="the-distinction-between-levels-0-and-1.html">The distinction between levels 0 and 1</a></span></dt>
-<dt><span class="sect1"><a href="level-2.html">Level 2</a></span></dt>
+<dt><span class="section"><a href="clusters.html#clusters-and-shaping">Clusters and shaping</a></span></dt>
+<dt><span class="section"><a href="working-with-harfbuzz-clusters.html">Working with HarfBuzz clusters</a></span></dt>
+<dt><span class="section"><a href="a-clustering-example-for-levels-0-and-1.html">A clustering example for levels 0 and 1</a></span></dt>
+<dt><span class="section"><a href="reordering-in-levels-0-and-1.html">Reordering in levels 0 and 1</a></span></dt>
+<dt><span class="section"><a href="the-distinction-between-levels-0-and-1.html">The distinction between levels 0 and 1</a></span></dt>
+<dt><span class="section"><a href="level-2.html">Level 2</a></span></dt>
<dd><dl>
-<dt><span class="sect2"><a href="level-2.html#ligatures-with-combining-marks">Ligatures with combining marks</a></span></dt>
-<dt><span class="sect2"><a href="level-2.html#reordering">Reordering</a></span></dt>
+<dt><span class="section"><a href="level-2.html#ligatures-with-combining-marks-in-level-2">Ligatures with combining marks in level 2</a></span></dt>
+<dt><span class="section"><a href="level-2.html#reordering-in-level-2">Reordering in level 2</a></span></dt>
+<dt><span class="section"><a href="level-2.html#other-considerations-in-level-2">Other considerations in level 2</a></span></dt>
</dl></dd>
</dl></dd>
<dt><span class="chapter"><a href="shaping-and-shape-plans.html">Shaping and shape plans</a></span></dt>
@@ -82,6 +108,6 @@
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/pt02.html b/docs/html/pt02.html
index ac7201f..2dd2ac9 100644
--- a/docs/html/pt02.html
+++ b/docs/html/pt02.html
@@ -7,8 +7,8 @@
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="index.html" title="HarfBuzz Manual">
<link rel="prev" href="plans-and-caching.html" title="Plans and caching">
-<link rel="next" href="ch08.html" title="HarfBuzz API">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="next" href="ch09.html" title="Core API">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -17,14 +17,14 @@
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
<td><a accesskey="p" href="plans-and-caching.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="ch08.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="ch09.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="part">
<div class="titlepage"><div>
<div><h1 class="title">
<a name="id-1.3"></a>Part II. Reference manual</h1></div>
<div><p class="releaseinfo">
- This document is for HarfBuzz 1.8.1
+ This document is for HarfBuzz 2.3.1
.
</p></div>
@@ -32,116 +32,165 @@
<div class="toc">
<p><b>Table of Contents</b></p>
<dl class="toc">
-<dt><span class="chapter"><a href="ch08.html">HarfBuzz API</a></span></dt>
+<dt><span class="chapter"><a href="ch09.html">Core API</a></span></dt>
<dd><dl>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb.html">hb</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-blob.html">hb-blob</a></span><span class="refpurpose"> — Binary data containers</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-common.html">hb-common</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-buffer.html">hb-buffer</a></span><span class="refpurpose"> — Input and output buffers</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-unicode.html">hb-unicode</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-common.html">hb-common</a></span><span class="refpurpose"> — Common data types</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-Buffers.html">Buffers</a></span><span class="refpurpose"> — Input and output buffers</span>
+<span class="refentrytitle"><a href="harfbuzz-hb-deprecated.html">hb-deprecated</a></span><span class="refpurpose"> — Deprecated API</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-blob.html">hb-blob</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-face.html">hb-face</a></span><span class="refpurpose"> — Font face objects</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-face.html">hb-face</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-font.html">hb-font</a></span><span class="refpurpose"> — Font objects</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-font.html">hb-font</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-map.html">hb-map</a></span><span class="refpurpose"> — Object representing integer to integer mapping</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-Shaping.html">Shaping</a></span><span class="refpurpose"> — Conversion of text strings into positioned glyphs</span>
+<span class="refentrytitle"><a href="harfbuzz-hb-set.html">hb-set</a></span><span class="refpurpose"> — Object representing a set of integers</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-version.html">hb-version</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-shape-plan.html">hb-shape-plan</a></span><span class="refpurpose"> — Object representing a shaping plan</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-deprecated.html">hb-deprecated</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-shape.html">hb-shape</a></span><span class="refpurpose"> — Conversion of text strings into positioned glyphs</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-set.html">hb-set</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-unicode.html">hb-unicode</a></span><span class="refpurpose"> — Unicode character property access</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot.html">hb-ot</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-version.html">hb-version</a></span><span class="refpurpose"> — Information about the version of HarfBuzz in use</span>
</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="ch10.html">OpenType API</a></span></dt>
+<dd><dl>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-layout.html">hb-ot-layout</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-color.html">hb-ot-color</a></span><span class="refpurpose"> — OpenType Color Fonts</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-tag.html">hb-ot-tag</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-font.html">hb-ot-font</a></span><span class="refpurpose"> — OpenType font implementation</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-font.html">hb-ot-font</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-layout.html">hb-ot-layout</a></span><span class="refpurpose"> — OpenType Layout</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-shape.html">hb-ot-shape</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-math.html">hb-ot-math</a></span><span class="refpurpose"> — OpenType Math information</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ot-math.html">hb-ot-math</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-name.html">hb-ot-name</a></span><span class="refpurpose"> — OpenType font name information</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-shape-plan.html">hb-shape-plan</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-shape.html">hb-ot-shape</a></span><span class="refpurpose"> — OpenType shaping support</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-glib.html">hb-glib</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-ot-var.html">hb-ot-var</a></span><span class="refpurpose"> — OpenType Font Variations</span>
</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="ch11.html">Apple Advanced Typography API</a></span></dt>
+<dd><dl><dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-aat-layout.html">hb-aat-layout</a></span><span class="refpurpose"> — Apple Advanced Typography Layout</span>
+</dt></dl></dd>
+<dt><span class="chapter"><a href="ch12.html">Integration API</a></span></dt>
+<dd><dl>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-icu.html">hb-icu</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-coretext.html">hb-coretext</a></span><span class="refpurpose"> — CoreText integration</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-ft.html">hb-ft</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-ft.html">hb-ft</a></span><span class="refpurpose"> — FreeType integration</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-graphite2.html">hb-graphite2</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-glib.html">hb-glib</a></span><span class="refpurpose"> — GLib integration</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-uniscribe.html">hb-uniscribe</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-gobject.html">hb-gobject</a></span><span class="refpurpose"> — GObject integration</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-coretext.html">hb-coretext</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-graphite2.html">hb-graphite2</a></span><span class="refpurpose"> — Graphite2 integration</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="harfbuzz-hb-gobject.html">hb-gobject</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="harfbuzz-hb-icu.html">hb-icu</a></span><span class="refpurpose"> — ICU integration</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="harfbuzz-hb-uniscribe.html">hb-uniscribe</a></span><span class="refpurpose"> — Windows integration</span>
</dt>
</dl></dd>
-<dt><span class="chapter"><a href="object-tree.html">Object Hierarchy</a></span></dt>
<dt><span class="index"><a href="api-index-full.html">API Index</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-2.html">Index of new symbols in 0.9.2</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-5.html">Index of new symbols in 0.9.5</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-7.html">Index of new symbols in 0.9.7</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-8.html">Index of new symbols in 0.9.8</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-10.html">Index of new symbols in 0.9.10</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-11.html">Index of new symbols in 0.9.11</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-20.html">Index of new symbols in 0.9.20</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-22.html">Index of new symbols in 0.9.22</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-28.html">Index of new symbols in 0.9.28</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-30.html">Index of new symbols in 0.9.30</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-31.html">Index of new symbols in 0.9.31</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-38.html">Index of new symbols in 0.9.38</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-39.html">Index of new symbols in 0.9.39</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-41.html">Index of new symbols in 0.9.41</a></span></dt>
-<dt><span class="index"><a href="api-index-0-9-42.html">Index of new symbols in 0.9.42</a></span></dt>
-<dt><span class="index"><a href="api-index-1-0-5.html">Index of new symbols in 1.0.5</a></span></dt>
-<dt><span class="index"><a href="api-index-1-1-2.html">Index of new symbols in 1.1.2</a></span></dt>
-<dt><span class="index"><a href="api-index-1-1-3.html">Index of new symbols in 1.1.3</a></span></dt>
-<dt><span class="index"><a href="api-index-1-2-3.html">Index of new symbols in 1.2.3</a></span></dt>
-<dt><span class="index"><a href="api-index-1-3-3.html">Index of new symbols in 1.3.3</a></span></dt>
-<dt><span class="index"><a href="api-index-1-4-2.html">Index of new symbols in 1.4.2</a></span></dt>
-<dt><span class="index"><a href="api-index-1-4-3.html">Index of new symbols in 1.4.3</a></span></dt>
-<dt><span class="index"><a href="api-index-1-5-0.html">Index of new symbols in 1.5.0</a></span></dt>
-<dt><span class="index"><a href="api-index-1-6-0.html">Index of new symbols in 1.6.0</a></span></dt>
<dt><span class="index"><a href="deprecated-api-index.html">Index of deprecated API</a></span></dt>
+<dt><span class="index"><a href="api-index-2-1-0.html">Index of new symbols in 2.1.0</a></span></dt>
+<dt><span class="index"><a href="api-index-2-0-0.html">Index of new symbols in 2.0.0</a></span></dt>
+<dt><span class="index"><a href="api-index-1-9-0.html">Index of new symbols in 1.9.0</a></span></dt>
+<dt><span class="index"><a href="api-index-1-8-6.html">Index of new symbols in 1.8.6</a></span></dt>
+<dt><span class="index"><a href="api-index-1-8-5.html">Index of new symbols in 1.8.5</a></span></dt>
+<dt><span class="index"><a href="api-index-1-8-1.html">Index of new symbols in 1.8.1</a></span></dt>
+<dt><span class="index"><a href="api-index-1-8-0.html">Index of new symbols in 1.8.0</a></span></dt>
+<dt><span class="index"><a href="api-index-1-7-7.html">Index of new symbols in 1.7.7</a></span></dt>
+<dt><span class="index"><a href="api-index-1-7-5.html">Index of new symbols in 1.7.5</a></span></dt>
+<dt><span class="index"><a href="api-index-1-6-0.html">Index of new symbols in 1.6.0</a></span></dt>
+<dt><span class="index"><a href="api-index-1-5-0.html">Index of new symbols in 1.5.0</a></span></dt>
+<dt><span class="index"><a href="api-index-1-4-3.html">Index of new symbols in 1.4.3</a></span></dt>
+<dt><span class="index"><a href="api-index-1-4-2.html">Index of new symbols in 1.4.2</a></span></dt>
+<dt><span class="index"><a href="api-index-1-4-0.html">Index of new symbols in 1.4.0</a></span></dt>
+<dt><span class="index"><a href="api-index-1-3-3.html">Index of new symbols in 1.3.3</a></span></dt>
+<dt><span class="index"><a href="api-index-1-2-3.html">Index of new symbols in 1.2.3</a></span></dt>
+<dt><span class="index"><a href="api-index-1-1-3.html">Index of new symbols in 1.1.3</a></span></dt>
+<dt><span class="index"><a href="api-index-1-1-2.html">Index of new symbols in 1.1.2</a></span></dt>
+<dt><span class="index"><a href="api-index-1-0-5.html">Index of new symbols in 1.0.5</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-42.html">Index of new symbols in 0.9.42</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-41.html">Index of new symbols in 0.9.41</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-39.html">Index of new symbols in 0.9.39</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-38.html">Index of new symbols in 0.9.38</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-31.html">Index of new symbols in 0.9.31</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-30.html">Index of new symbols in 0.9.30</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-28.html">Index of new symbols in 0.9.28</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-22.html">Index of new symbols in 0.9.22</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-20.html">Index of new symbols in 0.9.20</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-11.html">Index of new symbols in 0.9.11</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-10.html">Index of new symbols in 0.9.10</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-8.html">Index of new symbols in 0.9.8</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-7.html">Index of new symbols in 0.9.7</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-5.html">Index of new symbols in 0.9.5</a></span></dt>
+<dt><span class="index"><a href="api-index-0-9-2.html">Index of new symbols in 0.9.2</a></span></dt>
<dt><span class="glossary"><a href="annotation-glossary.html">Annotation Glossary</a></span></dt>
</dl>
</div>
+<div class="note">
+<p>
+ The current HarfBuzz codebase is versioned 2.x.x and is stable
+ and under active maintenance. This is what is used in latest
+ versions of Firefox, GNOME, ChromeOS, Chrome, LibreOffice,
+ XeTeX, Android, and KDE, among other places.
+ </p>
+<p>
+ Prior to 2012, the original HarfBuzz codebase (which, these
+ days, is referred to as <span class="emphasis"><em>harfbuzz-old</em></span>) was
+ derived from code in <a class="ulink" href="http://freetype.org/" target="_top">FreeType</a>, <a class="ulink" href="http://pango.org/" target="_top">Pango</a>, and
+ <a class="ulink" href="http://qt-project.org/" target="_top">Qt</a>.
+ It is <span class="emphasis"><em>not</em></span> actively developed or
+ maintained, and is extremely buggy. All users of harfbuzz-old
+ are encouraged to switch over to the new HarfBuzz as soon as possible.
+ </p>
+<p>
+ To make this distinction clearer in discussions, the current
+ HarfBuzz codebase is sometimes referred to as
+ <span class="emphasis"><em>harfbuzz-ng</em></span>.
+ </p>
+<p>
+ For reference purposes, the harfbuzz-old source tree is archived
+ <a class="ulink" href="http://cgit.freedesktop.org/harfbuzz.old/" target="_top">here</a>. There
+ are no release tarballs of harfbuzz-old whatsoever.
+ </p>
+</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/reordering-in-levels-0-and-1.html b/docs/html/reordering-in-levels-0-and-1.html
index 9b0a47e..2a390b7 100644
--- a/docs/html/reordering-in-levels-0-and-1.html
+++ b/docs/html/reordering-in-levels-0-and-1.html
@@ -5,10 +5,10 @@
<title>Reordering in levels 0 and 1: 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="clusters.html" title="">
+<link rel="up" href="clusters.html" title="Clusters">
<link rel="prev" href="a-clustering-example-for-levels-0-and-1.html" title="A clustering example for levels 0 and 1">
<link rel="next" href="the-distinction-between-levels-0-and-1.html" title="The distinction between levels 0 and 1">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,35 +19,46 @@
<td><a accesskey="p" href="a-clustering-example-for-levels-0-and-1.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="the-distinction-between-levels-0-and-1.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="sect1">
+<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="reordering-in-levels-0-and-1"></a>Reordering in levels 0 and 1</h2></div></div></div>
<p>
- Another common operation in the more complex shapers is when things
- reorder. In those cases, to maintain monotone clusters, HB merges
- the clusters of everything in the reordering sequence. For example,
- let's again start with the character sequence:
- </p>
+ Another common operation in the more complex shapers is glyph
+ reordering. In order to maintain a monotonic cluster sequence
+ when glyph reordering takes place, HarfBuzz merges the clusters
+ of everything in the reordering sequence.
+ </p>
+<p>
+ For example, let us again start with the character sequence (top
+ row) and initial cluster values (bottom row):
+ </p>
<pre class="programlisting">
- A,B,C,D,E
- 0,1,2,3,4
-</pre>
+ A,B,C,D,E
+ 0,1,2,3,4
+ </pre>
<p>
- If <code class="literal">D</code> is reordered before <code class="literal">B</code>,
- then the <code class="literal">B</code>, <code class="literal">C</code>, and
- <code class="literal">D</code> clusters merge, and we get:
- </p>
+ If <code class="literal">D</code> is reordered to the position immediately
+ before <code class="literal">B</code>, then HarfBuzz merges the
+ <code class="literal">B</code>, <code class="literal">C</code>, and
+ <code class="literal">D</code> clusters — all the clusters between
+ the final position of the reordered glyph and its original
+ position. This means that we get:
+ </p>
<pre class="programlisting">
- A,D,B,C,E
- 0,1,1,1,4
-</pre>
+ A,D,B,C,E
+ 0,1,1,1,4
+ </pre>
+<p>
+ as the final cluster sequence.
+ </p>
<p>
- This is clearly not ideal, but it is the only sensible way to
- maintain monotone indices and retain the true relationship between
- glyphs and characters.
- </p>
+ Merging this many clusters is not ideal, but it is the only
+ sensible way for HarfBuzz to maintain the guarantee that the
+ sequence of cluster values remains monotonic and to retain the
+ true relationship between glyphs and characters.
+ </p>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/right-insensitive.png b/docs/html/right-insensitive.png
index 4c95785..c1efa27 100644
--- a/docs/html/right-insensitive.png
+++ b/docs/html/right-insensitive.png
Binary files differ
diff --git a/docs/html/right.png b/docs/html/right.png
index 76260ec..83361a6 100644
--- a/docs/html/right.png
+++ b/docs/html/right.png
Binary files differ
diff --git a/docs/html/setting-buffer-properties.html b/docs/html/setting-buffer-properties.html
index ecc07ee..266dfd7 100644
--- a/docs/html/setting-buffer-properties.html
+++ b/docs/html/setting-buffer-properties.html
@@ -8,7 +8,7 @@
<link rel="up" href="buffers-language-script-and-direction.html" title="Buffers, language, script and direction">
<link rel="prev" href="adding-text-to-the-buffer.html" title="Adding text to the buffer">
<link rel="next" href="what-about-the-other-scripts.html" title="What about the other scripts?">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -26,6 +26,6 @@
</p>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/shaping-and-shape-plans.html b/docs/html/shaping-and-shape-plans.html
index c3e2029..4aacb0f 100644
--- a/docs/html/shaping-and-shape-plans.html
+++ b/docs/html/shaping-and-shape-plans.html
@@ -8,7 +8,7 @@
<link rel="up" href="pt01.html" title="Part I. User's manual">
<link rel="prev" href="level-2.html" title="Level 2">
<link rel="next" href="plans-and-caching.html" title="Plans and caching">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -34,6 +34,6 @@
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/shaping-concepts.html b/docs/html/shaping-concepts.html
new file mode 100644
index 0000000..bfa6a41
--- /dev/null
+++ b/docs/html/shaping-concepts.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Shaping concepts: HarfBuzz Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="HarfBuzz Manual">
+<link rel="up" href="pt01.html" title="Part I. User's manual">
+<link rel="prev" href="ch03s03.html" title="A simple shaping example">
+<link rel="next" href="complex-scripts.html" title="Complex scripts">
+<meta name="generator" content="GTK-Doc V1.25 (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="ch03s03.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="complex-scripts.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="shaping-concepts"></a>Shaping concepts</h2></div></div></div>
+<div class="toc"><dl class="toc">
+<dt><span class="section"><a href="shaping-concepts.html#text-shaping-concepts">Text shaping</a></span></dt>
+<dt><span class="section"><a href="complex-scripts.html">Complex scripts</a></span></dt>
+<dt><span class="section"><a href="shaping-operations.html">Shaping operations</a></span></dt>
+<dt><span class="section"><a href="unicode-character-categories.html">Unicode character categories</a></span></dt>
+<dt><span class="section"><a href="text-runs.html">Text runs</a></span></dt>
+<dt><span class="section"><a href="opentype-shaping-models.html">OpenType shaping models</a></span></dt>
+<dt><span class="section"><a href="graphite-shaping.html">Graphite shaping</a></span></dt>
+<dt><span class="section"><a href="aat-shaping.html">AAT shaping</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="text-shaping-concepts"></a>Text shaping</h2></div></div></div>
+<p>
+ Text shaping is the process of transforming a sequence of Unicode
+ codepoints that represent individual characters (letters,
+ diacritics, tone marks, numbers, symbols, etc.) into the
+ orthographically and linguistically correct two-dimensional layout
+ of glyph shapes taken from a specified font.
+ </p>
+<p>
+ For some writing systems (or <span class="emphasis"><em>scripts</em></span>) and
+ languages, the process is simple, requiring the shaper to do
+ little more than advance the horizontal position forward by the
+ correct amount for each successive glyph.
+ </p>
+<p>
+ But, for <span class="emphasis"><em>complex scripts</em></span>, any combination of
+ several shaping operations may be required, and the rules for how
+ and when they are applied vary from script to script. HarfBuzz and
+ other shaping engines implement these rules.
+ </p>
+<p>
+ The exact rules and necessary operations for a particular script
+ constitute a shaping <span class="emphasis"><em>model</em></span>. OpenType
+ specifies a set of shaping models that covers all of
+ Unicode. Other shaping models are available, however, including
+ Graphite and Apple Advanced Typography (AAT).
+ </p>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/shaping-operations.html b/docs/html/shaping-operations.html
new file mode 100644
index 0000000..9e6ff5e
--- /dev/null
+++ b/docs/html/shaping-operations.html
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Shaping operations: 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="shaping-concepts.html" title="Shaping concepts">
+<link rel="prev" href="complex-scripts.html" title="Complex scripts">
+<link rel="next" href="unicode-character-categories.html" title="Unicode character categories">
+<meta name="generator" content="GTK-Doc V1.25 (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="shaping-concepts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="complex-scripts.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="unicode-character-categories.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="shaping-operations"></a>Shaping operations</h2></div></div></div>
+<p>
+ Shaping a complex-script text run involves transforming the
+ input sequence of Unicode codepoints with some combination of
+ operations that is specified in the shaping model for the
+ script.
+ </p>
+<p>
+ The specific conditions that trigger a given operation for a
+ text run varies from script to script, as do the order that the
+ operations are performed in and which codepoints are
+ affected. However, the same general set of shaping operations is
+ common to all of the complex-script shaping models.
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+<p>
+ A <span class="emphasis"><em>reordering</em></span> operation moves a glyph
+ from its original ("logical") position in the sequence to
+ some other ("visual") position.
+ </p>
+<p>
+ The shaping model for a given complex script might involve
+ more than one reordering step.
+ </p>
+</li>
+<li class="listitem"><p>
+ A <span class="emphasis"><em>joining</em></span> operation replaces a glyph
+ with an alternate form that is designed to connect with one
+ or more of the adjacent glyphs in the sequence.
+ </p></li>
+<li class="listitem">
+<p>
+ A contextual <span class="emphasis"><em>substitution</em></span> operation
+ replaces either a single glyph or a subsequence of several
+ glyphs with an alternate glyph. This substitution is
+ performed when the original glyph or subsequence of glyphs
+ occurs in a specified position with respect to the
+ surrounding sequence. For example, one substitution might be
+ performed only when the target glyph is the first glyph in
+ the sequence, while another substitution is performed only
+ when a different target glyph occurs immediately after a
+ particular string pattern.
+ </p>
+<p>
+ The shaping model for a given complex script might involve
+ multiple contextual-substitution operations, each applying
+ to different target glyphs and patterns, and which are
+ performed in separate steps.
+ </p>
+</li>
+<li class="listitem">
+<p>
+ A contextual <span class="emphasis"><em>positioning</em></span> operation
+ moves the horizontal and/or vertical position of a
+ glyph. This positioning move is performed when the glyph
+ occurs in a specified position with respect to the
+ surrounding sequence.
+ </p>
+<p>
+ Many contextual positioning operations are used to place
+ <span class="emphasis"><em>mark</em></span> glyphs (such as diacritics, vowel
+ signs, and tone markers) with respect to
+ <span class="emphasis"><em>base</em></span> glyphs. However, some complex
+ scripts may use contextual positioning operations to
+ correctly place base glyphs as well, such as
+ when the script uses <span class="emphasis"><em>stacking</em></span> characters.
+ </p>
+</li>
+</ul></div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/style.css b/docs/html/style.css
index 4be4ede..3675420 100644
--- a/docs/html/style.css
+++ b/docs/html/style.css
@@ -30,10 +30,6 @@ body
vertical-align: top;
}
-span.nowrap {
- white-space: nowrap;
-}
-
div.gallery-float
{
float: left;
diff --git a/docs/html/text-runs.html b/docs/html/text-runs.html
new file mode 100644
index 0000000..26804d3
--- /dev/null
+++ b/docs/html/text-runs.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Text runs: 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="shaping-concepts.html" title="Shaping concepts">
+<link rel="prev" href="unicode-character-categories.html" title="Unicode character categories">
+<link rel="next" href="opentype-shaping-models.html" title="OpenType shaping models">
+<meta name="generator" content="GTK-Doc V1.25 (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="shaping-concepts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="unicode-character-categories.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="opentype-shaping-models.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="text-runs"></a>Text runs</h2></div></div></div>
+<p>
+ Real-world text usually contains codepoints from a mixture of
+ different Unicode scripts (including punctuation, numbers, symbols,
+ white-space characters, and other codepoints that do not belong
+ to any script). Real-world text may also be marked up with
+ formatting that changes font properties (including the font,
+ font style, and font size).
+ </p>
+<p>
+ For shaping purposes, all real-world text streams must be first
+ segmented into runs that have a uniform set of properties.
+ </p>
+<p>
+ In particular, shaping models always assume that every codepoint
+ in a text run has the same <span class="emphasis"><em>direction</em></span>,
+ <span class="emphasis"><em>script</em></span> tag, and
+ <span class="emphasis"><em>language</em></span> tag.
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/the-distinction-between-levels-0-and-1.html b/docs/html/the-distinction-between-levels-0-and-1.html
index 0365f01..cbb7afe 100644
--- a/docs/html/the-distinction-between-levels-0-and-1.html
+++ b/docs/html/the-distinction-between-levels-0-and-1.html
@@ -5,10 +5,10 @@
<title>The distinction between levels 0 and 1: 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="clusters.html" title="">
+<link rel="up" href="clusters.html" title="Clusters">
<link rel="prev" href="reordering-in-levels-0-and-1.html" title="Reordering in levels 0 and 1">
<link rel="next" href="level-2.html" title="Level 2">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -19,63 +19,88 @@
<td><a accesskey="p" href="reordering-in-levels-0-and-1.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="level-2.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
-<div class="sect1">
+<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="the-distinction-between-levels-0-and-1"></a>The distinction between levels 0 and 1</h2></div></div></div>
<p>
- So, the above is pretty much what cluster levels 0 and 1 do. The
- only difference between the two is this: in level 0, at the very
- beginning of the shaping process, we also merge clusters between
- base characters and all Unicode marks (combining or not) following
- them. E.g.:
- </p>
+ The preceding examples demonstrate the main effects of using
+ cluster levels 0 and 1. The only difference between the two
+ levels is this: in level 0, at the very beginning of the shaping
+ process, HarfBuzz merges the cluster of each base character
+ with the clusters of all Unicode marks (combining or not) and
+ modifiers that follow it.
+ </p>
+<p>
+ For example, let us start with the following character sequence
+ (top row) and accompanying initial cluster values (bottom row):
+ </p>
<pre class="programlisting">
- A,acute,B
- 0,1 ,2
-</pre>
+ A,acute,B
+ 0,1 ,2
+ </pre>
<p>
- will become:
- </p>
+ The <code class="literal">acute</code> is a Unicode mark. If HarfBuzz is
+ using cluster level 0 on this sequence, then the
+ <code class="literal">A</code> and <code class="literal">acute</code> clusters will
+ merge, and the result will become:
+ </p>
<pre class="programlisting">
- A,acute,B
- 0,0 ,2
-</pre>
+ A,acute,B
+ 0,0 ,2
+ </pre>
+<p>
+ This merger is performed before any other script-shaping
+ steps.
+ </p>
+<p>
+ This initial cluster merging is the default behavior of the
+ Windows shaping engine, and the old HarfBuzz codebase copied
+ that behavior to maintain compatibility. Consequently, it has
+ remained the default behavior in the new HarfBuzz codebase.
+ </p>
+<p>
+ But this initial cluster-merging behavior makes it impossible
+ client programs to implement some features (such as to
+ color diacritic marks differently from their base
+ characters). That is why, in level 1, HarfBuzz does not perform
+ the initial merging step.
+ </p>
<p>
- This is the default behavior. We do it because Windows did it and
- old HarfBuzz did it, so this remained the default. But this behavior
- makes it impossible to color diacritic marks differently from their
- base characters. That's why in level 1 we do not perform this
- initial merging step.
- </p>
+ For client programs that rely on HarfBuzz cluster values to
+ perform cursor positioning, level 0 is more convenient. But
+ relying on cluster boundaries for cursor positioning is wrong: cursor
+ positions should be determined based on Unicode grapheme
+ boundaries, not on shaping-cluster boundaries. As such, using
+ level 1 clustering behavior is recommended.
+ </p>
<p>
- For clients, level 0 is more convenient if they rely on HarfBuzz
- clusters for cursor positioning. But that's wrong anyway: cursor
- positions should be determined based on Unicode grapheme boundaries,
- NOT shaping clusters. As such, level 1 clusters are preferred.
- </p>
+ One final facet of levels 0 and 1 is worth noting. HarfBuzz
+ currently does not allow any
+ <span class="emphasis"><em>multiple-substitution</em></span> GSUB lookups to
+ replace a glyph with zero glyphs (in other words, to delete a
+ glyph).
+ </p>
<p>
- One last note about levels 0 and 1. We currently don't allow a
- <code class="literal">MultipleSubst</code> lookup to replace a glyph with zero
- glyphs (i.e., to delete a glyph). But in some other situations,
- glyphs can be deleted. In those cases, if the glyph being deleted is
- the last glyph of its cluster, we make sure to merge the cluster
- with a neighboring cluster.
- </p>
+ But, in some other situations, glyphs can be deleted. In
+ those cases, if the glyph being deleted is the last glyph of its
+ cluster, HarfBuzz makes sure to merge the deleted glyph's
+ cluster with a neighboring cluster.
+ </p>
<p>
- This is, primarily, to make sure that the starting cluster of the
- text always has the cluster index pointing to the start of the text
- for the run; more than one client currently relies on this
- guarantee.
- </p>
+ This is done primarily to make sure that the starting cluster of the
+ text always has the cluster index pointing to the start of the text
+ for the run; more than one client program currently relies on this
+ guarantee.
+ </p>
<p>
- Incidentally, Apple's CoreText does something else to maintain the
- same promise: it inserts a glyph with id 65535 at the beginning of
- the glyph string if the glyph corresponding to the first character
- in the run was deleted. HarfBuzz might do something similar in the
- future.
- </p>
+ Incidentally, Apple's CoreText does something different to
+ maintain the same promise: it inserts a glyph with id 65535 at
+ the beginning of the glyph string if the glyph corresponding to
+ the first character in the run was deleted. HarfBuzz might do
+ something similar in the future.
+ </p>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/unicode-character-categories.html b/docs/html/unicode-character-categories.html
new file mode 100644
index 0000000..2b97961
--- /dev/null
+++ b/docs/html/unicode-character-categories.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Unicode character categories: 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="shaping-concepts.html" title="Shaping concepts">
+<link rel="prev" href="shaping-operations.html" title="Shaping operations">
+<link rel="next" href="text-runs.html" title="Text runs">
+<meta name="generator" content="GTK-Doc V1.25 (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="shaping-concepts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="shaping-operations.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="text-runs.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="unicode-character-categories"></a>Unicode character categories</h2></div></div></div>
+<p>
+ Shaping models are typically specified with respect to how
+ scripts are defined in the Unicode standard.
+ </p>
+<p>
+ Every codepoint in the Unicode Character Database (UCD) is
+ assigned a <span class="emphasis"><em>Unicode General Category</em></span> (UGC),
+ which provides the most fundamental information about the
+ codepoint: whether the codepoint represents a
+ <span class="emphasis"><em>Letter</em></span>, a <span class="emphasis"><em>Mark</em></span>, a
+ <span class="emphasis"><em>Number</em></span>, <span class="emphasis"><em>Punctuation</em></span>, a
+ <span class="emphasis"><em>Symbol</em></span>, a <span class="emphasis"><em>Separator</em></span>,
+ or something else (<span class="emphasis"><em>Other</em></span>).
+ </p>
+<p>
+ These UGC properties are "Major" categories. Each codepoint is
+ further assigned to a "minor" category within its Major
+ category, such as "Letter, uppercase" (<code class="literal">Lu</code>) or
+ "Letter, modifier" (<code class="literal">Lm</code>).
+ </p>
+<p>
+ Shaping models are concerned primarily with Letter and Mark
+ codepoints. The minor categories of Mark codepoints are
+ particularly important for shaping. Marks can be nonspacing
+ (<code class="literal">Mn</code>), spacing combining
+ (<code class="literal">Mc</code>), or enclosing (<code class="literal">Me</code>).
+ </p>
+<p>
+ In addition to the UGC property, codepoints in the Indic and
+ Southeast Asian scripts are also assigned
+ <span class="emphasis"><em>Unicode Indic Syllabic Category</em></span> (UISC) and
+ <span class="emphasis"><em>Unicode Indic Positional Category</em></span> (UIPC)
+ properties that provide more detailed information needed for
+ shaping.
+ </p>
+<p>
+ The UISC property sub-categorizes Letters and Marks according to
+ common script-shaping behaviors. For example, UISC distinguishes
+ between consonant letters, vowel letters, and vowel marks. The
+ UIPC property sub-categorizes Mark codepoints by the relative visual
+ position that they occupy (above, below, right, left, or in
+ multiple positions).
+ </p>
+<p>
+ Some complex scripts require that the text run be split into
+ syllables. What constitutes a valid syllable in these
+ scripts is specified in regular expressions, formed from the
+ Letter and Mark codepoints, that take the UISC and UIPC
+ properties into account.
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/up-insensitive.png b/docs/html/up-insensitive.png
index f404986..13e1a4f 100644
--- a/docs/html/up-insensitive.png
+++ b/docs/html/up-insensitive.png
Binary files differ
diff --git a/docs/html/up.png b/docs/html/up.png
index 80b4b37..67a9054 100644
--- a/docs/html/up.png
+++ b/docs/html/up.png
Binary files differ
diff --git a/docs/html/using-harfbuzzs-native-opentype-implementation.html b/docs/html/using-harfbuzzs-native-opentype-implementation.html
index 497e2e6..71cda2c 100644
--- a/docs/html/using-harfbuzzs-native-opentype-implementation.html
+++ b/docs/html/using-harfbuzzs-native-opentype-implementation.html
@@ -8,7 +8,7 @@
<link rel="up" href="fonts-and-faces.html" title="Fonts and faces">
<link rel="prev" href="fonts-and-faces.html" title="Fonts and faces">
<link rel="next" href="using-your-own-font-functions.html" title="Using your own font functions">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -26,6 +26,6 @@
</p>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/using-your-own-font-functions.html b/docs/html/using-your-own-font-functions.html
index 043956c..400e3e0 100644
--- a/docs/html/using-your-own-font-functions.html
+++ b/docs/html/using-your-own-font-functions.html
@@ -7,8 +7,8 @@
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="fonts-and-faces.html" title="Fonts and faces">
<link rel="prev" href="using-harfbuzzs-native-opentype-implementation.html" title="Using HarfBuzz's native OpenType implementation">
-<link rel="next" href="clusters.html" title="">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="next" href="clusters.html" title="Clusters">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -26,6 +26,6 @@
</p>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/what-about-the-other-scripts.html b/docs/html/what-about-the-other-scripts.html
index 0f265ce..5b0ebed 100644
--- a/docs/html/what-about-the-other-scripts.html
+++ b/docs/html/what-about-the-other-scripts.html
@@ -8,7 +8,7 @@
<link rel="up" href="buffers-language-script-and-direction.html" title="Buffers, language, script and direction">
<link rel="prev" href="setting-buffer-properties.html" title="Setting buffer properties">
<link rel="next" href="customizing-unicode-functions.html" title="Customizing Unicode functions">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -26,6 +26,6 @@
</p>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/what-harfbuzz-doesnt-do.html b/docs/html/what-harfbuzz-doesnt-do.html
new file mode 100644
index 0000000..33309a1
--- /dev/null
+++ b/docs/html/what-harfbuzz-doesnt-do.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>What HarfBuzz doesn't do: 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="what-is-harfbuzz.html" title="What is HarfBuzz?">
+<link rel="prev" href="ch01s03.html" title="What does HarfBuzz do?">
+<link rel="next" href="why-is-it-called-harfbuzz.html" title="Why is it called HarfBuzz?">
+<meta name="generator" content="GTK-Doc V1.25 (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="what-is-harfbuzz.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="ch01s03.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="why-is-it-called-harfbuzz.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="what-harfbuzz-doesnt-do"></a>What HarfBuzz doesn't do</h2></div></div></div>
+<p>
+ HarfBuzz will take a Unicode string, shape it, and give you the
+ information required to lay it out correctly on a single
+ horizontal (or vertical) line using the font provided. That is the
+ extent of HarfBuzz's responsibility.
+ </p>
+<p>
+ It is important to note that if you are implementing a complete
+ text-layout engine you may have other responsibilities that
+ HarfBuzz will <span class="emphasis"><em>not</em></span> help you with. For example:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+<p>
+ HarfBuzz won't help you with bidirectionality. If you want to
+ lay out text that includes a mix of Hebrew and English, you
+ will need to ensure that each buffer provided to HarfBuzz
+ has all of its characters in the same order and that the
+ directionality of the buffer is set correctly. This may mean
+ segmenting the text before it is placed into HarfBuzz buffers. In
+ other words, the user will hit the keys in the following
+ sequence:
+ </p>
+<pre class="programlisting">
+ A B C [space] ג ב א [space] D E F
+ </pre>
+<p>
+ but will expect to see in the output:
+ </p>
+<pre class="programlisting">
+ ABC אבג DEF
+ </pre>
+<p>
+ This reordering is called <span class="emphasis"><em>bidi processing</em></span>
+ ("bidi" is short for bidirectional), and there's an
+ algorithm as an annex to the Unicode Standard which tells you how
+ to process a string of mixed directionality.
+ Before sending your string to HarfBuzz, you may need to apply the
+ bidi algorithm to it. Libraries such as <a class="ulink" href="http://icu-project.org/" target="_top">ICU</a> and <a class="ulink" href="http://fribidi.org/" target="_top">fribidi</a> can do this for you.
+ </p>
+</li>
+<li class="listitem">
+<p>
+ HarfBuzz won't help you with text that contains different font
+ properties. For instance, if you have the string "a
+ <span class="emphasis"><em>huge</em></span> breakfast", and you expect
+ "huge" to be italic, then you will need to send three
+ strings to HarfBuzz: <code class="literal">a</code>, in your Roman font;
+ <code class="literal">huge</code> using your italic font; and
+ <code class="literal">breakfast</code> using your Roman font again.
+ </p>
+<p>
+ Similarly, if you change the font, font size, script,
+ language, or direction within your string, then you will
+ need to shape each run independently and output them
+ independently. HarfBuzz expects to shape a run of characters
+ that all share the same properties.
+ </p>
+</li>
+<li class="listitem">
+<p>
+ HarfBuzz won't help you with line breaking, hyphenation, or
+ justification. As mentioned above, HarfBuzz lays out the string
+ along a <span class="emphasis"><em>single line</em></span> of, notionally,
+ infinite length. If you want to find out where the potential
+ word, sentence and line break points are in your text, you
+ could use the ICU library's break iterator functions.
+ </p>
+<p>
+ HarfBuzz can tell you how wide a shaped piece of text is, which is
+ useful input to a justification algorithm, but it knows nothing
+ about paragraphs, lines or line lengths. Nor will it adjust the
+ space between words to fit them proportionally into a line.
+ </p>
+</li>
+</ul></div>
+<p>
+ As a layout-engine implementor, HarfBuzz will help you with the
+ interface between your text and your font, and that's something
+ that you'll need—what you then do with the glyphs that your font
+ returns is up to you.
+ </p>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/what-is-harfbuzz.html b/docs/html/what-is-harfbuzz.html
index aff2f7d..a3eb0a2 100644
--- a/docs/html/what-is-harfbuzz.html
+++ b/docs/html/what-is-harfbuzz.html
@@ -7,8 +7,8 @@
<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="pt01.html" title="Part I. User's manual">
-<link rel="next" href="why-is-it-called-harfbuzz.html" title="Why is it called HarfBuzz?">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="next" href="why-do-i-need-a-shaping-engine.html" title="Why do I need a shaping engine?">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -17,108 +17,84 @@
<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="pt01.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="why-is-it-called-harfbuzz.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="why-do-i-need-a-shaping-engine.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="what-is-harfbuzz"></a>What is HarfBuzz?</h2></div></div></div>
<div class="toc"><dl class="toc">
-<dt><span class="section"><a href="what-is-harfbuzz.html#why-do-i-need-it">Why do I need it?</a></span></dt>
+<dt><span class="section"><a href="what-is-harfbuzz.html#what-is-text-shaping">What is text shaping?</a></span></dt>
+<dt><span class="section"><a href="why-do-i-need-a-shaping-engine.html">Why do I need a shaping engine?</a></span></dt>
+<dt><span class="section"><a href="ch01s03.html">What does HarfBuzz do?</a></span></dt>
+<dt><span class="section"><a href="what-harfbuzz-doesnt-do.html">What HarfBuzz doesn't do</a></span></dt>
<dt><span class="section"><a href="why-is-it-called-harfbuzz.html">Why is it called HarfBuzz?</a></span></dt>
</dl></div>
<p>
- HarfBuzz is a <span class="emphasis"><em>text shaping engine</em></span>. It solves
- the problem of selecting and positioning glyphs from a font given a
- Unicode string.
+ HarfBuzz is a <span class="emphasis"><em>text-shaping engine</em></span>. If you
+ give HarfBuzz a font and a string containing a sequence of Unicode
+ codepoints, HarfBuzz selects and positions the corresponding
+ glyphs from the font, applying all of the necessary layout rules
+ and font features. HarfBuzz then returns the string to you in the
+ form that is correctly arranged for the language and writing
+ system.
+ </p>
+<p>
+ HarfBuzz can properly shape all of the world's major writing
+ systems. It runs on all major operating systems and software
+ platforms and it supports the major font formats in use
+ today.
</p>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="why-do-i-need-it"></a>Why do I need it?</h2></div></div></div>
+<a name="what-is-text-shaping"></a>What is text shaping?</h2></div></div></div>
+<p>
+ Text shaping is the process of translating a string of character
+ codes (such as Unicode codepoints) into a properly arranged
+ sequence of glyphs that can be rendered onto a screen or into
+ final output form for inclusion in a document.
+ </p>
+<p>
+ The shaping process is dependent on the input string, the active
+ font, the script (or writing system) that the string is in, and
+ the language that the string is in.
+ </p>
+<p>
+ Modern software systems generally only deal with strings in the
+ Unicode encoding scheme (although legacy systems and documents may
+ involve other encodings).
+ </p>
+<p>
+ There are several font formats that a program might
+ encounter, each of which has a set of standard text-shaping
+ rules.
+ </p>
+<p>The dominant format is <a class="ulink" href="http://www.microsoft.com/typography/otspec/" target="_top">OpenType</a>. The
+ OpenType specification defines a series of <a class="ulink" href="https://github.com/n8willis/opentype-shaping-documents" target="_top">shaping models</a> for
+ various scripts from around the world. These shaping models depend on
+ the font incorporating certain features as
+ <span class="emphasis"><em>lookups</em></span> in its <code class="literal">GSUB</code>
+ and <code class="literal">GPOS</code> tables.
+ </p>
<p>
- Text shaping is an integral part of preparing text for display. It
- is a fairly low level operation; HarfBuzz is used directly by
- graphic rendering libraries such as Pango, and the layout engines
- in Firefox, LibreOffice and Chromium. Unless you are
- <span class="emphasis"><em>writing</em></span> one of these layout engines yourself,
- you will probably not need to use HarfBuzz - normally higher level
- libraries will turn text into glyphs for you.
+ Alternatively, OpenType fonts can include shaping features for
+ the <a class="ulink" href="https://graphite.sil.org/" target="_top">Graphite</a> shaping model.
</p>
<p>
- However, if you <span class="emphasis"><em>are</em></span> writing a layout engine
- or graphics library yourself, you will need to perform text
- shaping, and this is where HarfBuzz can help you. Here are some
- reasons why you need it:
+ TrueType fonts can also include OpenType shaping
+ features. Alternatively, TrueType fonts can also include <a class="ulink" href="https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html" target="_top">Apple
+ Advanced Typography</a> (AAT) tables to implement shaping
+ support. AAT fonts are generally only found on macOS and iOS systems.
</p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
-<li class="listitem"><p>
- OpenType fonts contain a set of glyphs, indexed by glyph ID.
- The glyph ID within the font does not necessarily relate to a
- Unicode codepoint. For instance, some fonts have the letter
- "a" as glyph ID 1. To pull the right glyph out of
- the font in order to display it, you need to consult a table
- within the font (the "cmap" table) which maps
- Unicode codepoints to glyph IDs. Text shaping turns codepoints
- into glyph IDs.
- </p></li>
-<li class="listitem"><p>
- Many OpenType fonts contain ligatures: combinations of
- characters which are rendered together. For instance, it's
- common for the <code class="literal">fi</code> combination to appear in
- print as the single ligature "fi". Whether you should
- render text as <code class="literal">fi</code> or "fi" does not
- depend on the input text, but on the capabilities of the font
- and the level of ligature application you wish to perform.
- Text shaping involves querying the font's ligature tables and
- determining what substitutions should be made.
- </p></li>
-<li class="listitem"><p>
- While ligatures like "fi" are typographic
- refinements, some languages <span class="emphasis"><em>require</em></span> such
- substitutions to be made in order to display text correctly.
- In Tamil, when the letter "TTA" (ட) letter is
- followed by "U" (உ), the combination should appear
- as the single glyph "டு". The sequence of Unicode
- characters "டஉ" needs to be rendered as a single
- glyph from the font - text shaping chooses the correct glyph
- from the sequence of characters provided.
- </p></li>
-<li class="listitem"><p>
- Similarly, each Arabic character has four different variants:
- within a font, there will be glyphs for the initial, medial,
- final, and isolated forms of each letter. Unicode only encodes
- one codepoint per character, and so a Unicode string will not
- tell you which glyph to use. Text shaping chooses the correct
- form of the letter and returns the correct glyph from the font
- that you need to render.
- </p></li>
-<li class="listitem"><p>
- Other languages have marks and accents which need to be
- rendered in certain positions around a base character. For
- instance, the Moldovan language has the Cyrillic letter
- "zhe" (ж) with a breve accent, like so: ӂ. Some
- fonts will contain this character as an individual glyph,
- whereas other fonts will not contain a zhe-with-breve glyph
- but expect the rendering engine to form the character by
- overlaying the two glyphs ж and ˘. Where you should draw the
- combining breve depends on the height of the preceding glyph.
- Again, for Arabic, the correct positioning of vowel marks
- depends on the height of the character on which you are
- placing the mark. Text shaping tells you whether you have a
- precomposed glyph within your font or if you need to compose a
- glyph yourself out of combining marks, and if so, where to
- position those marks.
- </p></li>
-</ul></div>
<p>
- If this is something that you need to do, then you need a text
- shaping engine: you could use Uniscribe if you are using Windows;
- you could use CoreText on OS X; or you could use HarfBuzz. In the
- rest of this manual, we are going to assume that you are the
- implementor of a text layout engine.
+ Text strings will usually be tagged with a script and language
+ tag that provide the context needed to perform text shaping
+ correctly. The necessary <a class="ulink" href="https://docs.microsoft.com/en-us/typography/opentype/spec/scripttags" target="_top">script</a>
+ and <a class="ulink" href="https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags" target="_top">language</a>
+ tags are defined by OpenType.
</p>
</div>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/why-do-i-need-a-shaping-engine.html b/docs/html/why-do-i-need-a-shaping-engine.html
new file mode 100644
index 0000000..1c2350b
--- /dev/null
+++ b/docs/html/why-do-i-need-a-shaping-engine.html
@@ -0,0 +1,174 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Why do I need a shaping engine?: 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="what-is-harfbuzz.html" title="What is HarfBuzz?">
+<link rel="prev" href="what-is-harfbuzz.html" title="What is HarfBuzz?">
+<link rel="next" href="ch01s03.html" title="What does HarfBuzz do?">
+<meta name="generator" content="GTK-Doc V1.25 (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="what-is-harfbuzz.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="what-is-harfbuzz.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="ch01s03.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="why-do-i-need-a-shaping-engine"></a>Why do I need a shaping engine?</h2></div></div></div>
+<p>
+ Text shaping is an integral part of preparing text for
+ display. Before a Unicode sequence can be rendered, the
+ codepoints in the sequence must be mapped to the corresponding
+ glyphs provided in the font, and those glyphs must be positioned
+ correctly relative to each other. For many of the scripts
+ supported in Unicode, these steps involve script-specific layout
+ rules, including complex joining, reordering, and positioning
+ behavior. Implementing these rules is the job of the shaping engine.
+ </p>
+<p>
+ Text shaping is a fairly low-level operation. HarfBuzz is
+ used directly by text-handling libraries like <a class="ulink" href="https://www.pango.org/" target="_top">Pango</a>, as well as by the layout
+ engines in Firefox, LibreOffice, and Chromium. Unless you are
+ <span class="emphasis"><em>writing</em></span> one of these layout engines
+ yourself, you will probably not need to use HarfBuzz: normally,
+ a layout engine, toolkit, or other library will turn text into
+ glyphs for you.
+ </p>
+<p>
+ However, if you <span class="emphasis"><em>are</em></span> writing a layout engine
+ or graphics library yourself, then you will need to perform text
+ shaping, and this is where HarfBuzz can help you.
+ </p>
+<p>
+ Here are some specific scenarios where a text-shaping engine
+ like HarfBuzz helps you:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+<p>
+ OpenType fonts contain a set of glyphs (that is, shapes
+ to represent the letters, numbers, punctuation marks, and
+ all other symbols), which are indexed by a <code class="literal">glyph ID</code>.
+ </p>
+<p>
+ A particular glyph ID within the font does not necessarily
+ correlate to a predictable Unicode codepoint. For instance,
+ some fonts have the letter "a" as glyph ID 1, but
+ many others do not. In order to retrieve the right glyph
+ from the font to display "a", you need to consult
+ the table inside the font (the <code class="literal">cmap</code>
+ table) that maps Unicode codepoints to glyph IDs. In other
+ words, <span class="emphasis"><em>text shaping turns codepoints into glyph
+ IDs</em></span>.
+ </p>
+</li>
+<li class="listitem">
+<p>
+ Many OpenType fonts contain ligatures: combinations of
+ characters that are rendered as a single unit. For instance,
+ it is common for the "f, i" letter
+ sequence to appear in print as the single ligature glyph
+ "fi".
+ </p>
+<p>
+ Whether you should render an "f, i" sequence
+ as <code class="literal">fi</code> or as "fi" does not
+ depend on the input text. Instead, it depends on the whether
+ or not the font includes an "fi" glyph and on the
+ level of ligature application you wish to perform. The font
+ and the amount of ligature application used are under your
+ control. In other words, <span class="emphasis"><em>text shaping involves
+ querying the font's ligature tables and determining what
+ substitutions should be made</em></span>.
+ </p>
+</li>
+<li class="listitem">
+<p>
+ While ligatures like "fi" are optional typographic
+ refinements, some languages <span class="emphasis"><em>require</em></span> certain
+ substitutions to be made in order to display text correctly.
+ </p>
+<p>
+ For example, in Tamil, when the letter "TTA" (ட)
+ letter is followed by "U" (உ), the pair
+ must be replaced by the single glyph "டு". The
+ sequence of Unicode characters "டஉ" needs to be
+ substituted with a single "டு" glyph from the
+ font.
+ </p>
+<p>
+ But "டு" does not have a Unicode codepoint. To
+ find this glyph, you need to consult the table inside
+ the font (the <code class="literal">GSUB</code> table) that contains
+ substitution information. In other words, <span class="emphasis"><em>text shaping
+ chooses the correct glyph for a sequence of characters
+ provided</em></span>.
+ </p>
+</li>
+<li class="listitem">
+<p>
+ Similarly, each Arabic character has four different variants
+ corresponding to the different positions it might appear in
+ within a sequence. Inside a font, there will be separate
+ glyphs for the initial, medial, final, and isolated forms of
+ each letter, each at a different glyph ID.
+ </p>
+<p>
+ Unicode only assigns one codepoint per character, so a
+ Unicode string will not tell you which glyph variant to use
+ for each character. To decide, you need to analyze the whole
+ string and determine the appropriate glyph for each character
+ based on its position. In other words, <span class="emphasis"><em>text
+ shaping chooses the correct form of the letter by its
+ position and returns the correct glyph from the font</em></span>.
+ </p>
+</li>
+<li class="listitem">
+<p>
+ Other languages involve marks and accents that need to be
+ rendered in specific positions relative a base character. For
+ instance, the Moldovan language includes the Cyrillic letter
+ "zhe" (ж) with a breve accent, like so: "ӂ".
+ </p>
+<p>
+ Some fonts will provide this character as a single
+ zhe-with-breve glyph, but other fonts will not and, instead,
+ will expect the rendering engine to form the character by
+ superimposing the separate "ж" and "˘"
+ glyphs.
+ </p>
+<p>
+ But exactly where you should draw the breve depends on the
+ height and width of the preceding zhe glyph. To find the
+ right position, you need to consult the table inside
+ the font (the <code class="literal">GPOS</code> table) that contains
+ positioning information.
+ In other words, <span class="emphasis"><em>text shaping tells you whether you
+ have a precomposed glyph within your font or if you need to
+ compose a glyph yourself out of combining marks—and,
+ if so, where to position those marks.</em></span>
+ </p>
+</li>
+</ul></div>
+<p>
+ If tasks like these are something that you need to do, then you
+ need a text shaping engine. You could use Uniscribe if you are
+ writing Windows software; you could use CoreText on macOS; or
+ you could use HarfBuzz.
+ </p>
+<div class="note"><p>
+ In the rest of this manual, the text will assume that the reader
+ is that implementor of a text-layout engine.
+ </p></div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/html/why-is-it-called-harfbuzz.html b/docs/html/why-is-it-called-harfbuzz.html
index 960d835..dbc62c1 100644
--- a/docs/html/why-is-it-called-harfbuzz.html
+++ b/docs/html/why-is-it-called-harfbuzz.html
@@ -6,9 +6,9 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="HarfBuzz Manual">
<link rel="up" href="what-is-harfbuzz.html" title="What is HarfBuzz?">
-<link rel="prev" href="what-is-harfbuzz.html" title="What is HarfBuzz?">
-<link rel="next" href="install-harfbuzz.html" title="Install HarfBuzz">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="prev" href="what-harfbuzz-doesnt-do.html" title="What HarfBuzz doesn't do">
+<link rel="next" href="install-harfbuzz.html" title="Installing HarfBuzz">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -16,23 +16,23 @@
<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="what-is-harfbuzz.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="what-is-harfbuzz.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="what-harfbuzz-doesnt-do.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="install-harfbuzz.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="why-is-it-called-harfbuzz"></a>Why is it called HarfBuzz?</h2></div></div></div>
<p>
- HarfBuzz began its life as text shaping code within the FreeType
- project, (and you will see references to the FreeType authors
- within the source code copyright declarations) but was then
- abstracted out to its own project. This project is maintained by
- Behdad Esfahbod, and named HarfBuzz. Originally, it was a shaping
- engine for OpenType fonts - "HarfBuzz" is the Persian
- for "open type".
+ HarfBuzz began its life as text-shaping code within the FreeType
+ project (and you will see references to the FreeType authors
+ within the source code copyright declarations), but was then
+ extracted out to its own project. This project is maintained by
+ Behdad Esfahbod, who named it HarfBuzz. Originally, it was a
+ shaping engine for OpenType fonts—"HarfBuzz" is
+ the Persian for "open type".
</p>
</div>
<div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
</body>
</html> \ No newline at end of file
diff --git a/docs/html/working-with-harfbuzz-clusters.html b/docs/html/working-with-harfbuzz-clusters.html
new file mode 100644
index 0000000..8d40cd0
--- /dev/null
+++ b/docs/html/working-with-harfbuzz-clusters.html
@@ -0,0 +1,227 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Working with HarfBuzz clusters: 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="clusters.html" title="Clusters">
+<link rel="prev" href="clusters.html" title="Clusters">
+<link rel="next" href="a-clustering-example-for-levels-0-and-1.html" title="A clustering example for levels 0 and 1">
+<meta name="generator" content="GTK-Doc V1.25 (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="clusters.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="clusters.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="a-clustering-example-for-levels-0-and-1.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="working-with-harfbuzz-clusters"></a>Working with HarfBuzz clusters</h2></div></div></div>
+<p>
+ When you add text to a HarfBuzz buffer, each code point must be
+ assigned a <span class="emphasis"><em>cluster value</em></span>.
+ </p>
+<p>
+ This cluster value is an arbitrary number; HarfBuzz uses it only
+ to distinguish between clusters. Many client programs will use
+ the index of each code point in the input text stream as the
+ cluster value. This is for the sake of convenience; the actual
+ value does not matter.
+ </p>
+<p>
+ Some of the shaping operations performed by HarfBuzz —
+ such as reordering, composition, decomposition, and substitution
+ — may alter the cluster values of some characters. The
+ final cluster values in the buffer at the end of the shaping
+ process will indicate to client programs which subsequences of
+ glyphs represent a cluster and, therefore, must not be
+ separated.
+ </p>
+<p>
+ In addition, client programs can query the final cluster values
+ to discern other potentially important information about the
+ glyphs in the output buffer (such as whether or not a ligature
+ was formed).
+ </p>
+<p>
+ For example, if the initial sequence of cluster values was:
+ </p>
+<pre class="programlisting">
+ 0,1,2,3,4
+ </pre>
+<p>
+ and the final sequence of cluster values is:
+ </p>
+<pre class="programlisting">
+ 0,0,3,3
+ </pre>
+<p>
+ then there are two clusters in the output buffer: the first
+ cluster includes the first two glyphs, and the second cluster
+ includes the third and fourth glyphs. It is also evident that a
+ ligature or conjunct has been formed, because there are fewer
+ glyphs in the output buffer (four) than there were code points
+ in the input buffer (five).
+ </p>
+<p>
+ Although client programs using HarfBuzz are free to assign
+ initial cluster values in any manner they choose to, HarfBuzz
+ does offer some useful guarantees if the cluster values are
+ assigned in a monotonic (either non-decreasing or non-increasing)
+ order.
+ </p>
+<p>
+ For left-to-right scripts (LTR) and top-to-bottom scripts (TTB),
+ HarfBuzz will preserve the monotonic property: client programs
+ are guaranteed that monotonically increasing initial clulster
+ values will be returned as monotonically increasing final
+ cluster values.
+ </p>
+<p>
+ For right-to-left scripts (RTL) and bottom-to-top scripts (BTT),
+ the directionality of the buffer itself is reversed for final
+ output as a matter of design. Therefore, HarfBuzz inverts the
+ monotonic property: client programs are guaranteed that
+ monotonically increasing initial clulster values will be
+ returned as monotonically <span class="emphasis"><em>decreasing</em></span> final
+ cluster values.
+ </p>
+<p>
+ Client programs can adjust how HarfBuzz handles clusters during
+ shaping by setting the
+ <code class="literal">cluster_level</code> of the
+ buffer. HarfBuzz offers three <span class="emphasis"><em>levels</em></span> of
+ clustering support for this property:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+<p><span class="emphasis"><em>Level 0</em></span> is the default and
+ reproduces the behavior of the old HarfBuzz library.
+ </p>
+<p>
+ The distinguishing feature of level 0 behavior is that, at
+ the beginning of processing the buffer, all code points that
+ are categorized as <span class="emphasis"><em>marks</em></span>,
+ <span class="emphasis"><em>modifier symbols</em></span>, or
+ <span class="emphasis"><em>Emoji extended pictographic</em></span> modifiers,
+ as well as the <span class="emphasis"><em>Zero Width Joiner</em></span> and
+ <span class="emphasis"><em>Zero Width Non-Joiner</em></span> code points, are
+ assigned the cluster value of the closest preceding code
+ point from <span class="emphasis"><em>different</em></span> category.
+ </p>
+<p>
+ In essence, whenever a base character is followed by a mark
+ character or a sequence of mark characters, those marks are
+ reassigned to the same initial cluster value as the base
+ character. This reassignment is referred to as
+ "merging" the affected clusters. This behavior is based on
+ the Grapheme Cluster Boundary specification in <a class="ulink" href="https://www.unicode.org/reports/tr29/#Regex_Definitions" target="_top">Unicode
+ Technical Report 29</a>.
+ </p>
+<p>
+ Client programs can specify level 0 behavior for a buffer by
+ setting its <code class="literal">cluster_level</code> to
+ <code class="literal">HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES</code>.
+ </p>
+</li>
+<li class="listitem">
+<p>
+ <span class="emphasis"><em>Level 1</em></span> tweaks the old behavior
+ slightly to produce better results. Therefore, level 1
+ clustering is recommended for code that is not required to
+ implement backward compatibility with the old HarfBuzz.
+ </p>
+<p>
+ Level 1 differs from level 0 by not merging the
+ clusters of marks and other modifier code points with the
+ preceding "base" code point's cluster. By preserving the
+ separate cluster values of these marks and modifier code
+ points, script shapers can perform additional operations
+ that might lead to improved results (for example, reordering
+ a sequence of marks).
+ </p>
+<p>
+ Client programs can specify level 1 behavior for a buffer by
+ setting its <code class="literal">cluster_level</code> to
+ <code class="literal">HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS</code>.
+ </p>
+</li>
+<li class="listitem">
+<p>
+ <span class="emphasis"><em>Level 2</em></span> differs significantly in how it
+ treats cluster values. In level 2, HarfBuzz never merges
+ clusters.
+ </p>
+<p>
+ This difference can be seen most clearly when HarfBuzz processes
+ ligature substitutions and glyph decompositions. In level 0
+ and level 1, ligatures and glyph decomposition both involve
+ merging clusters; in level 2, neither of these operations
+ triggers a merge.
+ </p>
+<p>
+ Client programs can specify level 2 behavior for a buffer by
+ setting its <code class="literal">cluster_level</code> to
+ <code class="literal">HB_BUFFER_CLUSTER_LEVEL_CHARACTERS</code>.
+ </p>
+</li>
+</ul></div>
+<p>
+ As mentioned earlier, client programs using HarfBuzz often
+ assign initial cluster values in a buffer by reusing the indices
+ of the code points in the input text. This gives a sequence of
+ cluster values that is monotonically increasing (for example,
+ 0,1,2,3,4).
+ </p>
+<p>
+ It is not <span class="emphasis"><em>required</em></span> that the cluster values
+ in a buffer be monotonically increasing. However, if the initial
+ cluster values in a buffer are monotonic and the buffer is
+ configured to use cluster level 0 or 1, then HarfBuzz
+ guarantees that the final cluster values in the shaped buffer
+ will also be monotonic. No such guarantee is made for cluster
+ level 2.
+ </p>
+<p>
+ In levels 0 and 1, HarfBuzz implements the following conceptual
+ model for cluster values:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ If the sequence of input cluster values is monotonic, the
+ sequence of cluster values will remain monotonic.
+ </p></li>
+<li class="listitem"><p>
+ Each cluster value represents a single cluster.
+ </p></li>
+<li class="listitem"><p>
+ Each cluster contains one or more glyphs and one or more
+ characters.
+ </p></li>
+</ul></div>
+<p>
+ In practice, this model offers several benefits. Assuming that
+ the initial cluster values were monotonically increasing
+ and distinct before shaping began, then, in the final output:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist compact" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ All adjacent glyphs having the same final cluster
+ value belong to the same cluster.
+ </p></li>
+<li class="listitem"><p>
+ Each character belongs to the cluster that has the highest
+ cluster value <span class="emphasis"><em>not larger than</em></span> its
+ initial cluster value.
+ </p></li>
+</ul></div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/usermanual-buffers-language-script-and-direction.xml b/docs/usermanual-buffers-language-script-and-direction.xml
index 9eddb71..1c6b5da 100644
--- a/docs/usermanual-buffers-language-script-and-direction.xml
+++ b/docs/usermanual-buffers-language-script-and-direction.xml
@@ -1,3 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+ <!ENTITY version SYSTEM "version.xml">
+]>
<chapter id="buffers-language-script-and-direction">
<title>Buffers, language, script and direction</title>
<para>
@@ -9,14 +15,15 @@
<section id="creating-and-destroying-buffers">
<title>Creating and destroying buffers</title>
<para>
- As we saw in our initial example, a buffer is created and
+ As we saw in our <emphasis>Getting Started</emphasis> example, a
+ buffer is created and
initialized with <literal>hb_buffer_create()</literal>. This
produces a new, empty buffer object, instantiated with some
default values and ready to accept your Unicode strings.
</para>
<para>
- HarfBuzz manages the memory of objects that it creates (such as
- buffers), so you don't have to. When you have finished working on
+ HarfBuzz manages the memory of objects (such as buffers) that it
+ creates, so you don't have to. When you have finished working on
a buffer, you can call <literal>hb_buffer_destroy()</literal>:
</para>
<programlisting language="C">
@@ -74,4 +81,4 @@ void somefunc(hb_buffer_t *buffer) {
<para>
</para>
</section>
-</chapter> \ No newline at end of file
+</chapter>
diff --git a/docs/usermanual-clusters.xml b/docs/usermanual-clusters.xml
index 608371b..228cc56 100644
--- a/docs/usermanual-clusters.xml
+++ b/docs/usermanual-clusters.xml
@@ -1,304 +1,695 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+ <!ENTITY version SYSTEM "version.xml">
+]>
<chapter id="clusters">
-<sect1 id="clusters">
<title>Clusters</title>
- <para>
- In shaping text, a <emphasis>cluster</emphasis> is a sequence of
- code points that needs to be treated as a single, indivisible unit.
- </para>
- <para>
- When you add text to a HB buffer, each character is associated with
- a <emphasis>cluster value</emphasis>. This is an arbitrary number as
- far as HB is concerned.
- </para>
- <para>
- Most clients will use UTF-8, UTF-16, or UTF-32 indices, but the
- actual number does not matter. Moreover, it is not required for the
- cluster values to be monotonically increasing, but pretty much all
- of HB's tests are performed on monotonically increasing cluster
- numbers. Nevertheless, there is no such assumption in the code
- itself. With that in mind, let's examine what happens with cluster
- values during shaping under each cluster-level.
- </para>
- <para>
- HarfBuzz provides three <emphasis>levels</emphasis> of clustering
- support. Level 0 is the default behavior and reproduces the behavior
- of the old HarfBuzz library. Level 1 tweaks this behavior slightly
- to produce better results, so level 1 clustering is recommended for
- code that is not required to implement backward compatibility with
- the old HarfBuzz.
- </para>
- <para>
- Level 2 differs significantly in how it treats cluster values.
- Levels 0 and 1 both process ligatures and glyph decomposition by
- merging clusters; level 2 does not.
- </para>
- <para>
- The conceptual model for what the cluster values mean, in levels 0
- and 1, is this:
- </para>
- <itemizedlist spacing="compact">
- <listitem>
- <para>
- the sequence of cluster values will always remain monotone
- </para>
- </listitem>
- <listitem>
- <para>
- each value represents a single cluster
- </para>
- </listitem>
- <listitem>
- <para>
- each cluster contains one or more glyphs and one or more
- characters
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Assuming that initial cluster numbers were monotonically increasing
- and distinct, then all adjacent glyphs having the same cluster
- number belong to the same cluster, and all characters belong to the
- cluster that has the highest number not larger than their initial
- cluster number. This will become clearer with an example.
- </para>
-</sect1>
-<sect1 id="a-clustering-example-for-levels-0-and-1">
- <title>A clustering example for levels 0 and 1</title>
- <para>
- Let's say we start with the following character sequence and cluster
- values:
- </para>
- <programlisting>
- A,B,C,D,E
- 0,1,2,3,4
-</programlisting>
- <para>
- We then map the characters to glyphs. For simplicity, let's assume
- that each character maps to the corresponding, identical-looking
- glyph:
- </para>
- <programlisting>
- A,B,C,D,E
- 0,1,2,3,4
-</programlisting>
- <para>
- Now if, for example, <literal>B</literal> and <literal>C</literal>
- ligate, then the clusters to which they belong &quot;merge&quot;.
- This merged cluster takes for its cluster number the minimum of all
- the cluster numbers of the clusters that went in. In this case, we
- get:
- </para>
- <programlisting>
- A,BC,D,E
- 0,1 ,3,4
-</programlisting>
- <para>
- Now let's assume that the <literal>BC</literal> glyph decomposes
- into three components, and <literal>D</literal> also decomposes into
- two. The components each inherit the cluster value of their parent:
- </para>
- <programlisting>
- A,BC0,BC1,BC2,D0,D1,E
- 0,1 ,1 ,1 ,3 ,3 ,4
-</programlisting>
- <para>
- Now if <literal>BC2</literal> and <literal>D0</literal> ligate, then
- their clusters (numbers 1 and 3) merge into
- <literal>min(1,3) = 1</literal>:
- </para>
- <programlisting>
- A,BC0,BC1,BC2D0,D1,E
- 0,1 ,1 ,1 ,1 ,4
-</programlisting>
- <para>
- At this point, cluster 1 means: the character sequence
- <literal>BCD</literal> is represented by glyphs
- <literal>BC0,BC1,BC2D0,D1</literal> and cannot be broken down any
- further.
- </para>
-</sect1>
-<sect1 id="reordering-in-levels-0-and-1">
- <title>Reordering in levels 0 and 1</title>
- <para>
- Another common operation in the more complex shapers is when things
- reorder. In those cases, to maintain monotone clusters, HB merges
- the clusters of everything in the reordering sequence. For example,
- let's again start with the character sequence:
- </para>
- <programlisting>
- A,B,C,D,E
- 0,1,2,3,4
-</programlisting>
- <para>
- If <literal>D</literal> is reordered before <literal>B</literal>,
- then the <literal>B</literal>, <literal>C</literal>, and
- <literal>D</literal> clusters merge, and we get:
- </para>
- <programlisting>
- A,D,B,C,E
- 0,1,1,1,4
-</programlisting>
- <para>
- This is clearly not ideal, but it is the only sensible way to
- maintain monotone indices and retain the true relationship between
- glyphs and characters.
- </para>
-</sect1>
-<sect1 id="the-distinction-between-levels-0-and-1">
- <title>The distinction between levels 0 and 1</title>
- <para>
- So, the above is pretty much what cluster levels 0 and 1 do. The
- only difference between the two is this: in level 0, at the very
- beginning of the shaping process, we also merge clusters between
- base characters and all Unicode marks (combining or not) following
- them. E.g.:
- </para>
- <programlisting>
- A,acute,B
- 0,1 ,2
-</programlisting>
- <para>
- will become:
- </para>
- <programlisting>
- A,acute,B
- 0,0 ,2
-</programlisting>
- <para>
- This is the default behavior. We do it because Windows did it and
- old HarfBuzz did it, so this remained the default. But this behavior
- makes it impossible to color diacritic marks differently from their
- base characters. That's why in level 1 we do not perform this
- initial merging step.
- </para>
- <para>
- For clients, level 0 is more convenient if they rely on HarfBuzz
- clusters for cursor positioning. But that's wrong anyway: cursor
- positions should be determined based on Unicode grapheme boundaries,
- NOT shaping clusters. As such, level 1 clusters are preferred.
- </para>
- <para>
- One last note about levels 0 and 1. We currently don't allow a
- <literal>MultipleSubst</literal> lookup to replace a glyph with zero
- glyphs (i.e., to delete a glyph). But in some other situations,
- glyphs can be deleted. In those cases, if the glyph being deleted is
- the last glyph of its cluster, we make sure to merge the cluster
- with a neighboring cluster.
- </para>
- <para>
- This is, primarily, to make sure that the starting cluster of the
- text always has the cluster index pointing to the start of the text
- for the run; more than one client currently relies on this
- guarantee.
- </para>
- <para>
- Incidentally, Apple's CoreText does something else to maintain the
- same promise: it inserts a glyph with id 65535 at the beginning of
- the glyph string if the glyph corresponding to the first character
- in the run was deleted. HarfBuzz might do something similar in the
- future.
- </para>
-</sect1>
-<sect1 id="level-2">
- <title>Level 2</title>
- <para>
- Level 2 is a different beast from levels 0 and 1. It is simple to
- describe, but hard to make sense of. It simply doesn't do any
- cluster merging whatsoever. When things ligate or otherwise multiple
- glyphs turn into one, the cluster value of the first glyph is
- retained.
- </para>
- <para>
- Here are a few examples of why processing cluster values produced at
- this level might be tricky:
- </para>
- <sect2 id="ligatures-with-combining-marks">
- <title>Ligatures with combining marks</title>
- <para>
- Imagine capital letters are bases and lower case letters are
- combining marks. With an input sequence like this:
+ <section id="clusters-and-shaping">
+ <title>Clusters and shaping</title>
+ <para>
+ In text shaping, a <emphasis>cluster</emphasis> is a sequence of
+ characters that needs to be treated as a single, indivisible
+ unit. A single letter or symbol can be a cluster of its
+ own. Other clusters correspond to longer subsequences of the
+ input code points &mdash; such as a ligature or conjunct form
+ &mdash; and require the shaper to ensure that the cluster is not
+ broken during the shaping process.
+ </para>
+ <para>
+ A cluster is distinct from a <emphasis>grapheme</emphasis>,
+ which is the smallest unit of meaning in a writing system or
+ script.
+ </para>
+ <para>
+ The definitions of the two terms are similar. However, clusters
+ are only relevant for script shaping and glyph layout. In
+ contrast, graphemes are a property of the underlying script, and
+ are of interest when client programs implement orthographic
+ or linguistic functionality.
+ </para>
+ <para>
+ For example, two individual letters are often two separate
+ graphemes. When two letters form a ligature, however, they
+ combine into a single glyph. They are then part of the same
+ cluster and are treated as a unit by the shaping engine &mdash;
+ even though the two original, underlying letters remain separate
+ graphemes.
+ </para>
+ <para>
+ HarfBuzz is concerned with clusters, <emphasis>not</emphasis>
+ with graphemes &mdash; although client programs using HarfBuzz
+ may still care about graphemes for other reasons from time to time.
+ </para>
+ <para>
+ During the shaping process, there are several shaping operations
+ that may merge adjacent characters (for example, when two code
+ points form a ligature or a conjunct form and are replaced by a
+ single glyph) or split one character into several (for example,
+ when decomposing a code point through the
+ <literal>ccmp</literal> feature). Operations like these alter
+ clusters; HarfBuzz tracks the changes to ensure that no clusters
+ get lost or broken during shaping.
+ </para>
+ <para>
+ HarfBuzz records cluster information independently from how
+ shaping operations affect the individual glyphs returned in an
+ output buffer. Consequently, a client program using HarfBuzz can
+ utilize the cluster information to implement features such as:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Correctly positioning the cursor within a shaped text run,
+ even when characters have formed ligatures, composed or
+ decomposed, reordered, or undergone other shaping operations.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Correctly highlighting a text selection that includes some,
+ but not all, of the characters in a word.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Applying text attributes (such as color or underlining) to
+ part, but not all, of a word.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Generating output document formats (such as PDF) with
+ embedded text that can be fully extracted.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Determining the mapping between input characters and output
+ glyphs, such as which glyphs are ligatures.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Performing line-breaking, justification, and other
+ line-level or paragraph-level operations that must be done
+ after shaping is complete, but which require examining
+ character-level properties.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section id="working-with-harfbuzz-clusters">
+ <title>Working with HarfBuzz clusters</title>
+ <para>
+ When you add text to a HarfBuzz buffer, each code point must be
+ assigned a <emphasis>cluster value</emphasis>.
+ </para>
+ <para>
+ This cluster value is an arbitrary number; HarfBuzz uses it only
+ to distinguish between clusters. Many client programs will use
+ the index of each code point in the input text stream as the
+ cluster value. This is for the sake of convenience; the actual
+ value does not matter.
+ </para>
+ <para>
+ Some of the shaping operations performed by HarfBuzz &mdash;
+ such as reordering, composition, decomposition, and substitution
+ &mdash; may alter the cluster values of some characters. The
+ final cluster values in the buffer at the end of the shaping
+ process will indicate to client programs which subsequences of
+ glyphs represent a cluster and, therefore, must not be
+ separated.
+ </para>
+ <para>
+ In addition, client programs can query the final cluster values
+ to discern other potentially important information about the
+ glyphs in the output buffer (such as whether or not a ligature
+ was formed).
+ </para>
+ <para>
+ For example, if the initial sequence of cluster values was:
+ </para>
+ <programlisting>
+ 0,1,2,3,4
+ </programlisting>
+ <para>
+ and the final sequence of cluster values is:
</para>
<programlisting>
- A,a,B,b,C,c
- 0,1,2,3,4,5
-</programlisting>
+ 0,0,3,3
+ </programlisting>
<para>
- if <literal>A,B,C</literal> ligate, then here are the cluster
- values one would get under the various levels:
+ then there are two clusters in the output buffer: the first
+ cluster includes the first two glyphs, and the second cluster
+ includes the third and fourth glyphs. It is also evident that a
+ ligature or conjunct has been formed, because there are fewer
+ glyphs in the output buffer (four) than there were code points
+ in the input buffer (five).
</para>
<para>
- level 0:
+ Although client programs using HarfBuzz are free to assign
+ initial cluster values in any manner they choose to, HarfBuzz
+ does offer some useful guarantees if the cluster values are
+ assigned in a monotonic (either non-decreasing or non-increasing)
+ order.
+ </para>
+ <para>
+ For left-to-right scripts (LTR) and top-to-bottom scripts (TTB),
+ HarfBuzz will preserve the monotonic property: client programs
+ are guaranteed that monotonically increasing initial clulster
+ values will be returned as monotonically increasing final
+ cluster values.
+ </para>
+ <para>
+ For right-to-left scripts (RTL) and bottom-to-top scripts (BTT),
+ the directionality of the buffer itself is reversed for final
+ output as a matter of design. Therefore, HarfBuzz inverts the
+ monotonic property: client programs are guaranteed that
+ monotonically increasing initial clulster values will be
+ returned as monotonically <emphasis>decreasing</emphasis> final
+ cluster values.
+ </para>
+ <para>
+ Client programs can adjust how HarfBuzz handles clusters during
+ shaping by setting the
+ <literal>cluster_level</literal> of the
+ buffer. HarfBuzz offers three <emphasis>levels</emphasis> of
+ clustering support for this property:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para><emphasis>Level 0</emphasis> is the default and
+ reproduces the behavior of the old HarfBuzz library.
+ </para>
+ <para>
+ The distinguishing feature of level 0 behavior is that, at
+ the beginning of processing the buffer, all code points that
+ are categorized as <emphasis>marks</emphasis>,
+ <emphasis>modifier symbols</emphasis>, or
+ <emphasis>Emoji extended pictographic</emphasis> modifiers,
+ as well as the <emphasis>Zero Width Joiner</emphasis> and
+ <emphasis>Zero Width Non-Joiner</emphasis> code points, are
+ assigned the cluster value of the closest preceding code
+ point from <emphasis>different</emphasis> category.
+ </para>
+ <para>
+ In essence, whenever a base character is followed by a mark
+ character or a sequence of mark characters, those marks are
+ reassigned to the same initial cluster value as the base
+ character. This reassignment is referred to as
+ "merging" the affected clusters. This behavior is based on
+ the Grapheme Cluster Boundary specification in <ulink
+ url="https://www.unicode.org/reports/tr29/#Regex_Definitions">Unicode
+ Technical Report 29</ulink>.
+ </para>
+ <para>
+ Client programs can specify level 0 behavior for a buffer by
+ setting its <literal>cluster_level</literal> to
+ <literal>HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES</literal>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>Level 1</emphasis> tweaks the old behavior
+ slightly to produce better results. Therefore, level 1
+ clustering is recommended for code that is not required to
+ implement backward compatibility with the old HarfBuzz.
+ </para>
+ <para>
+ Level 1 differs from level 0 by not merging the
+ clusters of marks and other modifier code points with the
+ preceding "base" code point's cluster. By preserving the
+ separate cluster values of these marks and modifier code
+ points, script shapers can perform additional operations
+ that might lead to improved results (for example, reordering
+ a sequence of marks).
+ </para>
+ <para>
+ Client programs can specify level 1 behavior for a buffer by
+ setting its <literal>cluster_level</literal> to
+ <literal>HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS</literal>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>Level 2</emphasis> differs significantly in how it
+ treats cluster values. In level 2, HarfBuzz never merges
+ clusters.
+ </para>
+ <para>
+ This difference can be seen most clearly when HarfBuzz processes
+ ligature substitutions and glyph decompositions. In level 0
+ and level 1, ligatures and glyph decomposition both involve
+ merging clusters; in level 2, neither of these operations
+ triggers a merge.
+ </para>
+ <para>
+ Client programs can specify level 2 behavior for a buffer by
+ setting its <literal>cluster_level</literal> to
+ <literal>HB_BUFFER_CLUSTER_LEVEL_CHARACTERS</literal>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ As mentioned earlier, client programs using HarfBuzz often
+ assign initial cluster values in a buffer by reusing the indices
+ of the code points in the input text. This gives a sequence of
+ cluster values that is monotonically increasing (for example,
+ 0,1,2,3,4).
+ </para>
+ <para>
+ It is not <emphasis>required</emphasis> that the cluster values
+ in a buffer be monotonically increasing. However, if the initial
+ cluster values in a buffer are monotonic and the buffer is
+ configured to use cluster level 0 or 1, then HarfBuzz
+ guarantees that the final cluster values in the shaped buffer
+ will also be monotonic. No such guarantee is made for cluster
+ level 2.
+ </para>
+ <para>
+ In levels 0 and 1, HarfBuzz implements the following conceptual
+ model for cluster values:
+ </para>
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ If the sequence of input cluster values is monotonic, the
+ sequence of cluster values will remain monotonic.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Each cluster value represents a single cluster.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Each cluster contains one or more glyphs and one or more
+ characters.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ In practice, this model offers several benefits. Assuming that
+ the initial cluster values were monotonically increasing
+ and distinct before shaping began, then, in the final output:
+ </para>
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ All adjacent glyphs having the same final cluster
+ value belong to the same cluster.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Each character belongs to the cluster that has the highest
+ cluster value <emphasis>not larger than</emphasis> its
+ initial cluster value.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="a-clustering-example-for-levels-0-and-1">
+ <title>A clustering example for levels 0 and 1</title>
+ <para>
+ The basic shaping operations affect clusters in a predictable
+ manner when using level 0 or level 1:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ When two or more clusters <emphasis>merge</emphasis>, the
+ resulting merged cluster takes as its cluster value the
+ <emphasis>minimum</emphasis> of the incoming cluster values.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When a cluster <emphasis>decomposes</emphasis>, all of the
+ resulting child clusters inherit as their cluster value the
+ cluster value of the parent cluster.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When a character is <emphasis>reordered</emphasis>, the
+ reordered character and all clusters that the character
+ moves past as part of the reordering are merged into one cluster.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ The functionality, guarantees, and benefits of level 0 and level
+ 1 behavior can be seen with some examples. First, let us examine
+ what happens with cluster values when shaping involves cluster
+ merging with ligatures and decomposition.
+ </para>
+
+ <para>
+ Let's say we start with the following character sequence (top row) and
+ initial cluster values (bottom row):
</para>
<programlisting>
- ABC,a,b,c
- 0 ,0,0,0
-</programlisting>
+ A,B,C,D,E
+ 0,1,2,3,4
+ </programlisting>
<para>
- level 1:
+ During shaping, HarfBuzz maps these characters to glyphs from
+ the font. For simplicity, let us assume that each character maps
+ to the corresponding, identical-looking glyph:
</para>
<programlisting>
- ABC,a,b,c
- 0 ,0,0,5
-</programlisting>
+ A,B,C,D,E
+ 0,1,2,3,4
+ </programlisting>
<para>
- level 2:
+ Now if, for example, <literal>B</literal> and <literal>C</literal>
+ form a ligature, then the clusters to which they belong
+ &quot;merge&quot;. This merged cluster takes for its cluster
+ value the minimum of all the cluster values of the clusters that
+ went in to the ligature. In this case, we get:
</para>
<programlisting>
- ABC,a,b,c
- 0 ,1,3,5
-</programlisting>
+ A,BC,D,E
+ 0,1 ,3,4
+ </programlisting>
+ <para>
+ because 1 is the minimum of the set {1,2}, which were the
+ cluster values of <literal>B</literal> and
+ <literal>C</literal>.
+ </para>
+ <para>
+ Next, let us say that the <literal>BC</literal> ligature glyph
+ decomposes into three components, and <literal>D</literal> also
+ decomposes into two components. Whenever a cluster decomposes,
+ its components each inherit the cluster value of their parent:
+ </para>
+ <programlisting>
+ A,BC0,BC1,BC2,D0,D1,E
+ 0,1 ,1 ,1 ,3 ,3 ,4
+ </programlisting>
+ <para>
+ Next, if <literal>BC2</literal> and <literal>D0</literal> form a
+ ligature, then their clusters (cluster values 1 and 3) merge into
+ <literal>min(1,3) = 1</literal>:
+ </para>
+ <programlisting>
+ A,BC0,BC1,BC2D0,D1,E
+ 0,1 ,1 ,1 ,1 ,4
+ </programlisting>
+ <para>
+ Note that the entirety of cluster 3 merges into cluster 1, not
+ just the <literal>D0</literal> glyph. This reflects the fact
+ that the cluster <emphasis>must</emphasis> be treated as an
+ indivisible unit.
+ </para>
<para>
- Making sense of the last example is the hardest for a client,
- because there is nothing in the cluster values to suggest that
- <literal>B</literal> and <literal>C</literal> ligated with
- <literal>A</literal>.
+ At this point, cluster 1 means: the character sequence
+ <literal>BCD</literal> is represented by glyphs
+ <literal>BC0,BC1,BC2D0,D1</literal> and cannot be broken down any
+ further.
</para>
- </sect2>
- <sect2 id="reordering">
- <title>Reordering</title>
+ </section>
+ <section id="reordering-in-levels-0-and-1">
+ <title>Reordering in levels 0 and 1</title>
<para>
- Another tricky case is when things reorder. Under level 2:
+ Another common operation in the more complex shapers is glyph
+ reordering. In order to maintain a monotonic cluster sequence
+ when glyph reordering takes place, HarfBuzz merges the clusters
+ of everything in the reordering sequence.
+ </para>
+ <para>
+ For example, let us again start with the character sequence (top
+ row) and initial cluster values (bottom row):
</para>
<programlisting>
- A,B,C,D,E
- 0,1,2,3,4
-</programlisting>
+ A,B,C,D,E
+ 0,1,2,3,4
+ </programlisting>
<para>
- Now imagine <literal>D</literal> moves before
- <literal>B</literal>:
+ If <literal>D</literal> is reordered to the position immediately
+ before <literal>B</literal>, then HarfBuzz merges the
+ <literal>B</literal>, <literal>C</literal>, and
+ <literal>D</literal> clusters &mdash; all the clusters between
+ the final position of the reordered glyph and its original
+ position. This means that we get:
</para>
<programlisting>
- A,D,B,C,E
- 0,3,1,2,4
-</programlisting>
+ A,D,B,C,E
+ 0,1,1,1,4
+ </programlisting>
+ <para>
+ as the final cluster sequence.
+ </para>
+ <para>
+ Merging this many clusters is not ideal, but it is the only
+ sensible way for HarfBuzz to maintain the guarantee that the
+ sequence of cluster values remains monotonic and to retain the
+ true relationship between glyphs and characters.
+ </para>
+ </section>
+ <section id="the-distinction-between-levels-0-and-1">
+ <title>The distinction between levels 0 and 1</title>
+ <para>
+ The preceding examples demonstrate the main effects of using
+ cluster levels 0 and 1. The only difference between the two
+ levels is this: in level 0, at the very beginning of the shaping
+ process, HarfBuzz merges the cluster of each base character
+ with the clusters of all Unicode marks (combining or not) and
+ modifiers that follow it.
+ </para>
<para>
- Now, if <literal>D</literal> ligates with <literal>B</literal>, we
- get:
+ For example, let us start with the following character sequence
+ (top row) and accompanying initial cluster values (bottom row):
</para>
<programlisting>
- A,DB,C,E
- 0,3 ,2,4
-</programlisting>
+ A,acute,B
+ 0,1 ,2
+ </programlisting>
<para>
- In a different scenario, <literal>A</literal> and
- <literal>B</literal> could have ligated
- <emphasis>before</emphasis> <literal>D</literal> reordered; that
- would have resulted in:
+ The <literal>acute</literal> is a Unicode mark. If HarfBuzz is
+ using cluster level 0 on this sequence, then the
+ <literal>A</literal> and <literal>acute</literal> clusters will
+ merge, and the result will become:
</para>
<programlisting>
- AB,D,C,E
- 0 ,3,2,4
-</programlisting>
+ A,acute,B
+ 0,0 ,2
+ </programlisting>
+ <para>
+ This merger is performed before any other script-shaping
+ steps.
+ </para>
+ <para>
+ This initial cluster merging is the default behavior of the
+ Windows shaping engine, and the old HarfBuzz codebase copied
+ that behavior to maintain compatibility. Consequently, it has
+ remained the default behavior in the new HarfBuzz codebase.
+ </para>
+ <para>
+ But this initial cluster-merging behavior makes it impossible
+ client programs to implement some features (such as to
+ color diacritic marks differently from their base
+ characters). That is why, in level 1, HarfBuzz does not perform
+ the initial merging step.
+ </para>
+ <para>
+ For client programs that rely on HarfBuzz cluster values to
+ perform cursor positioning, level 0 is more convenient. But
+ relying on cluster boundaries for cursor positioning is wrong: cursor
+ positions should be determined based on Unicode grapheme
+ boundaries, not on shaping-cluster boundaries. As such, using
+ level 1 clustering behavior is recommended.
+ </para>
<para>
- There's no way to differentiate between these two scenarios based
- on the cluster numbers alone.
+ One final facet of levels 0 and 1 is worth noting. HarfBuzz
+ currently does not allow any
+ <emphasis>multiple-substitution</emphasis> GSUB lookups to
+ replace a glyph with zero glyphs (in other words, to delete a
+ glyph).
</para>
<para>
- Another problem happens with ligatures under level 2 if the
- direction of the text is forced to opposite of its natural
- direction (e.g. left-to-right Arabic). But that's too much of a
- corner case to worry about.
+ But, in some other situations, glyphs can be deleted. In
+ those cases, if the glyph being deleted is the last glyph of its
+ cluster, HarfBuzz makes sure to merge the deleted glyph's
+ cluster with a neighboring cluster.
</para>
- </sect2>
-</sect1>
+ <para>
+ This is done primarily to make sure that the starting cluster of the
+ text always has the cluster index pointing to the start of the text
+ for the run; more than one client program currently relies on this
+ guarantee.
+ </para>
+ <para>
+ Incidentally, Apple's CoreText does something different to
+ maintain the same promise: it inserts a glyph with id 65535 at
+ the beginning of the glyph string if the glyph corresponding to
+ the first character in the run was deleted. HarfBuzz might do
+ something similar in the future.
+ </para>
+ </section>
+ <section id="level-2">
+ <title>Level 2</title>
+ <para>
+ HarfBuzz's level 2 cluster behavior uses a significantly
+ different model than that of level 0 and level 1.
+ </para>
+ <para>
+ The level 2 behavior is easy to describe, but it may be
+ difficult to understand in practical terms. In brief, level 2
+ performs no merging of clusters whatsoever.
+ </para>
+ <para>
+ This means that there is no initial base-and-mark merging step
+ (as is done in level 0), and it means that reordering moves and
+ ligature substitutions do not trigger a cluster merge.
+ </para>
+ <para>
+ Only one shaping operation directly affects clusters when using
+ level 2:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ When a cluster <emphasis>decomposes</emphasis>, all of the
+ resulting child clusters inherit as their cluster value the
+ cluster value of the parent cluster.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ When glyphs do form a ligature (or when some other feature
+ substitutes multiple glyphs with one glyph) the cluster value
+ of the first glyph is retained as the cluster value for the
+ resulting ligature.
+ </para>
+ <para>
+ This occurrence sounds similar to a cluster merge, but it is
+ different. In particular, no subsequent characters &mdash;
+ including marks and modifiers &mdash; are affected. They retain
+ their previous cluster values.
+ </para>
+ <para>
+ Level 2 cluster behavior is ultimately less complex than level 0
+ or level 1, but there are several cases for which processing
+ cluster values produced at level 2 may be tricky.
+ </para>
+ <section id="ligatures-with-combining-marks-in-level-2">
+ <title>Ligatures with combining marks in level 2</title>
+ <para>
+ The first example of how HarfBuzz's level 2 cluster behavior
+ can be tricky is when the text to be shaped includes combining
+ marks attached to ligatures.
+ </para>
+ <para>
+ Let us start with an input sequence with the following
+ characters (top row) and initial cluster values (bottom row):
+ </para>
+ <programlisting>
+ A,acute,B,breve,C,circumflex
+ 0,1 ,2,3 ,4,5
+ </programlisting>
+ <para>
+ If the sequence <literal>A,B,C</literal> forms a ligature,
+ then these are the cluster values HarfBuzz will return under
+ the various cluster levels:
+ </para>
+ <para>
+ Level 0:
+ </para>
+ <programlisting>
+ ABC,acute,breve,circumflex
+ 0 ,0 ,0 ,0
+ </programlisting>
+ <para>
+ Level 1:
+ </para>
+ <programlisting>
+ ABC,acute,breve,circumflex
+ 0 ,0 ,0 ,5
+ </programlisting>
+ <para>
+ Level 2:
+ </para>
+ <programlisting>
+ ABC,acute,breve,circumflex
+ 0 ,1 ,3 ,5
+ </programlisting>
+ <para>
+ Making sense of the level 2 result is the hardest for a client
+ program, because there is nothing in the cluster values that
+ indicates that <literal>B</literal> and <literal>C</literal>
+ formed a ligature with <literal>A</literal>.
+ </para>
+ <para>
+ In contrast, the "merged" cluster values of the mark glyphs
+ that are seen in the level 0 and level 1 output are evidence
+ that a ligature substitution took place.
+ </para>
+ </section>
+ <section id="reordering-in-level-2">
+ <title>Reordering in level 2</title>
+ <para>
+ Another example of how HarfBuzz's level 2 cluster behavior
+ can be tricky is when glyphs reorder. Consider an input sequence
+ with the following characters (top row) and initial cluster
+ values (bottom row):
+ </para>
+ <programlisting>
+ A,B,C,D,E
+ 0,1,2,3,4
+ </programlisting>
+ <para>
+ Now imagine <literal>D</literal> moves before
+ <literal>B</literal> in a reordering operation. The cluster
+ values will then be:
+ </para>
+ <programlisting>
+ A,D,B,C,E
+ 0,3,1,2,4
+ </programlisting>
+ <para>
+ Next, if <literal>D</literal> forms a ligature with
+ <literal>B</literal>, the output is:
+ </para>
+ <programlisting>
+ A,DB,C,E
+ 0,3 ,2,4
+ </programlisting>
+ <para>
+ However, in a different scenario, in which the shaping rules
+ of the script instead caused <literal>A</literal> and
+ <literal>B</literal> to form a ligature
+ <emphasis>before</emphasis> the <literal>D</literal> reordered, the
+ result would be:
+ </para>
+ <programlisting>
+ AB,D,C,E
+ 0 ,3,2,4
+ </programlisting>
+ <para>
+ There is no way for a client program to differentiate between
+ these two scenarios based on the cluster values
+ alone. Consequently, client programs that use level 2 might
+ need to undertake additional work in order to manage cursor
+ positioning, text attributes, or other desired features.
+ </para>
+ </section>
+ <section id="other-considerations-in-level-2">
+ <title>Other considerations in level 2</title>
+ <para>
+ There may be other problems encountered with ligatures under
+ level 2, such as if the direction of the text is forced to
+ opposite of its natural direction (for example, Arabic text
+ that is forced into left-to-right directionality). But,
+ generally speaking, these other scenarios are minor corner
+ cases that are too obscure for most client programs to need to
+ worry about.
+ </para>
+ </section>
+ </section>
</chapter>
diff --git a/docs/usermanual-fonts-and-faces.xml b/docs/usermanual-fonts-and-faces.xml
index 7de0f05..5536004 100644
--- a/docs/usermanual-fonts-and-faces.xml
+++ b/docs/usermanual-fonts-and-faces.xml
@@ -1,3 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+ <!ENTITY version SYSTEM "version.xml">
+]>
<chapter id="fonts-and-faces">
<title>Fonts and faces</title>
<section id="using-freetype">
@@ -15,4 +21,4 @@
<para>
</para>
</section>
-</chapter> \ No newline at end of file
+</chapter>
diff --git a/docs/usermanual-getting-started.xml b/docs/usermanual-getting-started.xml
new file mode 100644
index 0000000..cc867e0
--- /dev/null
+++ b/docs/usermanual-getting-started.xml
@@ -0,0 +1,307 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+ <!ENTITY version SYSTEM "version.xml">
+]>
+<chapter id="getting-started">
+ <title>Getting started with HarfBuzz</title>
+ <section>
+ <title>An overview of the HarfBuzz shaping API</title>
+ <para>
+ The core of the HarfBuzz shaping API is the function
+ <function>hb_shape()</function>. This function takes a font, a
+ buffer containing a string of Unicode codepoints and
+ (optionally) a list of font features as its input. It replaces
+ the codepoints in the buffer with the corresponding glyphs from
+ the font, correctly ordered and positioned, and with any of the
+ optional font features applied.
+ </para>
+ <para>
+ In addition to holding the pre-shaping input (the Unicode
+ codepoints that comprise the input string) and the post-shaping
+ output (the glyphs and positions), a HarfBuzz buffer has several
+ properties that affect shaping. The most important are the
+ text-flow direction (e.g., left-to-right, right-to-left,
+ top-to-bottom, or bottom-to-top), the script tag, and the
+ language tag.
+ </para>
+
+ <para>
+ For input string buffers, flags are available to denote when the
+ buffer represents the beginning or end of a paragraph, to
+ indicate whether or not to visibly render Unicode <literal>Default
+ Ignorable</literal> codepoints, and to modify the cluster-merging
+ behavior for the buffer. For shaped output buffers, the
+ individual X and Y offsets and <literal>advances</literal>
+ (the logical dimensions) of each glyph are
+ accessible. HarfBuzz also flags glyphs as
+ <literal>UNSAFE_TO_BREAK</literal> if breaking the string at
+ that glyph (e.g., in a line-breaking or hyphenation process)
+ would require re-shaping the text.
+ </para>
+
+ <para>
+ HarfBuzz also provides methods to compare the contents of
+ buffers, join buffers, normalize buffer contents, and handle
+ invalid codepoints, as well as to determine the state of a
+ buffer (e.g., input codepoints or output glyphs). Buffer
+ lifecycles are managed and all buffers are reference-counted.
+ </para>
+
+ <para>
+ Although the default <function>hb_shape()</function> function is
+ sufficient for most use cases, a variant is also provide that
+ lets you specify which of HarfBuzz's shapers to use on a buffer.
+ </para>
+
+ <para>
+ HarfBuzz can read TrueType fonts, TrueType collections, OpenType
+ fonts, and OpenType collections. Functions are provided to query
+ font objects about metrics, Unicode coverage, available tables and
+ features, and variation selectors. Individual glyphs can also be
+ queried for metrics, variations, and glyph names. OpenType
+ variable fonts are supported, and HarfBuzz allows you to set
+ variation-axis coordinates on font objects.
+ </para>
+
+ <para>
+ HarfBuzz provides glue code to integrate with various other
+ libraries, including FreeType, GObject, and CoreText. Support
+ for integrating with Uniscribe and DirectWrite is experimental
+ at present.
+ </para>
+ </section>
+
+ <section>
+ <title>Terminology</title>
+ <para>
+
+ </para>
+ <variablelist>
+ <?dbfo list-presentation="blocks"?>
+ <varlistentry>
+ <term>script</term>
+ <listitem>
+ <para>
+ In text shaping, a <emphasis>script</emphasis> is a
+ writing system: a set of symbols, rules, and conventions
+ that is used to represent a language or multiple
+ languages.
+ </para>
+ <para>
+ In general computing lingo, the word "script" can also
+ be used to mean an executable program (usually one
+ written in a human-readable programming language). For
+ the sake of clarity, HarfBuzz documents will always use
+ more specific terminology when referring to this
+ meaning, such as "Python script" or "shell script." In
+ all other instances, "script" refers to a writing system.
+ </para>
+ <para>
+ For developers using HarfBuzz, it is important to note
+ the distinction between a script and a language. Most
+ scripts are used to write a variety of different
+ languages, and many languages may be written in more
+ than one script.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>shaper</term>
+ <listitem>
+ <para>
+ In HarfBuzz, a <emphasis>shaper</emphasis> is a
+ handler for a specific script-shaping model. HarfBuzz
+ implements separate shapers for Indic, Arabic, Thai and
+ Lao, Khmer, Myanmar, Tibetan, Hangul, Hebrew, the
+ Universal Shaping Engine (USE), and a default shaper for
+ non-complex scripts.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>cluster</term>
+ <listitem>
+ <para>
+ In text shaping, a <emphasis>cluster</emphasis> is a
+ sequence of codepoints that must be treated as an
+ indivisible unit. Clusters can include code-point
+ sequences that form a ligature or base-and-mark
+ sequences. Tracking and preserving clusters is important
+ when shaping operations might separate or reorder
+ code points.
+ </para>
+ <para>
+ HarfBuzz provides three cluster
+ <emphasis>levels</emphasis> that implement different
+ approaches to the problem of preserving clusters during
+ shaping operations.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>grapheme</term>
+ <listitem>
+ <para>
+ In linguistics, a <emphasis>grapheme</emphasis> is one
+ of the indivisible units that make up a writing system or
+ script. Often, graphemes are individual symbols (letters,
+ numbers, punctuation marks, logograms, etc.) but,
+ depending on the writing system, a particular grapheme
+ might correspond to a sequence of several Unicode code
+ points.
+ </para>
+ <para>
+ In practice, HarfBuzz and other text-shaping engines
+ are not generally concerned with graphemes. However, it
+ is important for developers using HarfBuzz to recognize
+ that there is a difference between graphemes and shaping
+ clusters (see above). The two concepts may overlap
+ frequently, but there is no guarantee that they will be
+ identical.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>syllable</term>
+ <listitem>
+ <para>
+ In linguistics, a <emphasis>syllable</emphasis> is an
+ a sequence of sounds that makes up a building block of a
+ particular language. Every language has its own set of
+ rules describing what constitutes a valid syllable.
+ </para>
+ <para>
+ For text-shaping purposes, the various definitions of
+ "syllable" are important because script-specific shaping
+ operations may be applied at the syllable level. For
+ example, a reordering rule might specify that a vowel
+ mark be reordered to the beginning of the syllable.
+ </para>
+ <para>
+ Syllables will consist of one or more Unicode code
+ points. The definition of a syllable for a particular
+ writing system might correspond to how HarfBuzz
+ identifies clusters (see above) for the same writing
+ system. However, it is important for developers using
+ HarfBuzz to recognize that there is a difference between
+ syllables and shaping clusters. The two concepts may
+ overlap frequently, but there is no guarantee that they
+ will be identical.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </section>
+
+
+ <section>
+ <title>A simple shaping example</title>
+
+ <para>
+ Below is the simplest HarfBuzz shaping example possible.
+ </para>
+ <orderedlist numeration="arabic">
+ <listitem>
+ <para>
+ Create a buffer and put your text in it.
+ </para>
+ </listitem>
+ </orderedlist>
+ <programlisting language="C">
+ #include &lt;hb.h&gt;
+ hb_buffer_t *buf;
+ buf = hb_buffer_create();
+ hb_buffer_add_utf8(buf, text, -1, 0, -1);
+ </programlisting>
+ <orderedlist numeration="arabic">
+ <listitem override="2">
+ <para>
+ Guess the script, language and direction of the buffer.
+ </para>
+ </listitem>
+ </orderedlist>
+ <programlisting language="C">
+ hb_buffer_set_direction(buf, HB_DIRECTION_LTR);
+ hb_buffer_set_script(buf, HB_SCRIPT_LATIN);
+ hb_buffer_set_language(buf, hb_language_from_string("en", -1));
+ </programlisting>
+ <orderedlist numeration="arabic">
+ <listitem override="3">
+ <para>
+ Create a face and a font, using FreeType for now.
+ </para>
+ </listitem>
+ </orderedlist>
+ <programlisting language="C">
+ #include &lt;hb-ft.h&gt;
+ FT_New_Face(ft_library, font_path, index, &amp;face);
+ FT_Set_Char_Size(face, 0, 1000, 0, 0);
+ hb_font_t *font = hb_ft_font_create(face);
+ </programlisting>
+ <orderedlist numeration="arabic">
+ <listitem override="4">
+ <para>
+ Shape!
+ </para>
+ </listitem>
+ </orderedlist>
+ <programlisting>
+ hb_shape(font, buf, NULL, 0);
+ </programlisting>
+ <orderedlist numeration="arabic">
+ <listitem override="5">
+ <para>
+ Get the glyph and position information.
+ </para>
+ </listitem>
+ </orderedlist>
+ <programlisting language="C">
+ hb_glyph_info_t *glyph_info = hb_buffer_get_glyph_infos(buf, &amp;glyph_count);
+ hb_glyph_position_t *glyph_pos = hb_buffer_get_glyph_positions(buf, &amp;glyph_count);
+ </programlisting>
+ <orderedlist numeration="arabic">
+ <listitem override="6">
+ <para>
+ Iterate over each glyph.
+ </para>
+ </listitem>
+ </orderedlist>
+ <programlisting language="C">
+ for (i = 0; i &lt; glyph_count; ++i) {
+ glyphid = glyph_info[i].codepoint;
+ x_offset = glyph_pos[i].x_offset / 64.0;
+ y_offset = glyph_pos[i].y_offset / 64.0;
+ x_advance = glyph_pos[i].x_advance / 64.0;
+ y_advance = glyph_pos[i].y_advance / 64.0;
+ draw_glyph(glyphid, cursor_x + x_offset, cursor_y + y_offset);
+ cursor_x += x_advance;
+ cursor_y += y_advance;
+ }
+ </programlisting>
+ <orderedlist numeration="arabic">
+ <listitem override="7">
+ <para>
+ Tidy up.
+ </para>
+ </listitem>
+ </orderedlist>
+ <programlisting language="C">
+ hb_buffer_destroy(buf);
+ hb_font_destroy(hb_ft_font);
+ </programlisting>
+
+ <para>
+ This example shows enough to get us started using HarfBuzz. In
+ the sections that follow, we will use the remainder of
+ HarfBuzz's API to refine and extend the example and improve its
+ text-shaping capabilities.
+ </para>
+ </section>
+</chapter>
diff --git a/docs/usermanual-glyph-information.xml b/docs/usermanual-glyph-information.xml
index ca674c0..78f06c7 100644
--- a/docs/usermanual-glyph-information.xml
+++ b/docs/usermanual-glyph-information.xml
@@ -1,3 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+ <!ENTITY version SYSTEM "version.xml">
+]>
<sect1 id="glyph-information">
<title>Glyph information</title>
<sect2 id="names-and-numbers">
@@ -5,4 +11,4 @@
<para>
</para>
</sect2>
-</sect1> \ No newline at end of file
+</sect1>
diff --git a/docs/usermanual-hello-harfbuzz.xml b/docs/usermanual-hello-harfbuzz.xml
deleted file mode 100644
index 716b2f2..0000000
--- a/docs/usermanual-hello-harfbuzz.xml
+++ /dev/null
@@ -1,183 +0,0 @@
-<chapter id="hello-harfbuzz">
- <title>Hello, HarfBuzz</title>
- <para>
- Here's the simplest HarfBuzz that can possibly work. We will improve
- it later.
- </para>
- <orderedlist numeration="arabic">
- <listitem>
- <para>
- Create a buffer and put your text in it.
- </para>
- </listitem>
- </orderedlist>
- <programlisting language="C">
- #include &lt;hb.h&gt;
- hb_buffer_t *buf;
- buf = hb_buffer_create();
- hb_buffer_add_utf8(buf, text, strlen(text), 0, strlen(text));
-</programlisting>
- <orderedlist numeration="arabic">
- <listitem override="2">
- <para>
- Guess the script, language and direction of the buffer.
- </para>
- </listitem>
- </orderedlist>
- <programlisting language="C">
- hb_buffer_guess_segment_properties(buf);
-</programlisting>
- <orderedlist numeration="arabic">
- <listitem override="3">
- <para>
- Create a face and a font, using FreeType for now.
- </para>
- </listitem>
- </orderedlist>
- <programlisting language="C">
- #include &lt;hb-ft.h&gt;
- FT_New_Face(ft_library, font_path, index, &amp;face)
- hb_font_t *font = hb_ft_font_create(face);
-</programlisting>
- <orderedlist numeration="arabic">
- <listitem override="4">
- <para>
- Shape!
- </para>
- </listitem>
- </orderedlist>
- <programlisting>
- hb_shape(font, buf, NULL, 0);
-</programlisting>
- <orderedlist numeration="arabic">
- <listitem override="5">
- <para>
- Get the glyph and position information.
- </para>
- </listitem>
- </orderedlist>
- <programlisting language="C">
- hb_glyph_info_t *glyph_info = hb_buffer_get_glyph_infos(buf, &amp;glyph_count);
- hb_glyph_position_t *glyph_pos = hb_buffer_get_glyph_positions(buf, &amp;glyph_count);
-</programlisting>
- <orderedlist numeration="arabic">
- <listitem override="6">
- <para>
- Iterate over each glyph.
- </para>
- </listitem>
- </orderedlist>
- <programlisting language="C">
- for (i = 0; i &lt; glyph_count; ++i) {
- glyphid = glyph_info[i].codepoint;
- x_offset = glyph_pos[i].x_offset / 64.0;
- y_offset = glyph_pos[i].y_offset / 64.0;
- x_advance = glyph_pos[i].x_advance / 64.0;
- y_advance = glyph_pos[i].y_advance / 64.0;
- draw_glyph(glyphid, cursor_x + x_offset, cursor_y + y_offset);
- cursor_x += x_advance;
- cursor_y += y_advance;
- }
-</programlisting>
- <orderedlist numeration="arabic">
- <listitem override="7">
- <para>
- Tidy up.
- </para>
- </listitem>
- </orderedlist>
- <programlisting language="C">
- hb_buffer_destroy(buf);
- hb_font_destroy(hb_ft_font);
-</programlisting>
- <section id="what-harfbuzz-doesnt-do">
- <title>What HarfBuzz doesn't do</title>
- <para>
- The code above will take a UTF8 string, shape it, and give you the
- information required to lay it out correctly on a single
- horizontal (or vertical) line using the font provided. That is the
- extent of HarfBuzz's responsibility.
- </para>
- <para>
- If you are implementing a text layout engine you may have other
- responsibilities, that HarfBuzz will not help you with:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- HarfBuzz won't help you with bidirectionality. If you want to
- lay out text with mixed Hebrew and English, you will need to
- ensure that the buffer provided to HarfBuzz has those
- characters in the correct layout order. This will be different
- from the logical order in which the Unicode text is stored. In
- other words, the user will hit the keys in the following
- sequence:
- </para>
- <programlisting>
-A B C [space] ג ב א [space] D E F
- </programlisting>
- <para>
- but will expect to see in the output:
- </para>
- <programlisting>
-ABC אבג DEF
- </programlisting>
- <para>
- This reordering is called <emphasis>bidi processing</emphasis>
- (&quot;bidi&quot; is short for bidirectional), and there's an
- algorithm as an annex to the Unicode Standard which tells you how
- to reorder a string from logical order into presentation order.
- Before sending your string to HarfBuzz, you may need to apply the
- bidi algorithm to it. Libraries such as ICU and fribidi can do
- this for you.
- </para>
- </listitem>
- <listitem>
- <para>
- HarfBuzz won't help you with text that contains different font
- properties. For instance, if you have the string &quot;a
- <emphasis>huge</emphasis> breakfast&quot;, and you expect
- &quot;huge&quot; to be italic, you will need to send three
- strings to HarfBuzz: <literal>a</literal>, in your Roman font;
- <literal>huge</literal> using your italic font; and
- <literal>breakfast</literal> using your Roman font again.
- Similarly if you change font, font size, script, language or
- direction within your string, you will need to shape each run
- independently and then output them independently. HarfBuzz
- expects to shape a run of characters sharing the same
- properties.
- </para>
- </listitem>
- <listitem>
- <para>
- HarfBuzz won't help you with line breaking, hyphenation or
- justification. As mentioned above, it lays out the string
- along a <emphasis>single line</emphasis> of, notionally,
- infinite length. If you want to find out where the potential
- word, sentence and line break points are in your text, you
- could use the ICU library's break iterator functions.
- </para>
- <para>
- HarfBuzz can tell you how wide a shaped piece of text is, which is
- useful input to a justification algorithm, but it knows nothing
- about paragraphs, lines or line lengths. Nor will it adjust the
- space between words to fit them proportionally into a line. If you
- want to layout text in paragraphs, you will probably want to send
- each word of your text to HarfBuzz to determine its shaped width
- after glyph substitutions, then work out how many words will fit
- on a line, and then finally output each word of the line separated
- by a space of the correct size to fully justify the paragraph.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- As a layout engine implementor, HarfBuzz will help you with the
- interface between your text and your font, and that's something
- that you'll need - what you then do with the glyphs that your font
- returns is up to you. The example we saw above enough to get us
- started using HarfBuzz. Now we are going to use the remainder of
- HarfBuzz's API to refine that example and improve our text shaping
- capabilities.
- </para>
- </section>
-</chapter> \ No newline at end of file
diff --git a/docs/usermanual-install-harfbuzz.xml b/docs/usermanual-install-harfbuzz.xml
index 899cc5b..a885d00 100644
--- a/docs/usermanual-install-harfbuzz.xml
+++ b/docs/usermanual-install-harfbuzz.xml
@@ -1,70 +1,430 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+ <!ENTITY version SYSTEM "version.xml">
+]>
<chapter id="install-harfbuzz">
- <title>Install HarfBuzz</title>
+ <title>Installing HarfBuzz</title>
+
<section id="download">
- <title id="download.title">Download</title>
+ <title id="download.title">Downloading HarfBuzz</title>
<para>
- For tarball releases of HarfBuzz, look
- <ulink url="http://www.freedesktop.org/software/harfbuzz/release/">here</ulink>.
- At the same place you will
- also find Win32 binary bundles that include libharfbuzz DLL, hb-view.exe,
- hb-shape.exe, and all dependencies.
+ The HarfBuzz source code is hosted at <ulink
+ url="https://github.com/harfbuzz/harfbuzz">github.com/harfbuzz/harfbuzz</ulink>. The
+ same source tree is also available at the
+ <ulink
+ url="http://cgit.freedesktop.org/harfbuzz/">Freedesktop.org</ulink>
+ site.
</para>
<para>
- The canonical source tree is available
- <ulink url="http://cgit.freedesktop.org/harfbuzz/">here</ulink>.
- Also available on <ulink url="https://github.com/harfbuzz/harfbuzz">github</ulink>.
+ Tarball releases and Win32 binary bundles (which include the
+ libharfbuzz DLL, hb-view.exe, hb-shape.exe, and all
+ dependencies) of HarfBuzz can be downloaded from <ulink
+ url="https://github.com/harfbuzz/harfbuzz">github.com/harfbuzz/harfbuzz/releases</ulink>
+ or from
+ <ulink url="http://www.freedesktop.org/software/harfbuzz/release/">Freedesktop.org</ulink>.
</para>
<para>
- The API that comes with <filename class='headerfile'>hb.h</filename> will
- not change incompatibly. Other, peripheral, headers are more likely to go
- through minor modifications, but again, will do our best to never change
- API in an incompatible way. We will never break the ABI.
+ Release notes are posted with each new release to provide an
+ overview of the changes. The project <ulink url="https://github.com/harfbuzz/harfbuzz/issues">tracks bug
+ reports and other issues</ulink> on GitHub. Discussion and
+ questions are welcome on the <ulink
+ url="http://freedesktop.org/mailman/listinfo/harfbuzz/">HarfBuzz
+ mailing list</ulink>.
</para>
<para>
- If you are not sure whether Pango or HarfBuzz is right for you, read
- <ulink url="http://mces.blogspot.in/2009/11/pango-vs-harfbuzz.html">this</ulink>.
+ The API included in the <filename
+ class='headerfile'>hb.h</filename> file will not change in a
+ compatibility-breaking way in any release. However, other,
+ peripheral headers are more likely to go through minor
+ modifications. We will do our best to never change APIs in an
+ incompatible way. We will <emphasis>never</emphasis> break the ABI.
</para>
</section>
+
<section id="building">
- <title>Building</title>
+ <title>Building HarfBuzz</title>
+
+ <section id="building.linux">
+ <title>Building on Linux</title>
<para>
- On Linux, install the development packages for FreeType, Cairo, and GLib.
- For example, on Ubuntu / Debian, you would do:
- <programlisting>
-<command>sudo apt-get install</command> <package>gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev</package>
- </programlisting>
- whereas on Fedora, RHEL, CentOS, and other Red Hat based systems you would do:
+ <emphasis>(1)</emphasis> To build HarfBuzz on Linux, you must first install the
+ development packages for FreeType, Cairo, and GLib. The exact
+ commands required for this step will vary depending on
+ the Linux distribution you use.
+ </para>
+ <para>
+ For example, on an Ubuntu or Debian system, you would run:
<programlisting>
-<command>sudo yum install</command> <package>gcc gcc-c++ freetype-devel glib2-devel cairo-devel</package>
+ <command>sudo apt install</command> <package>gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev</package>
</programlisting>
- or using MacPorts:
+ On Fedora, RHEL, CentOS, or other Red-Hat&ndash;based systems, you would run:
<programlisting>
-<command>sudo port install</command> <package>freetype glib2 cairo</package>
+ <command>sudo yum install</command> <package>gcc gcc-c++ freetype-devel glib2-devel cairo-devel</package>
</programlisting>
+
+ </para>
+
+ <para>
+ <emphasis>(2)</emphasis> The next step depends on whether you
+ are building from the source in a downloaded release tarball or
+ from the source directly from the git repository.
+ </para>
+ <para>
+ <emphasis>(2)(a)</emphasis> If you downloaded the HarfBuzz
+ source code in a tarball, you can now extract the source.
+ </para>
+ <para>
+ From a shell in the top-level directory of the extracted source
+ code, you can run <command>./configure</command> followed by
+ <command>make</command> as with any other standard package.
+ </para>
+ <para>
+ This should leave you with a shared
+ library in the <filename>src/</filename> directory, and a few
+ utility programs including <command>hb-view</command> and
+ <command>hb-shape</command> under the <filename>util/</filename>
+ directory.
</para>
<para>
- If you are using a tarball, you can now proceed to running
- <command>configure</command> and <command>make</command> as with any
- other standard package. That should leave you with a shared library in
- <filename>src/</filename>, and a few utility programs including hb-view
- and hb-shape under <filename>util/</filename>.
+ <emphasis>(2)(b)</emphasis> If you are building from the source in the HarfBuzz git
+ repository, rather than installing from a downloaded tarball
+ release, then you must install two more auxiliary tools before you
+ can build for the first time: <package>pkg-config</package> and
+ <ulink url="http://www.complang.org/ragel/">ragel</ulink>.
</para>
<para>
- If you are bootstrapping from git, you need a few more tools before you
- can run <filename>autogen.sh</filename> for the first time. Namely,
- pkg-config and <ulink url="http://www.complang.org/ragel/">ragel</ulink>.
- Again, on Ubuntu / Debian:
+ On Ubuntu or Debian, run:
<programlisting>
-<command>sudo apt-get install</command> <package>autoconf automake libtool pkg-config ragel gtk-doc-tools</package>
+ <command>sudo apt-get install</command> <package>autoconf automake libtool pkg-config ragel gtk-doc-tools</package>
</programlisting>
- and on Fedora, RHEL, CentOS:
+ On Fedora, RHEL, CentOS, run:
<programlisting>
-<command>sudo yum install</command> <package>autoconf automake libtool pkgconfig ragel gtk-doc</package>
+ <command>sudo yum install</command> <package>autoconf automake libtool pkgconfig ragel gtk-doc</package>
</programlisting>
- or using MacPorts:
+
+ </para>
+ <para>
+ With <package>pkg-config</package> and <package>ragel</package>
+ installed, you can now run <command>./autogen.sh</command>,
+ followed by <command>./configure</command> and
+ <command>make</command> to build HarfBuzz.
+ </para>
+ </section>
+
+
+ <section id="building.windows">
+ <title>Building on Windows</title>
+
+ <para>
+ On Windows, consider using Microsoft's free <ulink
+ url="https://github.com/Microsoft/vcpkg">vcpkg</ulink> utility
+ to build HarfBuzz, its dependencies, and other open-source
+ libraries.
+ </para>
+ <para>
+ If you need to build HarfBuzz from source, first put the
+ <package>ragel</package> binary on your
+ <literal>PATH</literal>, then follow the appveyor CI cmake
+ <ulink
+ url="https://github.com/harfbuzz/harfbuzz/blob/master/appveyor.yml">build
+ instructions</ulink>.
+ </para>
+ </section>
+
+
+ <section id="building.macos">
+ <title>Building on macOS</title>
+
+ <para>
+ There are two ways to build HarfBuzz on Mac systems: MacPorts
+ and Homebrew. The process is similar to the process used on a
+ Linux system.
+ </para>
+ <para>
+ <emphasis>(1)</emphasis> You must first install the
+ development packages for FreeType, Cairo, and GLib. If you are
+ using MacPorts, you should run:
<programlisting>
-<command>sudo port install</command> <package>autoconf automake libtool pkgconfig ragel gtk-doc</package>
+ <command>sudo port install</command> <package>freetype glib2 cairo</package>
</programlisting>
- </para>
+ </para>
+ <para>
+ If you are using Homebrew, you should run:
+ <programlisting>
+ <command>brew install</command> <package>freetype glib cairo</package>
+ </programlisting>
+ </para>
+ <para>
+ <emphasis>(2)</emphasis> The next step depends on whether you are building from the
+ source in a downloaded release tarball or from the source directly
+ from the git repository.
+ </para>
+ <para>
+ <emphasis>(2)(a)</emphasis> If you are installing HarfBuzz
+ from a downloaded tarball release, extract the tarball and
+ open a Terminal in the extracted source-code directory. Run:
+ <programlisting>
+ <command>./configure</command>
+ </programlisting>
+ followed by:
+ <programlisting>
+ <command>make</command>
+ </programlisting>
+ to build HarfBuzz.
+ </para>
+ <para>
+ <emphasis>(2)(b)</emphasis> Alternatively, if you are building
+ HarfBuzz from the source in the HarfBuzz git repository, then
+ you must install several built-time dependencies before
+ proceeding.
+ </para>
+ <para>If you are
+ using MacPorts, you should run:
+ <programlisting>
+ <command>sudo port install</command> <package>autoconf automake libtool pkgconfig ragel gtk-doc</package>
+ </programlisting>
+ to install the build dependencies.
+ </para>
+ <para>If you are using Homebrew, you should run:
+ <programlisting>
+ <command>brew install</command> <package>autoconf automake libtool pkgconfig ragel gtk-doc</package>
+ </programlisting>
+ Finally, you can run:
+ <programlisting>
+ <command>./autogen.sh</command>
+ </programlisting>
+ </para>
+ <para>
+ <emphasis>(3)</emphasis> You can now build HarfBuzz (on either
+ a MacPorts or a Homebrew system) by running:
+ <programlisting>
+ <command>./configure</command>
+ </programlisting>
+ followed by:
+ <programlisting>
+ <command>make</command>
+ </programlisting>
+ </para>
+ <para>
+ This should leave you with a shared
+ library in the <filename>src/</filename> directory, and a few
+ utility programs including <command>hb-view</command> and
+ <command>hb-shape</command> under the <filename>util/</filename>
+ directory.
+ </para>
+
+ </section>
+
+ <section id="configuration">
+ <title>Configuration options</title>
+
+ <para>
+ The instructions in the "Building HarfBuzz" section will build
+ the source code under its default configuration. If needed,
+ the following additional configuration options are available.
+ </para>
+
+ <variablelist>
+ <?dbfo list-presentation="blocks"?>
+ <varlistentry>
+ <term><command>--with-libstdc++</command></term>
+ <listitem>
+ <para>
+ Allow linking with libstdc++. <emphasis>(Default = no)</emphasis>
+ </para>
+ <para>
+ This option enables or disables linking HarfBuzz to the
+ system's libstdc++ library.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>--with-glib</command></term>
+ <listitem>
+ <para>
+ Use <ulink url="https://developer.gnome.org/glib/">GLib</ulink>. <emphasis>(Default = auto)</emphasis>
+ </para>
+ <para>
+ This option enables or disables usage of the GLib
+ library. The default setting is to check for the
+ presence of GLib and, if it is found, build with
+ GLib support. GLib is native to GNU/Linux systems but is
+ available on other operating system as well.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>--with-gobject</command></term>
+ <listitem>
+ <para>
+ Use <ulink url="https://developer.gnome.org/gobject/stable/">GObject</ulink>. <emphasis>(Default = no)</emphasis>
+ </para>
+ <para>
+ This option enables or disables usage of the GObject
+ library. The default setting is to check for the
+ presence of GObject and, if it is found, build with
+ GObject support. GObject is native to GNU/Linux systems but is
+ available on other operating system as well.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>--with-cairo</command></term>
+ <listitem>
+ <para>
+ Use <ulink url="https://cairographics.org/">Cairo</ulink>. <emphasis>(Default = auto)</emphasis>
+ </para>
+ <para>
+ This option enables or disables usage of the Cairo
+ graphics-rendering library. The default setting is to
+ check for the presence of Cairo and, if it is found,
+ build with Cairo support.
+ </para>
+ <para>
+ Note: Cairo is used only by the HarfBuzz
+ command-line utilities, and not by the HarfBuzz library.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>--with-fontconfig</command></term>
+ <listitem>
+ <para>
+ Use <ulink url="https://www.freedesktop.org/wiki/Software/fontconfig/">Fontconfig</ulink>. <emphasis>(Default = auto)</emphasis>
+ </para>
+ <para>
+ This option enables or disables usage of the Fontconfig
+ library, which provides font-matching functions and
+ provides access to font properties. The default setting
+ is to check for the presence of Fontconfig and, if it is
+ found, build with Fontconfig support.
+ </para>
+ <para>
+ Note: Fontconfig is used only by the HarfBuzz
+ command-line utilities, and not by the HarfBuzz library.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>--with-icu</command></term>
+ <listitem>
+ <para>
+ Use the <ulink url="http://site.icu-project.org/home">ICU</ulink> library. <emphasis>(Default = auto)</emphasis>
+ </para>
+ <para>
+ This option enables or disables usage of the
+ <emphasis>International Components for
+ Unicode</emphasis> (ICU) library, which provides access
+ to Unicode Character Database (UCD) properties as well
+ as normalization and conversion functions. The default
+ setting is to check for the presence of ICU and, if it
+ is found, build with ICU support.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>--with-ucdn</command></term>
+ <listitem>
+ <para>
+ Use HarfBuzz's <ulink url="https://github.com/harfbuzz/harfbuzz/tree/master/src/hb-ucdn">built-in UCDN library</ulink>. <emphasis>(Default = auto)</emphasis>
+ </para>
+ <para>
+ The HarfBuzz source tree includes a <emphasis>Unicode
+ Database and Normalization</emphasis> (UCDN) library
+ that provides access to basic character properties in
+ the Unicode Character Database (UCD) as well as low-level
+ normalization functions. HarfBuzz can be built without
+ this UCDN support if the usage of a different UCDN
+ library is desired.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>--with-graphite2</command></term>
+ <listitem>
+ <para>
+ Use the <ulink url="http://graphite.sil.org/">Graphite2</ulink> library. <emphasis>(Default = no)</emphasis>
+ </para>
+ <para>
+ This option enables or disables usage of the Graphite2
+ library, which provides support for the Graphite shaping
+ model.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>--with-freetype</command></term>
+ <listitem>
+ <para>
+ Use the <ulink url="https://www.freetype.org/">FreeType</ulink> library. <emphasis>(Default = auto)</emphasis>
+ </para>
+ <para>
+ This option enables or disables usage of the FreeType
+ font-rendering library. The default setting is to check for the
+ presence of FreeType and, if it is found, build with
+ FreeType support.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>--with-uniscribe</command></term>
+ <listitem>
+ <para>
+ Use the <ulink
+ url="https://docs.microsoft.com/en-us/windows/desktop/intl/uniscribe">Uniscribe</ulink>
+ library (experimental). <emphasis>(Default = no)</emphasis>
+ </para>
+ <para>
+ This option enables or disables usage of the Uniscribe
+ font-rendering library. Uniscribe is available on
+ Windows systems. Uniscribe support is used only for
+ testing purposes and does not need to be enabled for
+ HarfBuzz to run on Windows systems.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>--with-directwrite</command></term>
+ <listitem>
+ <para>
+ Use the <ulink url="https://docs.microsoft.com/en-us/windows/desktop/directwrite/direct-write-portal">DirectWrite</ulink> library (experimental). <emphasis>(Default = no)</emphasis>
+ </para>
+ <para>
+ This option enables or disables usage of the DirectWrite
+ font-rendering library. DirectWrite is available on
+ Windows systems. DirectWrite support is used only for
+ testing purposes and does not need to be enabled for
+ HarfBuzz to run on Windows systems.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><command>--with-coretext</command></term>
+ <listitem>
+ <para>
+ Use the <ulink url="https://developer.apple.com/documentation/coretext">CoreText</ulink> library. <emphasis>(Default = no)</emphasis>
+ </para>
+ <para>
+ This option enables or disables usage of the CoreText
+ library. CoreText is available on macOS and iOS systems.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+
</section>
</chapter>
diff --git a/docs/usermanual-opentype-features.xml b/docs/usermanual-opentype-features.xml
index 470bab8..51ff55a 100644
--- a/docs/usermanual-opentype-features.xml
+++ b/docs/usermanual-opentype-features.xml
@@ -1,3 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+ <!ENTITY version SYSTEM "version.xml">
+]>
<chapter id="shaping-and-shape-plans">
<title>Shaping and shape plans</title>
<section id="opentype-features">
@@ -10,4 +16,4 @@
<para>
</para>
</section>
-</chapter> \ No newline at end of file
+</chapter>
diff --git a/docs/usermanual-shaping-concepts.xml b/docs/usermanual-shaping-concepts.xml
new file mode 100644
index 0000000..db4e309
--- /dev/null
+++ b/docs/usermanual-shaping-concepts.xml
@@ -0,0 +1,375 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+ <!ENTITY version SYSTEM "version.xml">
+]>
+<chapter id="shaping-concepts">
+ <title>Shaping concepts</title>
+ <section id="text-shaping-concepts">
+ <title>Text shaping</title>
+ <para>
+ Text shaping is the process of transforming a sequence of Unicode
+ codepoints that represent individual characters (letters,
+ diacritics, tone marks, numbers, symbols, etc.) into the
+ orthographically and linguistically correct two-dimensional layout
+ of glyph shapes taken from a specified font.
+ </para>
+ <para>
+ For some writing systems (or <emphasis>scripts</emphasis>) and
+ languages, the process is simple, requiring the shaper to do
+ little more than advance the horizontal position forward by the
+ correct amount for each successive glyph.
+ </para>
+ <para>
+ But, for <emphasis>complex scripts</emphasis>, any combination of
+ several shaping operations may be required, and the rules for how
+ and when they are applied vary from script to script. HarfBuzz and
+ other shaping engines implement these rules.
+ </para>
+ <para>
+ The exact rules and necessary operations for a particular script
+ constitute a shaping <emphasis>model</emphasis>. OpenType
+ specifies a set of shaping models that covers all of
+ Unicode. Other shaping models are available, however, including
+ Graphite and Apple Advanced Typography (AAT).
+ </para>
+ </section>
+
+ <section id="complex-scripts">
+ <title>Complex scripts</title>
+ <para>
+ In text-shaping terminology, scripts are generally classified as
+ either <emphasis>complex</emphasis> or <emphasis>non-complex</emphasis>.
+ </para>
+ <para>
+ Complex scripts are those for which transforming the input
+ sequence into the final layout requires some combination of
+ operations&mdash;such as context-dependent substitutions,
+ context-dependent mark positioning, glyph-to-glyph joining,
+ glyph reordering, or glyph stacking.
+ </para>
+ <para>
+ In some complex scripts, the shaping rules require that a text
+ run be divided into syllables before the operations can be
+ applied. Other complex scripts may apply shaping operations over
+ entire words or over the entire text run, with no subdivision
+ required.
+ </para>
+ <para>
+ Non-complex scripts, by definition, do not require these
+ operations. However, correctly shaping a text run in a
+ non-complex script may still involve Unicode normalization,
+ ligature substitutions, mark positioning, kerning, and applying
+ other font features. The key difference is that a text run in a
+ non-complex script can be processed sequentially and in the same
+ order as the input sequence of Unicode codepoints, without
+ requiring an analysis stage.
+ </para>
+ </section>
+
+ <section id="shaping-operations">
+ <title>Shaping operations</title>
+ <para>
+ Shaping a complex-script text run involves transforming the
+ input sequence of Unicode codepoints with some combination of
+ operations that is specified in the shaping model for the
+ script.
+ </para>
+ <para>
+ The specific conditions that trigger a given operation for a
+ text run varies from script to script, as do the order that the
+ operations are performed in and which codepoints are
+ affected. However, the same general set of shaping operations is
+ common to all of the complex-script shaping models.
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ A <emphasis>reordering</emphasis> operation moves a glyph
+ from its original ("logical") position in the sequence to
+ some other ("visual") position.
+ </para>
+ <para>
+ The shaping model for a given complex script might involve
+ more than one reordering step.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ A <emphasis>joining</emphasis> operation replaces a glyph
+ with an alternate form that is designed to connect with one
+ or more of the adjacent glyphs in the sequence.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ A contextual <emphasis>substitution</emphasis> operation
+ replaces either a single glyph or a subsequence of several
+ glyphs with an alternate glyph. This substitution is
+ performed when the original glyph or subsequence of glyphs
+ occurs in a specified position with respect to the
+ surrounding sequence. For example, one substitution might be
+ performed only when the target glyph is the first glyph in
+ the sequence, while another substitution is performed only
+ when a different target glyph occurs immediately after a
+ particular string pattern.
+ </para>
+ <para>
+ The shaping model for a given complex script might involve
+ multiple contextual-substitution operations, each applying
+ to different target glyphs and patterns, and which are
+ performed in separate steps.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ A contextual <emphasis>positioning</emphasis> operation
+ moves the horizontal and/or vertical position of a
+ glyph. This positioning move is performed when the glyph
+ occurs in a specified position with respect to the
+ surrounding sequence.
+ </para>
+ <para>
+ Many contextual positioning operations are used to place
+ <emphasis>mark</emphasis> glyphs (such as diacritics, vowel
+ signs, and tone markers) with respect to
+ <emphasis>base</emphasis> glyphs. However, some complex
+ scripts may use contextual positioning operations to
+ correctly place base glyphs as well, such as
+ when the script uses <emphasis>stacking</emphasis> characters.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </section>
+
+ <section id="unicode-character-categories">
+ <title>Unicode character categories</title>
+ <para>
+ Shaping models are typically specified with respect to how
+ scripts are defined in the Unicode standard.
+ </para>
+ <para>
+ Every codepoint in the Unicode Character Database (UCD) is
+ assigned a <emphasis>Unicode General Category</emphasis> (UGC),
+ which provides the most fundamental information about the
+ codepoint: whether the codepoint represents a
+ <emphasis>Letter</emphasis>, a <emphasis>Mark</emphasis>, a
+ <emphasis>Number</emphasis>, <emphasis>Punctuation</emphasis>, a
+ <emphasis>Symbol</emphasis>, a <emphasis>Separator</emphasis>,
+ or something else (<emphasis>Other</emphasis>).
+ </para>
+ <para>
+ These UGC properties are "Major" categories. Each codepoint is
+ further assigned to a "minor" category within its Major
+ category, such as "Letter, uppercase" (<literal>Lu</literal>) or
+ "Letter, modifier" (<literal>Lm</literal>).
+ </para>
+ <para>
+ Shaping models are concerned primarily with Letter and Mark
+ codepoints. The minor categories of Mark codepoints are
+ particularly important for shaping. Marks can be nonspacing
+ (<literal>Mn</literal>), spacing combining
+ (<literal>Mc</literal>), or enclosing (<literal>Me</literal>).
+ </para>
+ <para>
+ In addition to the UGC property, codepoints in the Indic and
+ Southeast Asian scripts are also assigned
+ <emphasis>Unicode Indic Syllabic Category</emphasis> (UISC) and
+ <emphasis>Unicode Indic Positional Category</emphasis> (UIPC)
+ properties that provide more detailed information needed for
+ shaping.
+ </para>
+ <para>
+ The UISC property sub-categorizes Letters and Marks according to
+ common script-shaping behaviors. For example, UISC distinguishes
+ between consonant letters, vowel letters, and vowel marks. The
+ UIPC property sub-categorizes Mark codepoints by the relative visual
+ position that they occupy (above, below, right, left, or in
+ multiple positions).
+ </para>
+ <para>
+ Some complex scripts require that the text run be split into
+ syllables. What constitutes a valid syllable in these
+ scripts is specified in regular expressions, formed from the
+ Letter and Mark codepoints, that take the UISC and UIPC
+ properties into account.
+ </para>
+
+ </section>
+
+ <section id="text-runs">
+ <title>Text runs</title>
+ <para>
+ Real-world text usually contains codepoints from a mixture of
+ different Unicode scripts (including punctuation, numbers, symbols,
+ white-space characters, and other codepoints that do not belong
+ to any script). Real-world text may also be marked up with
+ formatting that changes font properties (including the font,
+ font style, and font size).
+ </para>
+ <para>
+ For shaping purposes, all real-world text streams must be first
+ segmented into runs that have a uniform set of properties.
+ </para>
+ <para>
+ In particular, shaping models always assume that every codepoint
+ in a text run has the same <emphasis>direction</emphasis>,
+ <emphasis>script</emphasis> tag, and
+ <emphasis>language</emphasis> tag.
+ </para>
+ </section>
+
+ <section id="opentype-shaping-models">
+ <title>OpenType shaping models</title>
+ <para>
+ OpenType provides shaping models for the following scripts:
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ The <emphasis>default</emphasis> shaping model handles all
+ non-complex scripts, and may also be used as a fallback for
+ handling unrecognized scripts.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <emphasis>Indic</emphasis> shaping model handles the Indic
+ scripts Bengali, Devanagari, Gujarati, Gurmukhi, Kannada,
+ Malayalam, Oriya, Tamil, Telugu, and Sinhala.
+ </para>
+ <para>
+ The Indic shaping model was revised significantly in
+ 2005. To denote the change, a new set of <emphasis>script
+ tags</emphasis> was assigned for Bengali, Devanagari,
+ Gujarati, Gurmukhi, Kannada, Malayalam, Oriya, Tamil, and
+ Telugu. For the sake of clarity, the term "Indic2" is
+ sometimes used to refer to the current, revised shaping
+ model.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <emphasis>Arabic</emphasis> shaping model supports
+ Arabic, Mongolian, N'Ko, Syriac, and several other connected
+ or cursive scripts.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <emphasis>Thai/Lao</emphasis> shaping model supports
+ the Thai and Lao scripts.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <emphasis>Khmer</emphasis> shaping model supports the
+ Khmer script.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <emphasis>Myanmar</emphasis> shaping model supports the
+ Myanmar (or Burmese) script.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <emphasis>Tibetan</emphasis> shaping model supports the
+ Tibetan script.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <emphasis>Hangul</emphasis> shaping model supports the
+ Hangul script.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <emphasis>Hebrew</emphasis> shaping model supports the
+ Hebrew script.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ The <emphasis>Universal Shaping Engine</emphasis> (USE)
+ shaping model supports complex scripts not covered by one of
+ the above, script-specific shaping models, including
+ Javanese, Balinese, Buginese, Batak, Chakma, Lepcha, Modi,
+ Phags-pa, Tagalog, Siddham, Sundanese, Tai Le, Tai Tham, Tai
+ Viet, and many others.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Text runs that do not fall under one of the above shaping
+ models may still require processing by a shaping engine. Of
+ particular note is <emphasis>Emoji</emphasis> shaping, which
+ may involve variation-selector sequences and glyph
+ substitution. Emoji shaping is handled by the default
+ shaping model.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+ <section id="graphite-shaping">
+ <title>Graphite shaping</title>
+ <para>
+ In contrast to OpenType shaping, Graphite shaping does not
+ specify a predefined set of shaping models or a set of supported
+ scripts.
+ </para>
+ <para>
+ Instead, each Graphite font contains a complete set of rules that
+ implement the required shaping model for the intended
+ script. These rules include finite-state machines to match
+ sequences of codepoints to the shaping operations to perform.
+ </para>
+ <para>
+ Graphite shaping can perform the same shaping operations used in
+ OpenType shaping, as well as other functions that have not been
+ defined for OpenType shaping.
+ </para>
+ </section>
+
+ <section id="aat-shaping">
+ <title>AAT shaping</title>
+ <para>
+ In contrast to OpenType shaping, AAT shaping does not specify a
+ predefined set of shaping models or a set of supported scripts.
+ </para>
+ <para>
+ Instead, each AAT font includes a complete set of rules that
+ implement the desired shaping model for the intended
+ script. These rules include finite-state machines to match glyph
+ sequences and the shaping operations to perform.
+ </para>
+ <para>
+ Notably, AAT shaping rules are expressed for glyphs in the font,
+ not for Unicode codepoints. AAT shaping can perform the same
+ shaping operations used in OpenType shaping, as well as other
+ functions that have not been defined for OpenType shaping.
+ </para>
+ </section>
+</chapter>
diff --git a/docs/usermanual-what-is-harfbuzz.xml b/docs/usermanual-what-is-harfbuzz.xml
index 38f40cf..ed053f9 100644
--- a/docs/usermanual-what-is-harfbuzz.xml
+++ b/docs/usermanual-what-is-harfbuzz.xml
@@ -1,115 +1,442 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+ <!ENTITY version SYSTEM "version.xml">
+]>
<chapter id="what-is-harfbuzz">
<title>What is HarfBuzz?</title>
<para>
- HarfBuzz is a <emphasis>text shaping engine</emphasis>. It solves
- the problem of selecting and positioning glyphs from a font given a
- Unicode string.
+ HarfBuzz is a <emphasis>text-shaping engine</emphasis>. If you
+ give HarfBuzz a font and a string containing a sequence of Unicode
+ codepoints, HarfBuzz selects and positions the corresponding
+ glyphs from the font, applying all of the necessary layout rules
+ and font features. HarfBuzz then returns the string to you in the
+ form that is correctly arranged for the language and writing
+ system.
</para>
- <section id="why-do-i-need-it">
- <title>Why do I need it?</title>
+ <para>
+ HarfBuzz can properly shape all of the world's major writing
+ systems. It runs on all major operating systems and software
+ platforms and it supports the major font formats in use
+ today.
+ </para>
+ <section id="what-is-text-shaping">
+ <title>What is text shaping?</title>
+ <para>
+ Text shaping is the process of translating a string of character
+ codes (such as Unicode codepoints) into a properly arranged
+ sequence of glyphs that can be rendered onto a screen or into
+ final output form for inclusion in a document.
+ </para>
+ <para>
+ The shaping process is dependent on the input string, the active
+ font, the script (or writing system) that the string is in, and
+ the language that the string is in.
+ </para>
+ <para>
+ Modern software systems generally only deal with strings in the
+ Unicode encoding scheme (although legacy systems and documents may
+ involve other encodings).
+ </para>
+ <para>
+ There are several font formats that a program might
+ encounter, each of which has a set of standard text-shaping
+ rules.
+ </para>
+ <para>The dominant format is <ulink
+ url="http://www.microsoft.com/typography/otspec/">OpenType</ulink>. The
+ OpenType specification defines a series of <ulink url="https://github.com/n8willis/opentype-shaping-documents">shaping models</ulink> for
+ various scripts from around the world. These shaping models depend on
+ the font incorporating certain features as
+ <emphasis>lookups</emphasis> in its <literal>GSUB</literal>
+ and <literal>GPOS</literal> tables.
+ </para>
<para>
- Text shaping is an integral part of preparing text for display. It
- is a fairly low level operation; HarfBuzz is used directly by
- graphic rendering libraries such as Pango, and the layout engines
- in Firefox, LibreOffice and Chromium. Unless you are
- <emphasis>writing</emphasis> one of these layout engines yourself,
- you will probably not need to use HarfBuzz - normally higher level
- libraries will turn text into glyphs for you.
+ Alternatively, OpenType fonts can include shaping features for
+ the <ulink url="https://graphite.sil.org/">Graphite</ulink> shaping model.
+ </para>
+ <para>
+ TrueType fonts can also include OpenType shaping
+ features. Alternatively, TrueType fonts can also include <ulink url="https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html">Apple
+ Advanced Typography</ulink> (AAT) tables to implement shaping
+ support. AAT fonts are generally only found on macOS and iOS systems.
+ </para>
+ <para>
+ Text strings will usually be tagged with a script and language
+ tag that provide the context needed to perform text shaping
+ correctly. The necessary <ulink
+ url="https://docs.microsoft.com/en-us/typography/opentype/spec/scripttags">script</ulink>
+ and <ulink
+ url="https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags">language</ulink>
+ tags are defined by OpenType.
+ </para>
+ </section>
+
+ <section id="why-do-i-need-a-shaping-engine">
+ <title>Why do I need a shaping engine?</title>
+ <para>
+ Text shaping is an integral part of preparing text for
+ display. Before a Unicode sequence can be rendered, the
+ codepoints in the sequence must be mapped to the corresponding
+ glyphs provided in the font, and those glyphs must be positioned
+ correctly relative to each other. For many of the scripts
+ supported in Unicode, these steps involve script-specific layout
+ rules, including complex joining, reordering, and positioning
+ behavior. Implementing these rules is the job of the shaping engine.
+ </para>
+ <para>
+ Text shaping is a fairly low-level operation. HarfBuzz is
+ used directly by text-handling libraries like <ulink
+ url="https://www.pango.org/">Pango</ulink>, as well as by the layout
+ engines in Firefox, LibreOffice, and Chromium. Unless you are
+ <emphasis>writing</emphasis> one of these layout engines
+ yourself, you will probably not need to use HarfBuzz: normally,
+ a layout engine, toolkit, or other library will turn text into
+ glyphs for you.
</para>
<para>
However, if you <emphasis>are</emphasis> writing a layout engine
- or graphics library yourself, you will need to perform text
- shaping, and this is where HarfBuzz can help you. Here are some
- reasons why you need it:
+ or graphics library yourself, then you will need to perform text
+ shaping, and this is where HarfBuzz can help you.
+ </para>
+ <para>
+ Here are some specific scenarios where a text-shaping engine
+ like HarfBuzz helps you:
</para>
<itemizedlist>
<listitem>
<para>
- OpenType fonts contain a set of glyphs, indexed by glyph ID.
- The glyph ID within the font does not necessarily relate to a
- Unicode codepoint. For instance, some fonts have the letter
- &quot;a&quot; as glyph ID 1. To pull the right glyph out of
- the font in order to display it, you need to consult a table
- within the font (the &quot;cmap&quot; table) which maps
- Unicode codepoints to glyph IDs. Text shaping turns codepoints
- into glyph IDs.
+ OpenType fonts contain a set of glyphs (that is, shapes
+ to represent the letters, numbers, punctuation marks, and
+ all other symbols), which are indexed by a <literal>glyph ID</literal>.
+ </para>
+ <para>
+ A particular glyph ID within the font does not necessarily
+ correlate to a predictable Unicode codepoint. For instance,
+ some fonts have the letter &quot;a&quot; as glyph ID 1, but
+ many others do not. In order to retrieve the right glyph
+ from the font to display &quot;a&quot;, you need to consult
+ the table inside the font (the <literal>cmap</literal>
+ table) that maps Unicode codepoints to glyph IDs. In other
+ words, <emphasis>text shaping turns codepoints into glyph
+ IDs</emphasis>.
</para>
</listitem>
<listitem>
<para>
Many OpenType fonts contain ligatures: combinations of
- characters which are rendered together. For instance, it's
- common for the <literal>fi</literal> combination to appear in
- print as the single ligature &quot;fi&quot;. Whether you should
- render text as <literal>fi</literal> or &quot;fi&quot; does not
- depend on the input text, but on the capabilities of the font
- and the level of ligature application you wish to perform.
- Text shaping involves querying the font's ligature tables and
- determining what substitutions should be made.
+ characters that are rendered as a single unit. For instance,
+ it is common for the &quot;f, i&quot; letter
+ sequence to appear in print as the single ligature glyph
+ &quot;fi&quot;.
+ </para>
+ <para>
+ Whether you should render an &quot;f, i&quot; sequence
+ as <literal>fi</literal> or as &quot;fi&quot; does not
+ depend on the input text. Instead, it depends on the whether
+ or not the font includes an &quot;fi&quot; glyph and on the
+ level of ligature application you wish to perform. The font
+ and the amount of ligature application used are under your
+ control. In other words, <emphasis>text shaping involves
+ querying the font's ligature tables and determining what
+ substitutions should be made</emphasis>.
</para>
</listitem>
<listitem>
<para>
- While ligatures like &quot;fi&quot; are typographic
- refinements, some languages <emphasis>require</emphasis> such
+ While ligatures like &quot;fi&quot; are optional typographic
+ refinements, some languages <emphasis>require</emphasis> certain
substitutions to be made in order to display text correctly.
- In Tamil, when the letter &quot;TTA&quot; (ட) letter is
- followed by &quot;U&quot; (உ), the combination should appear
- as the single glyph &quot;டு&quot;. The sequence of Unicode
- characters &quot;டஉ&quot; needs to be rendered as a single
- glyph from the font - text shaping chooses the correct glyph
- from the sequence of characters provided.
+ </para>
+ <para>
+ For example, in Tamil, when the letter &quot;TTA&quot; (ட)
+ letter is followed by &quot;U&quot; (உ), the pair
+ must be replaced by the single glyph &quot;டு&quot;. The
+ sequence of Unicode characters &quot;டஉ&quot; needs to be
+ substituted with a single &quot;டு&quot; glyph from the
+ font.
+ </para>
+ <para>
+ But &quot;டு&quot; does not have a Unicode codepoint. To
+ find this glyph, you need to consult the table inside
+ the font (the <literal>GSUB</literal> table) that contains
+ substitution information. In other words, <emphasis>text shaping
+ chooses the correct glyph for a sequence of characters
+ provided</emphasis>.
</para>
</listitem>
<listitem>
<para>
- Similarly, each Arabic character has four different variants:
- within a font, there will be glyphs for the initial, medial,
- final, and isolated forms of each letter. Unicode only encodes
- one codepoint per character, and so a Unicode string will not
- tell you which glyph to use. Text shaping chooses the correct
- form of the letter and returns the correct glyph from the font
- that you need to render.
+ Similarly, each Arabic character has four different variants
+ corresponding to the different positions it might appear in
+ within a sequence. Inside a font, there will be separate
+ glyphs for the initial, medial, final, and isolated forms of
+ each letter, each at a different glyph ID.
+ </para>
+ <para>
+ Unicode only assigns one codepoint per character, so a
+ Unicode string will not tell you which glyph variant to use
+ for each character. To decide, you need to analyze the whole
+ string and determine the appropriate glyph for each character
+ based on its position. In other words, <emphasis>text
+ shaping chooses the correct form of the letter by its
+ position and returns the correct glyph from the font</emphasis>.
</para>
</listitem>
<listitem>
<para>
- Other languages have marks and accents which need to be
- rendered in certain positions around a base character. For
- instance, the Moldovan language has the Cyrillic letter
- &quot;zhe&quot; (ж) with a breve accent, like so: ӂ. Some
- fonts will contain this character as an individual glyph,
- whereas other fonts will not contain a zhe-with-breve glyph
- but expect the rendering engine to form the character by
- overlaying the two glyphs ж and ˘. Where you should draw the
- combining breve depends on the height of the preceding glyph.
- Again, for Arabic, the correct positioning of vowel marks
- depends on the height of the character on which you are
- placing the mark. Text shaping tells you whether you have a
- precomposed glyph within your font or if you need to compose a
- glyph yourself out of combining marks, and if so, where to
- position those marks.
+ Other languages involve marks and accents that need to be
+ rendered in specific positions relative a base character. For
+ instance, the Moldovan language includes the Cyrillic letter
+ &quot;zhe&quot; (ж) with a breve accent, like so: &quot;ӂ&quot;.
+ </para>
+ <para>
+ Some fonts will provide this character as a single
+ zhe-with-breve glyph, but other fonts will not and, instead,
+ will expect the rendering engine to form the character by
+ superimposing the separate &quot;ж&quot; and &quot;˘&quot;
+ glyphs.
+ </para>
+ <para>
+ But exactly where you should draw the breve depends on the
+ height and width of the preceding zhe glyph. To find the
+ right position, you need to consult the table inside
+ the font (the <literal>GPOS</literal> table) that contains
+ positioning information.
+ In other words, <emphasis>text shaping tells you whether you
+ have a precomposed glyph within your font or if you need to
+ compose a glyph yourself out of combining marks&mdash;and,
+ if so, where to position those marks.</emphasis>
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ If tasks like these are something that you need to do, then you
+ need a text shaping engine. You could use Uniscribe if you are
+ writing Windows software; you could use CoreText on macOS; or
+ you could use HarfBuzz.
+ </para>
+ <note>
+ <para>
+ In the rest of this manual, the text will assume that the reader
+ is that implementor of a text-layout engine.
+ </para>
+ </note>
+ </section>
+
+
+ <section>
+ <title>What does HarfBuzz do?</title>
+ <para>
+ HarfBuzz provides text shaping through a cross-platform
+ C API that accepts sequences of Unicode codepoints as input. Currently,
+ the following OpenType shaping models are supported:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Indic (covering Devanagari, Bengali, Gujarati,
+ Gurmukhi, Kannada, Malayalam, Oriya, Tamil, Telugu, and
+ Sinhala)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Arabic (covering Arabic, N'Ko, Syriac, and Mongolian)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Thai and Lao
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Khmer
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Myanmar
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Tibetan
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Hangul
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Hebrew
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The Universal Shaping Engine or <emphasis>USE</emphasis>
+ (covering complex scripts not covered by the above shaping
+ models)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ A default shaping model for non-complex scripts
+ (covering Latin, Cyrillic, Greek, Armenian, Georgian, Tifinagh,
+ and many others)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Emoji (including emoji modifier sequences, flag sequences,
+ and ZWJ sequences)
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ In addition to OpenType shaping, HarfBuzz supports the latest
+ version of Graphite shaping (the "Graphite 2" model) and AAT
+ shaping.
+ </para>
+
+ <para>
+ HarfBuzz can read and understand TrueType fonts (.ttf), TrueType
+ collections (.ttc), and OpenType fonts (.otf, including those
+ fonts that contain TrueType-style outlines and those that
+ contain PostScript CFF or CFF2 outlines).
+ </para>
+
+ <para>
+ HarfBuzz is designed and tested to run on top of the FreeType
+ font renderer. It can run on Linux, Android, Windows, macOS, and
+ iOS systems.
+ </para>
+
+ <para>
+ In addition to its core shaping functionality, HarfBuzz provides
+ functions for accessing other font features, including optional
+ GSUB and GPOS OpenType features, as well as
+ all color-font formats (<literal>CBDT</literal>,
+ <literal>sbix</literal>, <literal>COLR/CPAL</literal>, and
+ <literal>SVG-OT</literal>) and OpenType variable fonts. HarfBuzz
+ also includes a font-subsetting feature. HarfBuzz can perform
+ some low-level math-shaping operations, although it does not
+ currently perform full shaping for mathematical typesetting.
+ </para>
+
+ <para>
+ A suite of command-line utilities is also provided in the
+ source-code tree, designed to help users test and debug
+ HarfBuzz's features on real-world fonts and input.
+ </para>
+ </section>
+
+ <section id="what-harfbuzz-doesnt-do">
+ <title>What HarfBuzz doesn't do</title>
+ <para>
+ HarfBuzz will take a Unicode string, shape it, and give you the
+ information required to lay it out correctly on a single
+ horizontal (or vertical) line using the font provided. That is the
+ extent of HarfBuzz's responsibility.
+ </para>
+ <para>
+ It is important to note that if you are implementing a complete
+ text-layout engine you may have other responsibilities that
+ HarfBuzz will <emphasis>not</emphasis> help you with. For example:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ HarfBuzz won't help you with bidirectionality. If you want to
+ lay out text that includes a mix of Hebrew and English, you
+ will need to ensure that each buffer provided to HarfBuzz
+ has all of its characters in the same order and that the
+ directionality of the buffer is set correctly. This may mean
+ segmenting the text before it is placed into HarfBuzz buffers. In
+ other words, the user will hit the keys in the following
+ sequence:
+ </para>
+ <programlisting>
+ A B C [space] ג ב א [space] D E F
+ </programlisting>
+ <para>
+ but will expect to see in the output:
+ </para>
+ <programlisting>
+ ABC אבג DEF
+ </programlisting>
+ <para>
+ This reordering is called <emphasis>bidi processing</emphasis>
+ (&quot;bidi&quot; is short for bidirectional), and there's an
+ algorithm as an annex to the Unicode Standard which tells you how
+ to process a string of mixed directionality.
+ Before sending your string to HarfBuzz, you may need to apply the
+ bidi algorithm to it. Libraries such as <ulink
+ url="http://icu-project.org/">ICU</ulink> and <ulink
+ url="http://fribidi.org/">fribidi</ulink> can do this for you.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ HarfBuzz won't help you with text that contains different font
+ properties. For instance, if you have the string &quot;a
+ <emphasis>huge</emphasis> breakfast&quot;, and you expect
+ &quot;huge&quot; to be italic, then you will need to send three
+ strings to HarfBuzz: <literal>a</literal>, in your Roman font;
+ <literal>huge</literal> using your italic font; and
+ <literal>breakfast</literal> using your Roman font again.
+ </para>
+ <para>
+ Similarly, if you change the font, font size, script,
+ language, or direction within your string, then you will
+ need to shape each run independently and output them
+ independently. HarfBuzz expects to shape a run of characters
+ that all share the same properties.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ HarfBuzz won't help you with line breaking, hyphenation, or
+ justification. As mentioned above, HarfBuzz lays out the string
+ along a <emphasis>single line</emphasis> of, notionally,
+ infinite length. If you want to find out where the potential
+ word, sentence and line break points are in your text, you
+ could use the ICU library's break iterator functions.
+ </para>
+ <para>
+ HarfBuzz can tell you how wide a shaped piece of text is, which is
+ useful input to a justification algorithm, but it knows nothing
+ about paragraphs, lines or line lengths. Nor will it adjust the
+ space between words to fit them proportionally into a line.
</para>
</listitem>
</itemizedlist>
<para>
- If this is something that you need to do, then you need a text
- shaping engine: you could use Uniscribe if you are using Windows;
- you could use CoreText on OS X; or you could use HarfBuzz. In the
- rest of this manual, we are going to assume that you are the
- implementor of a text layout engine.
+ As a layout-engine implementor, HarfBuzz will help you with the
+ interface between your text and your font, and that's something
+ that you'll need&mdash;what you then do with the glyphs that your font
+ returns is up to you.
</para>
</section>
+
<section id="why-is-it-called-harfbuzz">
<title>Why is it called HarfBuzz?</title>
<para>
- HarfBuzz began its life as text shaping code within the FreeType
- project, (and you will see references to the FreeType authors
- within the source code copyright declarations) but was then
- abstracted out to its own project. This project is maintained by
- Behdad Esfahbod, and named HarfBuzz. Originally, it was a shaping
- engine for OpenType fonts - &quot;HarfBuzz&quot; is the Persian
- for &quot;open type&quot;.
+ HarfBuzz began its life as text-shaping code within the FreeType
+ project (and you will see references to the FreeType authors
+ within the source code copyright declarations), but was then
+ extracted out to its own project. This project is maintained by
+ Behdad Esfahbod, who named it HarfBuzz. Originally, it was a
+ shaping engine for OpenType fonts&mdash;&quot;HarfBuzz&quot; is
+ the Persian for &quot;open type&quot;.
</para>
</section>
-</chapter> \ No newline at end of file
+</chapter>
diff --git a/docs/version.xml b/docs/version.xml
index a8fdfda..2bf1c1c 100644
--- a/docs/version.xml
+++ b/docs/version.xml
@@ -1 +1 @@
-1.8.1
+2.3.1