-libharfbuzz (0.1) unstable; urgency=low
+harfbuzz (0.4.0-1slp2+3) unstable; urgency=low
+
+ * Modified makefile and install file
+
+ -- Janani <janani.k@samsung.com> Tue, 06 Apr 2010 13:11:30 +0530
+
+harfbuzz (0.4.0-1slp2+2) unstable; urgency=low
+
+ * Package name changed
+
+ -- Janani <janani.k@samsung.com> Fri, 26 Mar 2010 14:18:04 +0530
+
+harfbuzz (0.4.0-1slp2+1) unstable; urgency=low
+
+ * Repackaging
+
+ -- Janani <janani.k@samsung.com> Fri, 26 Mar 2010 10:14:37 +0530
+
+harfbuzz (0.3) unstable; urgency=low
+
+ * Email ID corrected
+
+ -- Janani <janani.k@samsung.com> Wed, 17 Mar 2010 16:00:07 +0530
+
+harfbuzz (0.2) unstable; urgency=low
+
+ * Owner Changed
+
+ -- Janani <janani.k@samsung.com> Mon, 15 Mar 2010 16:57:26 +0530
+
+harfbuzz (0.1) unstable; urgency=low
* Initial Release.
- -- prameet <prameet.k@partner.samsung.com> Fri, 05 Mar 2010 10:49:10 +0530
+ -- Janani <janani.k@samsung.com> Fri, 05 Mar 2010 10:49:10 +0530
-Source: libharfbuzz
+Source: harfbuzz
Section: libs
Priority: optional
-Maintainer: prameet <prameet.k@partner.samsung.com>, Janani K <janani.k@samsung.com>
+Maintainer: janani <janani.k@samsung.com>
+Uploaders: Janani <janani.k@samsung.com>, Jihoon Kim <jihoon48.kim@samsung.com>
Build-Depends: debhelper (>= 5),libfreetype6-dev, pkg-config
Standards-Version: 3.7.2
Package: libharfbuzz
-Architecture: armel
+Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Hindi Reshaping Library
Package: libharfbuzz-dev
-Architecture: armel
-Section: debug
+Architecture: any
+Section: libdevel
Depends: ${misc:Depends}, libharfbuzz (= ${binary:Version})
Description: Hindi reshaping library (unstripped)
+Package: libharfbuzz-dbg
+Section: debug
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, libharfbuzz (= ${Source-Version})
+Description: Hindi reshaping library (unstripped)
-libharfbuzz_0.1_armel.deb libs optional
-libharfbuzz-dbg_0.1_armel.deb debug optional
+libharfbuzz_0.4.0-1slp2+3_armel.deb libs optional
+libharfbuzz-dev_0.4.0-1slp2+3_armel.deb libdevel optional
+libharfbuzz-dbg_0.4.0-1slp2+3_armel.deb debug optional
Package: libharfbuzz-dbg
-Source: libharfbuzz
-Version: 0.1
+Source: harfbuzz
+Version: 0.4.0-1slp2+3
Architecture: armel
-Maintainer: prameet <prameet.k@partner.samsung.coms>
+Maintainer: janani <janani.k@samsung.com>
Installed-Size: 52
+Depends: libharfbuzz (= 0.4.0-1slp2+3)
Section: debug
Priority: optional
Description: Hindi reshaping library (unstripped)
-88c5a21ba88009f719bf8bc1a8f45b83 usr/share/doc/libharfbuzz-dbg/copyright
-2e52c13d24bea17bfeb558305c5680d9 usr/share/doc/libharfbuzz-dbg/changelog.gz
-a493443ed45e75d80aeb2cc40938de79 usr/lib/debug/usr/lib/libharfbuzz.so
+93e65ad0ab6ed5807bad917b9f2331ec usr/lib/debug/usr/lib/libharfbuzz.so
+0bb889780a7cf71cd4ed473423126967 usr/share/doc/libharfbuzz-dbg/changelog.Debian.gz
+df1d54271f4722f7e2b3bcfdf7b69ddd usr/share/doc/libharfbuzz-dbg/copyright
--- /dev/null
+This is harfbuzz library ,maintained by prameet <prameet.k@partner.samsung.com>
+on Fri, 05 Mar 2010 10:49:10 +0530.
+
+The original source can always be found at:
+ ftp://ftp.debian.org/dists/unstable/main/source/
+
+Copyright Holder: unknown
+
+License:
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
--- /dev/null
+Package: libharfbuzz-dev
+Source: harfbuzz
+Version: 0.4.0-1slp2+3
+Architecture: armel
+Maintainer: janani <janani.k@samsung.com>
+Installed-Size: 32
+Depends: libharfbuzz (= 0.4.0-1slp2+3)
+Section: libdevel
+Priority: optional
+Description: Hindi reshaping library (unstripped)
--- /dev/null
+0bb889780a7cf71cd4ed473423126967 usr/share/doc/libharfbuzz-dev/changelog.Debian.gz
+df1d54271f4722f7e2b3bcfdf7b69ddd usr/share/doc/libharfbuzz-dev/copyright
--- /dev/null
+This is harfbuzz library ,maintained by prameet <prameet.k@partner.samsung.com>
+on Fri, 05 Mar 2010 10:49:10 +0530.
+
+The original source can always be found at:
+ ftp://ftp.debian.org/dists/unstable/main/source/
+
+Copyright Holder: unknown
+
+License:
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
usr/lib/libharfbuzz.so
-usr/include/harfbuzz/*
+usr/include/*
+usr/lib/pkgconfig/*
Package: libharfbuzz
-Version: 0.1
+Source: harfbuzz
+Version: 0.4.0-1slp2+3
Architecture: armel
-Maintainer: prameet <prameet.k@partner.samsung.coms>
-Installed-Size: 304
+Maintainer: janani <janani.k@samsung.com>
+Installed-Size: 544
Section: libs
Priority: optional
-Description: Hindi reshaping library
+Description: Hindi Reshaping Library
-88c5a21ba88009f719bf8bc1a8f45b83 usr/share/doc/libharfbuzz/copyright
-2e52c13d24bea17bfeb558305c5680d9 usr/share/doc/libharfbuzz/changelog.gz
-9221bd50ac8b7266e64caa16cd11e100 usr/lib/libharfbuzz.so
+9b0bfea1e5ca29ab694bb66e0c7806d5 usr/lib/pkgconfig/harfbuzz.pc
+a2cee363d5fe3f089785f3dab5cdece0 usr/lib/libharfbuzz.so
+0bb889780a7cf71cd4ed473423126967 usr/share/doc/libharfbuzz/changelog.Debian.gz
+df1d54271f4722f7e2b3bcfdf7b69ddd usr/share/doc/libharfbuzz/copyright
+f07cf3f8659df2a666184c3c043c57fa usr/include/harfbuzz/harfbuzz-buffer.h
+47748f702eb5274fddb2135b2477317f usr/include/harfbuzz/harfbuzz-gsub.h
+83721b07d4299f8ab0fe55fa0d976fc3 usr/include/harfbuzz/harfbuzz.h
+134cf9413e3fbbc6d0eea62bd4b16682 usr/include/harfbuzz/harfbuzz-gdef-private.h
+6e42a9e70afbfa731771b4565152f8cc usr/include/harfbuzz/harfbuzz-shaper-private.h
+9df5ea3e3b974f2940595a3adacb5303 usr/include/harfbuzz/harfbuzz-gpos-private.h
+32096ebe2fd5d49e37875b0a72f0f4bc usr/include/harfbuzz/harfbuzz-gpos.h
+416859ec08a3566b35d457a9a15420ac usr/include/harfbuzz/harfbuzz-stream-private.h
+f3febd1da5508f366c7ea622e22525b9 usr/include/harfbuzz/harfbuzz-external.h
+6e3ed9f28485fecfe3fd391b65b889e6 usr/include/harfbuzz/harfbuzz-open-private.h
+088511a85a252f02d62ae630379bf9e9 usr/include/harfbuzz/harfbuzz-shaper.h
+cfc2582df6ae2fa569e7d2aeebc98574 usr/include/harfbuzz/harfbuzz-shape.h
+5832347c18af6fd511e4f023ab549098 usr/include/harfbuzz/harfbuzz-open.h
+6b2506726da5a95f96a2ea679e2ba609 usr/include/harfbuzz/harfbuzz-stream.h
+ad9e0bd699461a9bde278e39327dd07a usr/include/harfbuzz/harfbuzz-global.h
+f7e5472b9dd9fa8348e09383f3c44aaf usr/include/harfbuzz/harfbuzz-impl.h
+4ca1f40b516f0f5a0fd6a9bf5b0f49a4 usr/include/harfbuzz/harfbuzz-gsub-private.h
+c394005fdbe3daa995350f04b4692e35 usr/include/harfbuzz/harfbuzz-gdef.h
+4b1e1188405946bfa9627e3ea83779bd usr/include/harfbuzz/hb_unicode_tables.h
+52d48ff2e2fc1e33feb94d1749c4f724 usr/include/harfbuzz/harfbuzz-dump.h
+88824c157a2d24a43b50e5d4138f54c8 usr/include/harfbuzz/harfbuzz-buffer-private.h
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2004,2007 Red Hat, Inc.\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ *\r
+ * Red Hat Author(s): Owen Taylor, Behdad Esfahbod\r
+ */\r
+\r
+#ifndef HARFBUZZ_BUFFER_PRIVATE_H\r
+#define HARFBUZZ_BUFFER_PRIVATE_H\r
+\r
+#include "harfbuzz-impl.h"\r
+#include "harfbuzz-buffer.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+#define HB_GLYPH_PROPERTIES_UNKNOWN 0xFFFF\r
+\r
+HB_INTERNAL void\r
+_hb_buffer_swap( HB_Buffer buffer );\r
+\r
+HB_INTERNAL void\r
+_hb_buffer_clear_output( HB_Buffer buffer );\r
+\r
+HB_INTERNAL HB_Error\r
+_hb_buffer_clear_positions( HB_Buffer buffer );\r
+\r
+HB_INTERNAL HB_Error\r
+_hb_buffer_add_output_glyphs( HB_Buffer buffer,\r
+ HB_UShort num_in,\r
+ HB_UShort num_out,\r
+ HB_UShort *glyph_data,\r
+ HB_UShort component,\r
+ HB_UShort ligID );\r
+\r
+HB_INTERNAL HB_Error\r
+_hb_buffer_add_output_glyph ( HB_Buffer buffer,\r
+ HB_UInt glyph_index,\r
+ HB_UShort component,\r
+ HB_UShort ligID );\r
+\r
+HB_INTERNAL HB_Error\r
+_hb_buffer_copy_output_glyph ( HB_Buffer buffer );\r
+\r
+HB_INTERNAL HB_Error\r
+_hb_buffer_replace_output_glyph ( HB_Buffer buffer,\r
+ HB_UInt glyph_index,\r
+ HB_Bool inplace );\r
+\r
+HB_INTERNAL HB_UShort\r
+_hb_buffer_allocate_ligid( HB_Buffer buffer );\r
+\r
+\r
+/* convenience macros */\r
+\r
+#define IN_GLYPH( pos ) (buffer->in_string[(pos)].gindex)\r
+#define IN_ITEM( pos ) (&buffer->in_string[(pos)])\r
+#define IN_CURGLYPH() (buffer->in_string[buffer->in_pos].gindex)\r
+#define IN_CURITEM() (&buffer->in_string[buffer->in_pos])\r
+#define IN_PROPERTIES( pos ) (buffer->in_string[(pos)].properties)\r
+#define IN_LIGID( pos ) (buffer->in_string[(pos)].ligID)\r
+#define IN_COMPONENT( pos ) (buffer->in_string[(pos)].component)\r
+#define POSITION( pos ) (&buffer->positions[(pos)])\r
+#define OUT_GLYPH( pos ) (buffer->out_string[(pos)].gindex)\r
+#define OUT_ITEM( pos ) (&buffer->out_string[(pos)])\r
+\r
+#define CHECK_Property( gdef, index, flags, property ) \\r
+ ( ( error = _HB_GDEF_Check_Property( (gdef), (index), (flags), \\r
+ (property) ) ) != HB_Err_Ok )\r
+\r
+#define ADD_String( buffer, num_in, num_out, glyph_data, component, ligID ) \\r
+ ( ( error = _hb_buffer_add_output_glyphs( (buffer), \\r
+ (num_in), (num_out), \\r
+ (glyph_data), (component), (ligID) \\r
+ ) ) != HB_Err_Ok )\r
+#define ADD_Glyph( buffer, glyph_index, component, ligID ) \\r
+ ( ( error = _hb_buffer_add_output_glyph( (buffer), \\r
+ (glyph_index), (component), (ligID) \\r
+ ) ) != HB_Err_Ok )\r
+#define REPLACE_Glyph( buffer, glyph_index, nesting_level ) \\r
+ ( ( error = _hb_buffer_replace_output_glyph( (buffer), (glyph_index), \\r
+ (nesting_level) == 1 ) ) != HB_Err_Ok )\r
+#define COPY_Glyph( buffer ) \\r
+ ( (error = _hb_buffer_copy_output_glyph ( buffer ) ) != HB_Err_Ok )\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_BUFFER_PRIVATE_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2004,2007 Red Hat, Inc.\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ *\r
+ * Red Hat Author(s): Owen Taylor, Behdad Esfahbod\r
+ */\r
+\r
+#ifndef HARFBUZZ_BUFFER_H\r
+#define HARFBUZZ_BUFFER_H\r
+\r
+#include "harfbuzz-global.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+typedef struct HB_GlyphItemRec_ {\r
+ HB_UInt gindex;\r
+ HB_UInt properties;\r
+ HB_UInt cluster;\r
+ HB_UShort component;\r
+ HB_UShort ligID;\r
+ HB_UShort gproperties;\r
+} HB_GlyphItemRec, *HB_GlyphItem;\r
+\r
+typedef struct HB_PositionRec_ {\r
+ HB_Fixed x_pos;\r
+ HB_Fixed y_pos;\r
+ HB_Fixed x_advance;\r
+ HB_Fixed y_advance;\r
+ HB_UShort back; /* number of glyphs to go back\r
+ for drawing current glyph */\r
+ HB_Bool new_advance; /* if set, the advance width values are\r
+ absolute, i.e., they won't be\r
+ added to the original glyph's value\r
+ but rather replace them. */\r
+ HB_Short cursive_chain; /* character to which this connects,\r
+ may be positive or negative; used\r
+ only internally */\r
+} HB_PositionRec, *HB_Position;\r
+\r
+\r
+typedef struct HB_BufferRec_{ \r
+ HB_UInt allocated;\r
+\r
+ HB_UInt in_length;\r
+ HB_UInt out_length;\r
+ HB_UInt in_pos;\r
+ HB_UInt out_pos;\r
+ \r
+ HB_Bool separate_out;\r
+ HB_GlyphItem in_string;\r
+ HB_GlyphItem out_string;\r
+ HB_GlyphItem alt_string;\r
+ HB_Position positions;\r
+ HB_UShort max_ligID;\r
+} HB_BufferRec, *HB_Buffer;\r
+\r
+HB_Error\r
+hb_buffer_new( HB_Buffer *buffer );\r
+\r
+void\r
+hb_buffer_free( HB_Buffer buffer );\r
+\r
+void\r
+hb_buffer_clear( HB_Buffer buffer );\r
+\r
+HB_Error\r
+hb_buffer_add_glyph( HB_Buffer buffer,\r
+ HB_UInt glyph_index,\r
+ HB_UInt properties,\r
+ HB_UInt cluster );\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_BUFFER_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 2000, 2007 Red Hat, Inc.\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ *\r
+ * Red Hat Author(s): Owen Taylor, Behdad Esfahbod\r
+ */\r
+\r
+#ifndef HARFBUZZ_DUMP_H\r
+#define HARFBUZZ_DUMP_H\r
+\r
+#include <stdio.h>\r
+#include "harfbuzz-gsub.h"\r
+#include "harfbuzz-gpos.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+void HB_Dump_GSUB_Table (HB_GSUB gsub, FILE *stream);\r
+void HB_Dump_GPOS_Table (HB_GPOS gpos, FILE *stream);\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_DUMP_H */\r
--- /dev/null
+/*\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_EXTERNAL_H\r
+#define HARFBUZZ_EXTERNAL_H\r
+\r
+#include "harfbuzz-global.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+/* This header contains some methods that are not part of\r
+ Harfbuzz itself, but referenced by it.\r
+ They need to be provided by the application/library\r
+*/\r
+\r
+\r
+/*\r
+ see http://www.unicode.org/reports/tr14/tr14-19.html\r
+ we don't use the XX, AI and CB properties and map them to AL instead.\r
+ as we don't support any EBDIC based OS'es, NL is ignored and mapped to AL as well.\r
+*/\r
+typedef enum {\r
+ HB_LineBreak_OP, HB_LineBreak_CL, HB_LineBreak_QU, HB_LineBreak_GL, HB_LineBreak_NS,\r
+ HB_LineBreak_EX, HB_LineBreak_SY, HB_LineBreak_IS, HB_LineBreak_PR, HB_LineBreak_PO,\r
+ HB_LineBreak_NU, HB_LineBreak_AL, HB_LineBreak_ID, HB_LineBreak_IN, HB_LineBreak_HY,\r
+ HB_LineBreak_BA, HB_LineBreak_BB, HB_LineBreak_B2, HB_LineBreak_ZW, HB_LineBreak_CM,\r
+ HB_LineBreak_WJ, HB_LineBreak_H2, HB_LineBreak_H3, HB_LineBreak_JL, HB_LineBreak_JV,\r
+ HB_LineBreak_JT, HB_LineBreak_SA, HB_LineBreak_SG,\r
+ HB_LineBreak_SP, HB_LineBreak_CR, HB_LineBreak_LF, HB_LineBreak_BK\r
+} HB_LineBreakClass;\r
+\r
+typedef enum \r
+{\r
+ HB_NoCategory,\r
+\r
+ HB_Mark_NonSpacing, /* Mn */\r
+ HB_Mark_SpacingCombining, /* Mc */\r
+ HB_Mark_Enclosing, /* Me */\r
+\r
+ HB_Number_DecimalDigit, /* Nd */\r
+ HB_Number_Letter, /* Nl */\r
+ HB_Number_Other, /* No */\r
+\r
+ HB_Separator_Space, /* Zs */\r
+ HB_Separator_Line, /* Zl */\r
+ HB_Separator_Paragraph, /* Zp */\r
+\r
+ HB_Other_Control, /* Cc */\r
+ HB_Other_Format, /* Cf */\r
+ HB_Other_Surrogate, /* Cs */\r
+ HB_Other_PrivateUse, /* Co */\r
+ HB_Other_NotAssigned, /* Cn */\r
+\r
+ HB_Letter_Uppercase, /* Lu */\r
+ HB_Letter_Lowercase, /* Ll */\r
+ HB_Letter_Titlecase, /* Lt */\r
+ HB_Letter_Modifier, /* Lm */\r
+ HB_Letter_Other, /* Lo */\r
+\r
+ HB_Punctuation_Connector, /* Pc */\r
+ HB_Punctuation_Dash, /* Pd */\r
+ HB_Punctuation_Open, /* Ps */\r
+ HB_Punctuation_Close, /* Pe */\r
+ HB_Punctuation_InitialQuote, /* Pi */\r
+ HB_Punctuation_FinalQuote, /* Pf */\r
+ HB_Punctuation_Other, /* Po */\r
+\r
+ HB_Symbol_Math, /* Sm */\r
+ HB_Symbol_Currency, /* Sc */\r
+ HB_Symbol_Modifier, /* Sk */\r
+ HB_Symbol_Other /* So */\r
+} HB_CharCategory;\r
+\r
+typedef enum\r
+{\r
+ HB_Grapheme_Other, \r
+ HB_Grapheme_CR,\r
+ HB_Grapheme_LF,\r
+ HB_Grapheme_Control,\r
+ HB_Grapheme_Extend,\r
+ HB_Grapheme_L, \r
+ HB_Grapheme_V, \r
+ HB_Grapheme_T, \r
+ HB_Grapheme_LV, \r
+ HB_Grapheme_LVT\r
+} HB_GraphemeClass;\r
+\r
+\r
+typedef enum\r
+{\r
+ HB_Word_Other,\r
+ HB_Word_Format,\r
+ HB_Word_Katakana,\r
+ HB_Word_ALetter,\r
+ HB_Word_MidLetter,\r
+ HB_Word_MidNum,\r
+ HB_Word_Numeric,\r
+ HB_Word_ExtendNumLet\r
+} HB_WordClass;\r
+\r
+\r
+typedef enum\r
+{\r
+ HB_Sentence_Other,\r
+ HB_Sentence_Sep,\r
+ HB_Sentence_Format,\r
+ HB_Sentence_Sp,\r
+ HB_Sentence_Lower,\r
+ HB_Sentence_Upper,\r
+ HB_Sentence_OLetter,\r
+ HB_Sentence_Numeric,\r
+ HB_Sentence_ATerm,\r
+ HB_Sentence_STerm,\r
+ HB_Sentence_Close\r
+} HB_SentenceClass;\r
+\r
+HB_GraphemeClass HB_GetGraphemeClass(HB_UChar32 ch);\r
+HB_WordClass HB_GetWordClass(HB_UChar32 ch);\r
+HB_SentenceClass HB_GetSentenceClass(HB_UChar32 ch);\r
+HB_LineBreakClass HB_GetLineBreakClass(HB_UChar32 ch);\r
+\r
+void HB_GetGraphemeAndLineBreakClass(HB_UChar32 ch, HB_GraphemeClass *grapheme, HB_LineBreakClass *lineBreak);\r
+void HB_GetUnicodeCharProperties(HB_UChar32 ch, HB_CharCategory *category, int *combiningClass);\r
+HB_CharCategory HB_GetUnicodeCharCategory(HB_UChar32 ch);\r
+int HB_GetUnicodeCharCombiningClass(HB_UChar32 ch);\r
+HB_UChar16 HB_GetMirroredChar(HB_UChar16 ch);\r
+\r
+void *HB_Library_Resolve(const char *library, const char *symbol);\r
+\r
+void *HB_TextCodecForMib(int mib);\r
+char *HB_TextCodec_ConvertFromUnicode(void *codec, const HB_UChar16 *unicode, hb_uint32 length, hb_uint32 *outputLength);\r
+void HB_TextCodec_FreeResult(char *);\r
+\r
+HB_END_HEADER\r
+\r
+#endif\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_GDEF_PRIVATE_H\r
+#define HARFBUZZ_GDEF_PRIVATE_H\r
+\r
+#include "harfbuzz-impl.h"\r
+#include "harfbuzz-stream-private.h"\r
+#include "harfbuzz-buffer-private.h"\r
+#include "harfbuzz-gdef.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+\r
+/* Attachment related structures */\r
+\r
+struct HB_AttachPoint_\r
+{\r
+ HB_UShort PointCount; /* size of the PointIndex array */\r
+ HB_UShort* PointIndex; /* array of contour points */\r
+};\r
+\r
+/* Ligature Caret related structures */\r
+\r
+struct HB_CaretValueFormat1_\r
+{\r
+ HB_Short Coordinate; /* x or y value (in design units) */\r
+};\r
+\r
+typedef struct HB_CaretValueFormat1_ HB_CaretValueFormat1;\r
+\r
+\r
+struct HB_CaretValueFormat2_\r
+{\r
+ HB_UShort CaretValuePoint; /* contour point index on glyph */\r
+};\r
+\r
+typedef struct HB_CaretValueFormat2_ HB_CaretValueFormat2;\r
+\r
+\r
+struct HB_CaretValueFormat3_\r
+{\r
+ HB_Short Coordinate; /* x or y value (in design units) */\r
+ HB_Device Device; /* Device table for x or y value */\r
+};\r
+\r
+typedef struct HB_CaretValueFormat3_ HB_CaretValueFormat3;\r
+\r
+\r
+struct HB_CaretValueFormat4_\r
+{\r
+ HB_UShort IdCaretValue; /* metric ID */\r
+};\r
+\r
+typedef struct HB_CaretValueFormat4_ HB_CaretValueFormat4;\r
+\r
+\r
+struct HB_CaretValue_\r
+{\r
+ HB_UShort CaretValueFormat; /* 1, 2, 3, or 4 */\r
+\r
+ union\r
+ {\r
+ HB_CaretValueFormat1 cvf1;\r
+ HB_CaretValueFormat2 cvf2;\r
+ HB_CaretValueFormat3 cvf3;\r
+ HB_CaretValueFormat4 cvf4;\r
+ } cvf;\r
+};\r
+\r
+typedef struct HB_CaretValue_ HB_CaretValue;\r
+\r
+\r
+struct HB_LigGlyph_\r
+{\r
+ HB_Bool loaded;\r
+\r
+ HB_UShort CaretCount; /* number of caret values */\r
+ HB_CaretValue* CaretValue; /* array of caret values */\r
+};\r
+\r
+\r
+HB_INTERNAL HB_Error\r
+_HB_GDEF_Add_Glyph_Property( HB_GDEFHeader* gdef,\r
+ HB_UShort glyphID,\r
+ HB_UShort property );\r
+\r
+HB_INTERNAL HB_Error\r
+_HB_GDEF_Check_Property( HB_GDEFHeader* gdef,\r
+ HB_GlyphItem item,\r
+ HB_UShort flags,\r
+ HB_UShort* property );\r
+\r
+HB_INTERNAL HB_Error\r
+_HB_GDEF_LoadMarkAttachClassDef_From_LookupFlags( HB_GDEFHeader* gdef,\r
+ HB_Stream input,\r
+ HB_Lookup* lo,\r
+ HB_UShort num_lookups );\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_GDEF_PRIVATE_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_GDEF_H\r
+#define HARFBUZZ_GDEF_H\r
+\r
+#include "harfbuzz-open.h"\r
+#include "harfbuzz-stream.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+/* GDEF glyph properties. Note that HB_GDEF_COMPONENT has no corresponding\r
+ * flag in the LookupFlag field. */\r
+#define HB_GDEF_BASE_GLYPH 0x0002\r
+#define HB_GDEF_LIGATURE 0x0004\r
+#define HB_GDEF_MARK 0x0008\r
+#define HB_GDEF_COMPONENT 0x0010\r
+\r
+\r
+typedef struct HB_AttachPoint_ HB_AttachPoint;\r
+\r
+\r
+struct HB_AttachList_\r
+{\r
+ HB_Bool loaded;\r
+\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort GlyphCount; /* number of glyphs with\r
+ attachments */\r
+ HB_AttachPoint* AttachPoint; /* array of AttachPoint tables */\r
+};\r
+\r
+typedef struct HB_AttachList_ HB_AttachList;\r
+\r
+typedef struct HB_LigGlyph_ HB_LigGlyph;\r
+\r
+struct HB_LigCaretList_\r
+{\r
+ HB_Bool loaded;\r
+\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort LigGlyphCount; /* number of ligature glyphs */\r
+ HB_LigGlyph* LigGlyph; /* array of LigGlyph tables */\r
+};\r
+\r
+typedef struct HB_LigCaretList_ HB_LigCaretList;\r
+\r
+\r
+\r
+/* The `NewGlyphClasses' field is not defined in the TTO specification.\r
+ We use it for fonts with a constructed `GlyphClassDef' structure\r
+ (i.e., which don't have a GDEF table) to collect glyph classes\r
+ assigned during the lookup process. The number of arrays in this\r
+ pointer array is GlyphClassDef->cd.cd2.ClassRangeCount+1; the nth\r
+ array then contains the glyph class values of the glyphs not covered\r
+ by the ClassRangeRecords structures with index n-1 and n. We store\r
+ glyph class values for four glyphs in a single array element.\r
+\r
+ `LastGlyph' is identical to the number of glyphs minus one in the\r
+ font; we need it only if `NewGlyphClasses' is not NULL (to have an\r
+ upper bound for the last array).\r
+\r
+ Note that we first store the file offset to the `MarkAttachClassDef'\r
+ field (which has been introduced in OpenType 1.2) -- since the\r
+ `Version' field value hasn't been increased to indicate that we have\r
+ one more field for some obscure reason, we must parse the GSUB table\r
+ to find out whether class values refer to this table. Only then we\r
+ can finally load the MarkAttachClassDef structure if necessary. */\r
+\r
+struct HB_GDEFHeader_\r
+{\r
+ HB_UInt offset;\r
+\r
+ HB_16Dot16 Version;\r
+\r
+ HB_ClassDefinition GlyphClassDef;\r
+ HB_AttachList AttachList;\r
+ HB_LigCaretList LigCaretList;\r
+ HB_UInt MarkAttachClassDef_offset;\r
+ HB_ClassDefinition MarkAttachClassDef; /* new in OT 1.2 */\r
+\r
+ HB_UShort LastGlyph;\r
+ HB_UShort** NewGlyphClasses;\r
+};\r
+\r
+typedef struct HB_GDEFHeader_ HB_GDEFHeader;\r
+typedef struct HB_GDEFHeader_* HB_GDEF;\r
+\r
+\r
+HB_Error HB_New_GDEF_Table( HB_GDEFHeader** retptr );\r
+ \r
+\r
+HB_Error HB_Load_GDEF_Table( HB_Stream stream,\r
+ HB_GDEFHeader** gdef );\r
+\r
+\r
+HB_Error HB_Done_GDEF_Table ( HB_GDEFHeader* gdef );\r
+\r
+\r
+HB_Error HB_GDEF_Get_Glyph_Property( HB_GDEFHeader* gdef,\r
+ HB_UShort glyphID,\r
+ HB_UShort* property );\r
+\r
+HB_Error HB_GDEF_Build_ClassDefinition( HB_GDEFHeader* gdef,\r
+ HB_UShort num_glyphs,\r
+ HB_UShort glyph_count,\r
+ HB_UShort* glyph_array,\r
+ HB_UShort* class_array );\r
+\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_GDEF_H */\r
--- /dev/null
+/*\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ *\r
+ */\r
+\r
+#ifndef HARFBUZZ_GLOBAL_H\r
+#define HARFBUZZ_GLOBAL_H\r
+\r
+#include <stdlib.h>\r
+#include <string.h>\r
+\r
+#ifdef __cplusplus\r
+#define HB_BEGIN_HEADER extern "C" {\r
+#define HB_END_HEADER }\r
+#else\r
+#define HB_BEGIN_HEADER /* nothing */\r
+#define HB_END_HEADER /* nothing */\r
+#endif\r
+\r
+HB_BEGIN_HEADER\r
+\r
+#ifndef FALSE\r
+#define FALSE 0\r
+#endif\r
+\r
+#ifndef TRUE\r
+#define TRUE (!FALSE)\r
+#endif\r
+\r
+#ifndef false\r
+#define false 0\r
+#endif\r
+\r
+#ifndef true\r
+#define true (!FALSE)\r
+#endif\r
+\r
+#define HB_MAKE_TAG( _x1, _x2, _x3, _x4 ) \\r
+ ( ( (HB_UInt)_x1 << 24 ) | \\r
+ ( (HB_UInt)_x2 << 16 ) | \\r
+ ( (HB_UInt)_x3 << 8 ) | \\r
+ (HB_UInt)_x4 )\r
+\r
+typedef char hb_int8;\r
+typedef unsigned char hb_uint8;\r
+typedef short hb_int16;\r
+typedef unsigned short hb_uint16;\r
+typedef int hb_int32;\r
+typedef unsigned int hb_uint32;\r
+\r
+typedef hb_uint8 HB_Bool;\r
+typedef hb_uint8 bool;\r
+\r
+typedef hb_uint8 HB_Byte;\r
+typedef hb_uint16 HB_UShort;\r
+typedef hb_uint32 HB_UInt;\r
+typedef hb_int8 HB_Char;\r
+typedef hb_int16 HB_Short;\r
+typedef hb_int32 HB_Int;\r
+\r
+typedef hb_uint16 HB_UChar16;\r
+typedef hb_uint32 HB_UChar32;\r
+typedef hb_uint32 HB_Glyph;\r
+typedef hb_int32 HB_Fixed; /* 26.6 */\r
+\r
+#define HB_FIXED_CONSTANT(v) ((v) * 64)\r
+#define HB_FIXED_ROUND(v) (((v)+32) & -64)\r
+\r
+typedef hb_int32 HB_16Dot16; /* 16.16 */\r
+\r
+typedef void * HB_Pointer;\r
+typedef hb_uint32 HB_Tag;\r
+\r
+typedef enum {\r
+ /* no error */\r
+ HB_Err_Ok = 0x0000,\r
+ HB_Err_Not_Covered = 0xFFFF,\r
+\r
+ /* _hb_err() is called whenever returning the following errors,\r
+ * and in a couple places for HB_Err_Not_Covered too. */\r
+\r
+ /* programmer error */\r
+ HB_Err_Invalid_Argument = 0x1A66,\r
+\r
+ /* font error */\r
+ HB_Err_Invalid_SubTable_Format = 0x157F,\r
+ HB_Err_Invalid_SubTable = 0x1570,\r
+ HB_Err_Read_Error = 0x6EAD,\r
+\r
+ /* system error */\r
+ HB_Err_Out_Of_Memory = 0xDEAD\r
+} HB_Error;\r
+\r
+typedef struct {\r
+ HB_Fixed x;\r
+ HB_Fixed y;\r
+} HB_FixedPoint;\r
+\r
+typedef struct HB_Font_ *HB_Font;\r
+typedef struct HB_StreamRec_ *HB_Stream;\r
+typedef struct HB_FaceRec_ *HB_Face;\r
+\r
+HB_END_HEADER\r
+\r
+#endif\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_GPOS_PRIVATE_H\r
+#define HARFBUZZ_GPOS_PRIVATE_H\r
+\r
+#include "harfbuzz-impl.h"\r
+#include "harfbuzz-stream-private.h"\r
+#include "harfbuzz-gpos.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+\r
+/* shared tables */\r
+\r
+struct HB_ValueRecord_\r
+{\r
+ HB_Short XPlacement; /* horizontal adjustment for\r
+ placement */\r
+ HB_Short YPlacement; /* vertical adjustment for\r
+ placement */\r
+ HB_Short XAdvance; /* horizontal adjustment for\r
+ advance */\r
+ HB_Short YAdvance; /* vertical adjustment for\r
+ advance */\r
+ HB_Device XPlacementDevice; /* device table for horizontal\r
+ placement */\r
+ HB_Device YPlacementDevice; /* device table for vertical\r
+ placement */\r
+ HB_Device XAdvanceDevice; /* device table for horizontal\r
+ advance */\r
+ HB_Device YAdvanceDevice; /* device table for vertical\r
+ advance */\r
+ HB_UShort XIdPlacement; /* horizontal placement metric ID */\r
+ HB_UShort YIdPlacement; /* vertical placement metric ID */\r
+ HB_UShort XIdAdvance; /* horizontal advance metric ID */\r
+ HB_UShort YIdAdvance; /* vertical advance metric ID */\r
+};\r
+\r
+typedef struct HB_ValueRecord_ HB_ValueRecord;\r
+\r
+\r
+/* Mask values to scan the value format of the ValueRecord structure.\r
+ We always expand compressed ValueRecords of the font. */\r
+\r
+#define HB_GPOS_FORMAT_HAVE_X_PLACEMENT 0x0001\r
+#define HB_GPOS_FORMAT_HAVE_Y_PLACEMENT 0x0002\r
+#define HB_GPOS_FORMAT_HAVE_X_ADVANCE 0x0004\r
+#define HB_GPOS_FORMAT_HAVE_Y_ADVANCE 0x0008\r
+#define HB_GPOS_FORMAT_HAVE_X_PLACEMENT_DEVICE 0x0010\r
+#define HB_GPOS_FORMAT_HAVE_Y_PLACEMENT_DEVICE 0x0020\r
+#define HB_GPOS_FORMAT_HAVE_X_ADVANCE_DEVICE 0x0040\r
+#define HB_GPOS_FORMAT_HAVE_Y_ADVANCE_DEVICE 0x0080\r
+#define HB_GPOS_FORMAT_HAVE_X_ID_PLACEMENT 0x0100\r
+#define HB_GPOS_FORMAT_HAVE_Y_ID_PLACEMENT 0x0200\r
+#define HB_GPOS_FORMAT_HAVE_X_ID_ADVANCE 0x0400\r
+#define HB_GPOS_FORMAT_HAVE_Y_ID_ADVANCE 0x0800\r
+\r
+\r
+struct HB_AnchorFormat1_\r
+{\r
+ HB_Short XCoordinate; /* horizontal value */\r
+ HB_Short YCoordinate; /* vertical value */\r
+};\r
+\r
+typedef struct HB_AnchorFormat1_ HB_AnchorFormat1;\r
+\r
+\r
+struct HB_AnchorFormat2_\r
+{\r
+ HB_Short XCoordinate; /* horizontal value */\r
+ HB_Short YCoordinate; /* vertical value */\r
+ HB_UShort AnchorPoint; /* index to glyph contour point */\r
+};\r
+\r
+typedef struct HB_AnchorFormat2_ HB_AnchorFormat2;\r
+\r
+\r
+struct HB_AnchorFormat3_\r
+{\r
+ HB_Short XCoordinate; /* horizontal value */\r
+ HB_Short YCoordinate; /* vertical value */\r
+ HB_Device XDeviceTable; /* device table for X coordinate */\r
+ HB_Device YDeviceTable; /* device table for Y coordinate */\r
+};\r
+\r
+typedef struct HB_AnchorFormat3_ HB_AnchorFormat3;\r
+\r
+\r
+struct HB_AnchorFormat4_\r
+{\r
+ HB_UShort XIdAnchor; /* horizontal metric ID */\r
+ HB_UShort YIdAnchor; /* vertical metric ID */\r
+};\r
+\r
+typedef struct HB_AnchorFormat4_ HB_AnchorFormat4;\r
+\r
+\r
+struct HB_Anchor_\r
+{\r
+ HB_UShort PosFormat; /* 1, 2, 3, or 4 -- 0 indicates\r
+ that there is no Anchor table */\r
+\r
+ union\r
+ {\r
+ HB_AnchorFormat1 af1;\r
+ HB_AnchorFormat2 af2;\r
+ HB_AnchorFormat3 af3;\r
+ HB_AnchorFormat4 af4;\r
+ } af;\r
+};\r
+\r
+typedef struct HB_Anchor_ HB_Anchor;\r
+\r
+\r
+struct HB_MarkRecord_\r
+{\r
+ HB_UShort Class; /* mark class */\r
+ HB_Anchor MarkAnchor; /* anchor table */\r
+};\r
+\r
+typedef struct HB_MarkRecord_ HB_MarkRecord;\r
+\r
+\r
+struct HB_MarkArray_\r
+{\r
+ HB_UShort MarkCount; /* number of MarkRecord tables */\r
+ HB_MarkRecord* MarkRecord; /* array of MarkRecord tables */\r
+};\r
+\r
+typedef struct HB_MarkArray_ HB_MarkArray;\r
+\r
+\r
+/* LookupType 1 */\r
+\r
+struct HB_SinglePosFormat1_\r
+{\r
+ HB_ValueRecord Value; /* ValueRecord for all covered\r
+ glyphs */\r
+};\r
+\r
+typedef struct HB_SinglePosFormat1_ HB_SinglePosFormat1;\r
+\r
+\r
+struct HB_SinglePosFormat2_\r
+{\r
+ HB_UShort ValueCount; /* number of ValueRecord tables */\r
+ HB_ValueRecord* Value; /* array of ValueRecord tables */\r
+};\r
+\r
+typedef struct HB_SinglePosFormat2_ HB_SinglePosFormat2;\r
+\r
+\r
+struct HB_SinglePos_\r
+{\r
+ HB_UShort PosFormat; /* 1 or 2 */\r
+ HB_Coverage Coverage; /* Coverage table */\r
+\r
+ HB_UShort ValueFormat; /* format of ValueRecord table */\r
+\r
+ union\r
+ {\r
+ HB_SinglePosFormat1 spf1;\r
+ HB_SinglePosFormat2 spf2;\r
+ } spf;\r
+};\r
+\r
+typedef struct HB_SinglePos_ HB_SinglePos;\r
+\r
+\r
+/* LookupType 2 */\r
+\r
+struct HB_PairValueRecord_\r
+{\r
+ HB_UShort SecondGlyph; /* glyph ID for second glyph */\r
+ HB_ValueRecord Value1; /* pos. data for first glyph */\r
+ HB_ValueRecord Value2; /* pos. data for second glyph */\r
+};\r
+\r
+typedef struct HB_PairValueRecord_ HB_PairValueRecord;\r
+\r
+\r
+struct HB_PairSet_\r
+{\r
+ HB_UShort PairValueCount;\r
+ /* number of PairValueRecord tables */\r
+ HB_PairValueRecord* PairValueRecord;\r
+ /* array of PairValueRecord tables */\r
+};\r
+\r
+typedef struct HB_PairSet_ HB_PairSet;\r
+\r
+\r
+struct HB_PairPosFormat1_\r
+{\r
+ HB_UShort PairSetCount; /* number of PairSet tables */\r
+ HB_PairSet* PairSet; /* array of PairSet tables */\r
+};\r
+\r
+typedef struct HB_PairPosFormat1_ HB_PairPosFormat1;\r
+\r
+\r
+struct HB_Class2Record_\r
+{\r
+ HB_ValueRecord Value1; /* pos. data for first glyph */\r
+ HB_ValueRecord Value2; /* pos. data for second glyph */\r
+};\r
+\r
+typedef struct HB_Class2Record_ HB_Class2Record;\r
+\r
+\r
+struct HB_Class1Record_\r
+{\r
+ HB_Class2Record* Class2Record; /* array of Class2Record tables */\r
+};\r
+\r
+typedef struct HB_Class1Record_ HB_Class1Record;\r
+\r
+\r
+struct HB_PairPosFormat2_\r
+{\r
+ HB_ClassDefinition ClassDef1; /* class def. for first glyph */\r
+ HB_ClassDefinition ClassDef2; /* class def. for second glyph */\r
+ HB_UShort Class1Count; /* number of classes in ClassDef1\r
+ table */\r
+ HB_UShort Class2Count; /* number of classes in ClassDef2\r
+ table */\r
+ HB_Class1Record* Class1Record; /* array of Class1Record tables */\r
+};\r
+\r
+typedef struct HB_PairPosFormat2_ HB_PairPosFormat2;\r
+\r
+\r
+struct HB_PairPos_\r
+{\r
+ HB_UShort PosFormat; /* 1 or 2 */\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort ValueFormat1; /* format of ValueRecord table\r
+ for first glyph */\r
+ HB_UShort ValueFormat2; /* format of ValueRecord table\r
+ for second glyph */\r
+\r
+ union\r
+ {\r
+ HB_PairPosFormat1 ppf1;\r
+ HB_PairPosFormat2 ppf2;\r
+ } ppf;\r
+};\r
+\r
+typedef struct HB_PairPos_ HB_PairPos;\r
+\r
+\r
+/* LookupType 3 */\r
+\r
+struct HB_EntryExitRecord_\r
+{\r
+ HB_Anchor EntryAnchor; /* entry Anchor table */\r
+ HB_Anchor ExitAnchor; /* exit Anchor table */\r
+};\r
+\r
+\r
+typedef struct HB_EntryExitRecord_ HB_EntryExitRecord;\r
+\r
+struct HB_CursivePos_\r
+{\r
+ HB_UShort PosFormat; /* always 1 */\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort EntryExitCount;\r
+ /* number of EntryExitRecord tables */\r
+ HB_EntryExitRecord* EntryExitRecord;\r
+ /* array of EntryExitRecord tables */\r
+};\r
+\r
+typedef struct HB_CursivePos_ HB_CursivePos;\r
+\r
+\r
+/* LookupType 4 */\r
+\r
+struct HB_BaseRecord_\r
+{\r
+ HB_Anchor* BaseAnchor; /* array of base glyph anchor\r
+ tables */\r
+};\r
+\r
+typedef struct HB_BaseRecord_ HB_BaseRecord;\r
+\r
+\r
+struct HB_BaseArray_\r
+{\r
+ HB_UShort BaseCount; /* number of BaseRecord tables */\r
+ HB_BaseRecord* BaseRecord; /* array of BaseRecord tables */\r
+};\r
+\r
+typedef struct HB_BaseArray_ HB_BaseArray;\r
+\r
+\r
+struct HB_MarkBasePos_\r
+{\r
+ HB_UShort PosFormat; /* always 1 */\r
+ HB_Coverage MarkCoverage; /* mark glyph coverage table */\r
+ HB_Coverage BaseCoverage; /* base glyph coverage table */\r
+ HB_UShort ClassCount; /* number of mark classes */\r
+ HB_MarkArray MarkArray; /* mark array table */\r
+ HB_BaseArray BaseArray; /* base array table */\r
+};\r
+\r
+typedef struct HB_MarkBasePos_ HB_MarkBasePos;\r
+\r
+\r
+/* LookupType 5 */\r
+\r
+struct HB_ComponentRecord_\r
+{\r
+ HB_Anchor* LigatureAnchor; /* array of ligature glyph anchor\r
+ tables */\r
+};\r
+\r
+typedef struct HB_ComponentRecord_ HB_ComponentRecord;\r
+\r
+\r
+struct HB_LigatureAttach_\r
+{\r
+ HB_UShort ComponentCount;\r
+ /* number of ComponentRecord tables */\r
+ HB_ComponentRecord* ComponentRecord;\r
+ /* array of ComponentRecord tables */\r
+};\r
+\r
+typedef struct HB_LigatureAttach_ HB_LigatureAttach;\r
+\r
+\r
+struct HB_LigatureArray_\r
+{\r
+ HB_UShort LigatureCount; /* number of LigatureAttach tables */\r
+ HB_LigatureAttach* LigatureAttach;\r
+ /* array of LigatureAttach tables */\r
+};\r
+\r
+typedef struct HB_LigatureArray_ HB_LigatureArray;\r
+\r
+\r
+struct HB_MarkLigPos_\r
+{\r
+ HB_UShort PosFormat; /* always 1 */\r
+ HB_Coverage MarkCoverage; /* mark glyph coverage table */\r
+ HB_Coverage LigatureCoverage;\r
+ /* ligature glyph coverage table */\r
+ HB_UShort ClassCount; /* number of mark classes */\r
+ HB_MarkArray MarkArray; /* mark array table */\r
+ HB_LigatureArray LigatureArray; /* ligature array table */\r
+};\r
+\r
+typedef struct HB_MarkLigPos_ HB_MarkLigPos;\r
+\r
+\r
+/* LookupType 6 */\r
+\r
+struct HB_Mark2Record_\r
+{\r
+ HB_Anchor* Mark2Anchor; /* array of mark glyph anchor\r
+ tables */\r
+};\r
+\r
+typedef struct HB_Mark2Record_ HB_Mark2Record;\r
+\r
+\r
+struct HB_Mark2Array_\r
+{\r
+ HB_UShort Mark2Count; /* number of Mark2Record tables */\r
+ HB_Mark2Record* Mark2Record; /* array of Mark2Record tables */\r
+};\r
+\r
+typedef struct HB_Mark2Array_ HB_Mark2Array;\r
+\r
+\r
+struct HB_MarkMarkPos_\r
+{\r
+ HB_UShort PosFormat; /* always 1 */\r
+ HB_Coverage Mark1Coverage; /* first mark glyph coverage table */\r
+ HB_Coverage Mark2Coverage; /* second mark glyph coverave table */\r
+ HB_UShort ClassCount; /* number of combining mark classes */\r
+ HB_MarkArray Mark1Array; /* MarkArray table for first mark */\r
+ HB_Mark2Array Mark2Array; /* MarkArray table for second mark */\r
+};\r
+\r
+typedef struct HB_MarkMarkPos_ HB_MarkMarkPos;\r
+\r
+\r
+/* needed by both lookup type 7 and 8 */\r
+\r
+struct HB_PosLookupRecord_\r
+{\r
+ HB_UShort SequenceIndex; /* index into current\r
+ glyph sequence */\r
+ HB_UShort LookupListIndex; /* Lookup to apply to that pos. */\r
+};\r
+\r
+typedef struct HB_PosLookupRecord_ HB_PosLookupRecord;\r
+\r
+\r
+/* LookupType 7 */\r
+\r
+struct HB_PosRule_\r
+{\r
+ HB_UShort GlyphCount; /* total number of input glyphs */\r
+ HB_UShort PosCount; /* number of PosLookupRecord tables */\r
+ HB_UShort* Input; /* array of input glyph IDs */\r
+ HB_PosLookupRecord* PosLookupRecord;\r
+ /* array of PosLookupRecord tables */\r
+};\r
+\r
+typedef struct HB_PosRule_ HB_PosRule;\r
+\r
+\r
+struct HB_PosRuleSet_\r
+{\r
+ HB_UShort PosRuleCount; /* number of PosRule tables */\r
+ HB_PosRule* PosRule; /* array of PosRule tables */\r
+};\r
+\r
+typedef struct HB_PosRuleSet_ HB_PosRuleSet;\r
+\r
+\r
+struct HB_ContextPosFormat1_\r
+{\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort PosRuleSetCount; /* number of PosRuleSet tables */\r
+ HB_PosRuleSet* PosRuleSet; /* array of PosRuleSet tables */\r
+};\r
+\r
+typedef struct HB_ContextPosFormat1_ HB_ContextPosFormat1;\r
+\r
+\r
+struct HB_PosClassRule_\r
+{\r
+ HB_UShort GlyphCount; /* total number of context classes */\r
+ HB_UShort PosCount; /* number of PosLookupRecord tables */\r
+ HB_UShort* Class; /* array of classes */\r
+ HB_PosLookupRecord* PosLookupRecord;\r
+ /* array of PosLookupRecord tables */\r
+};\r
+\r
+typedef struct HB_PosClassRule_ HB_PosClassRule;\r
+\r
+\r
+struct HB_PosClassSet_\r
+{\r
+ HB_UShort PosClassRuleCount;\r
+ /* number of PosClassRule tables */\r
+ HB_PosClassRule* PosClassRule; /* array of PosClassRule tables */\r
+};\r
+\r
+typedef struct HB_PosClassSet_ HB_PosClassSet;\r
+\r
+\r
+/* The `MaxContextLength' field is not defined in the TTO specification\r
+ but simplifies the implementation of this format. It holds the\r
+ maximal context length used in the context rules. */\r
+\r
+struct HB_ContextPosFormat2_\r
+{\r
+ HB_UShort MaxContextLength;\r
+ /* maximal context length */\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_ClassDefinition ClassDef; /* ClassDef table */\r
+ HB_UShort PosClassSetCount;\r
+ /* number of PosClassSet tables */\r
+ HB_PosClassSet* PosClassSet; /* array of PosClassSet tables */\r
+};\r
+\r
+typedef struct HB_ContextPosFormat2_ HB_ContextPosFormat2;\r
+\r
+\r
+struct HB_ContextPosFormat3_\r
+{\r
+ HB_UShort GlyphCount; /* number of input glyphs */\r
+ HB_UShort PosCount; /* number of PosLookupRecord tables */\r
+ HB_Coverage* Coverage; /* array of Coverage tables */\r
+ HB_PosLookupRecord* PosLookupRecord;\r
+ /* array of PosLookupRecord tables */\r
+};\r
+\r
+typedef struct HB_ContextPosFormat3_ HB_ContextPosFormat3;\r
+\r
+\r
+struct HB_ContextPos_\r
+{\r
+ HB_UShort PosFormat; /* 1, 2, or 3 */\r
+\r
+ union\r
+ {\r
+ HB_ContextPosFormat1 cpf1;\r
+ HB_ContextPosFormat2 cpf2;\r
+ HB_ContextPosFormat3 cpf3;\r
+ } cpf;\r
+};\r
+\r
+typedef struct HB_ContextPos_ HB_ContextPos;\r
+\r
+\r
+/* LookupType 8 */\r
+\r
+struct HB_ChainPosRule_\r
+{\r
+ HB_UShort BacktrackGlyphCount;\r
+ /* total number of backtrack glyphs */\r
+ HB_UShort* Backtrack; /* array of backtrack glyph IDs */\r
+ HB_UShort InputGlyphCount;\r
+ /* total number of input glyphs */\r
+ HB_UShort* Input; /* array of input glyph IDs */\r
+ HB_UShort LookaheadGlyphCount;\r
+ /* total number of lookahead glyphs */\r
+ HB_UShort* Lookahead; /* array of lookahead glyph IDs */\r
+ HB_UShort PosCount; /* number of PosLookupRecords */\r
+ HB_PosLookupRecord* PosLookupRecord;\r
+ /* array of PosLookupRecords */\r
+};\r
+\r
+typedef struct HB_ChainPosRule_ HB_ChainPosRule;\r
+\r
+\r
+struct HB_ChainPosRuleSet_\r
+{\r
+ HB_UShort ChainPosRuleCount;\r
+ /* number of ChainPosRule tables */\r
+ HB_ChainPosRule* ChainPosRule; /* array of ChainPosRule tables */\r
+};\r
+\r
+typedef struct HB_ChainPosRuleSet_ HB_ChainPosRuleSet;\r
+\r
+\r
+struct HB_ChainContextPosFormat1_\r
+{\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort ChainPosRuleSetCount;\r
+ /* number of ChainPosRuleSet tables */\r
+ HB_ChainPosRuleSet* ChainPosRuleSet;\r
+ /* array of ChainPosRuleSet tables */\r
+};\r
+\r
+typedef struct HB_ChainContextPosFormat1_ HB_ChainContextPosFormat1;\r
+\r
+\r
+struct HB_ChainPosClassRule_\r
+{\r
+ HB_UShort BacktrackGlyphCount;\r
+ /* total number of backtrack\r
+ classes */\r
+ HB_UShort* Backtrack; /* array of backtrack classes */\r
+ HB_UShort InputGlyphCount;\r
+ /* total number of context classes */\r
+ HB_UShort* Input; /* array of context classes */\r
+ HB_UShort LookaheadGlyphCount;\r
+ /* total number of lookahead\r
+ classes */\r
+ HB_UShort* Lookahead; /* array of lookahead classes */\r
+ HB_UShort PosCount; /* number of PosLookupRecords */\r
+ HB_PosLookupRecord* PosLookupRecord;\r
+ /* array of substitution lookups */\r
+};\r
+\r
+typedef struct HB_ChainPosClassRule_ HB_ChainPosClassRule;\r
+\r
+\r
+struct HB_ChainPosClassSet_\r
+{\r
+ HB_UShort ChainPosClassRuleCount;\r
+ /* number of ChainPosClassRule\r
+ tables */\r
+ HB_ChainPosClassRule* ChainPosClassRule;\r
+ /* array of ChainPosClassRule\r
+ tables */\r
+};\r
+\r
+typedef struct HB_ChainPosClassSet_ HB_ChainPosClassSet;\r
+\r
+\r
+/* The `MaxXXXLength' fields are not defined in the TTO specification\r
+ but simplifies the implementation of this format. It holds the\r
+ maximal context length used in the specific context rules. */\r
+\r
+struct HB_ChainContextPosFormat2_\r
+{\r
+ HB_Coverage Coverage; /* Coverage table */\r
+\r
+ HB_UShort MaxBacktrackLength;\r
+ /* maximal backtrack length */\r
+ HB_ClassDefinition BacktrackClassDef;\r
+ /* BacktrackClassDef table */\r
+ HB_UShort MaxInputLength;\r
+ /* maximal input length */\r
+ HB_ClassDefinition InputClassDef;\r
+ /* InputClassDef table */\r
+ HB_UShort MaxLookaheadLength;\r
+ /* maximal lookahead length */\r
+ HB_ClassDefinition LookaheadClassDef;\r
+ /* LookaheadClassDef table */\r
+\r
+ HB_UShort ChainPosClassSetCount;\r
+ /* number of ChainPosClassSet\r
+ tables */\r
+ HB_ChainPosClassSet* ChainPosClassSet;\r
+ /* array of ChainPosClassSet\r
+ tables */\r
+};\r
+\r
+typedef struct HB_ChainContextPosFormat2_ HB_ChainContextPosFormat2;\r
+\r
+\r
+struct HB_ChainContextPosFormat3_\r
+{\r
+ HB_UShort BacktrackGlyphCount;\r
+ /* number of backtrack glyphs */\r
+ HB_Coverage* BacktrackCoverage;\r
+ /* array of backtrack Coverage\r
+ tables */\r
+ HB_UShort InputGlyphCount;\r
+ /* number of input glyphs */\r
+ HB_Coverage* InputCoverage;\r
+ /* array of input coverage\r
+ tables */\r
+ HB_UShort LookaheadGlyphCount;\r
+ /* number of lookahead glyphs */\r
+ HB_Coverage* LookaheadCoverage;\r
+ /* array of lookahead coverage\r
+ tables */\r
+ HB_UShort PosCount; /* number of PosLookupRecords */\r
+ HB_PosLookupRecord* PosLookupRecord;\r
+ /* array of substitution lookups */\r
+};\r
+\r
+typedef struct HB_ChainContextPosFormat3_ HB_ChainContextPosFormat3;\r
+\r
+\r
+struct HB_ChainContextPos_\r
+{\r
+ HB_UShort PosFormat; /* 1, 2, or 3 */\r
+\r
+ union\r
+ {\r
+ HB_ChainContextPosFormat1 ccpf1;\r
+ HB_ChainContextPosFormat2 ccpf2;\r
+ HB_ChainContextPosFormat3 ccpf3;\r
+ } ccpf;\r
+};\r
+\r
+typedef struct HB_ChainContextPos_ HB_ChainContextPos;\r
+\r
+\r
+#if 0\r
+/* LookupType 10 */\r
+struct HB_ExtensionPos_\r
+{\r
+ HB_UShort PosFormat; /* always 1 */\r
+ HB_UShort LookuptType; /* lookup-type of referenced subtable */\r
+ HB_GPOS_SubTable *subtable; /* referenced subtable */\r
+};\r
+\r
+typedef struct HB_ExtensionPos_ HB_ExtensionPos;\r
+#endif\r
+\r
+\r
+union HB_GPOS_SubTable_\r
+{\r
+ HB_SinglePos single;\r
+ HB_PairPos pair;\r
+ HB_CursivePos cursive;\r
+ HB_MarkBasePos markbase;\r
+ HB_MarkLigPos marklig;\r
+ HB_MarkMarkPos markmark;\r
+ HB_ContextPos context;\r
+ HB_ChainContextPos chain;\r
+};\r
+\r
+typedef union HB_GPOS_SubTable_ HB_GPOS_SubTable;\r
+\r
+\r
+\r
+HB_INTERNAL HB_Error\r
+_HB_GPOS_Load_SubTable( HB_GPOS_SubTable* st,\r
+ HB_Stream stream,\r
+ HB_UShort lookup_type );\r
+\r
+HB_INTERNAL void\r
+_HB_GPOS_Free_SubTable( HB_GPOS_SubTable* st,\r
+ HB_UShort lookup_type );\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_GPOS_PRIVATE_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_GPOS_H\r
+#define HARFBUZZ_GPOS_H\r
+\r
+#include "harfbuzz-gdef.h"\r
+#include "harfbuzz-buffer.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+\r
+/* Lookup types for glyph positioning */\r
+\r
+#define HB_GPOS_LOOKUP_SINGLE 1\r
+#define HB_GPOS_LOOKUP_PAIR 2\r
+#define HB_GPOS_LOOKUP_CURSIVE 3\r
+#define HB_GPOS_LOOKUP_MARKBASE 4\r
+#define HB_GPOS_LOOKUP_MARKLIG 5\r
+#define HB_GPOS_LOOKUP_MARKMARK 6\r
+#define HB_GPOS_LOOKUP_CONTEXT 7\r
+#define HB_GPOS_LOOKUP_CHAIN 8\r
+#define HB_GPOS_LOOKUP_EXTENSION 9\r
+\r
+/* A pointer to a function which accesses the PostScript interpreter.\r
+ Multiple Master fonts need this interface to convert a metric ID\r
+ (as stored in an OpenType font version 1.2 or higher) `metric_id'\r
+ into a metric value (returned in `metric_value').\r
+\r
+ `data' points to the user-defined structure specified during a\r
+ call to HB_GPOS_Register_MM_Function().\r
+\r
+ `metric_value' must be returned as a scaled value (but shouldn't\r
+ be rounded). */\r
+\r
+typedef HB_Error (*HB_MMFunction)(HB_Font font,\r
+ HB_UShort metric_id,\r
+ HB_Fixed* metric_value,\r
+ void* data );\r
+\r
+\r
+struct HB_GPOSHeader_\r
+{\r
+ HB_16Dot16 Version;\r
+\r
+ HB_ScriptList ScriptList;\r
+ HB_FeatureList FeatureList;\r
+ HB_LookupList LookupList;\r
+\r
+ HB_GDEFHeader* gdef;\r
+\r
+ /* this is OpenType 1.2 -- Multiple Master fonts need this\r
+ callback function to get various metric values from the\r
+ PostScript interpreter. */\r
+\r
+ HB_MMFunction mmfunc;\r
+ void* data;\r
+};\r
+\r
+typedef struct HB_GPOSHeader_ HB_GPOSHeader;\r
+typedef HB_GPOSHeader* HB_GPOS;\r
+\r
+\r
+HB_Error HB_Load_GPOS_Table( HB_Stream stream, \r
+ HB_GPOSHeader** gpos,\r
+ HB_GDEFHeader* gdef,\r
+ HB_Stream gdefStream );\r
+\r
+\r
+HB_Error HB_Done_GPOS_Table( HB_GPOSHeader* gpos );\r
+\r
+\r
+HB_Error HB_GPOS_Select_Script( HB_GPOSHeader* gpos,\r
+ HB_UInt script_tag,\r
+ HB_UShort* script_index );\r
+\r
+HB_Error HB_GPOS_Select_Language( HB_GPOSHeader* gpos,\r
+ HB_UInt language_tag,\r
+ HB_UShort script_index,\r
+ HB_UShort* language_index,\r
+ HB_UShort* req_feature_index );\r
+\r
+HB_Error HB_GPOS_Select_Feature( HB_GPOSHeader* gpos,\r
+ HB_UInt feature_tag,\r
+ HB_UShort script_index,\r
+ HB_UShort language_index,\r
+ HB_UShort* feature_index );\r
+\r
+\r
+HB_Error HB_GPOS_Query_Scripts( HB_GPOSHeader* gpos,\r
+ HB_UInt** script_tag_list );\r
+\r
+HB_Error HB_GPOS_Query_Languages( HB_GPOSHeader* gpos,\r
+ HB_UShort script_index,\r
+ HB_UInt** language_tag_list );\r
+\r
+HB_Error HB_GPOS_Query_Features( HB_GPOSHeader* gpos,\r
+ HB_UShort script_index,\r
+ HB_UShort language_index,\r
+ HB_UInt** feature_tag_list );\r
+\r
+\r
+HB_Error HB_GPOS_Add_Feature( HB_GPOSHeader* gpos,\r
+ HB_UShort feature_index,\r
+ HB_UInt property );\r
+\r
+HB_Error HB_GPOS_Clear_Features( HB_GPOSHeader* gpos );\r
+\r
+\r
+HB_Error HB_GPOS_Register_MM_Function( HB_GPOSHeader* gpos,\r
+ HB_MMFunction mmfunc,\r
+ void* data );\r
+\r
+/* If `dvi' is TRUE, glyph contour points for anchor points and device\r
+ tables are ignored -- you will get device independent values. */\r
+\r
+\r
+HB_Error HB_GPOS_Apply_String( HB_Font font,\r
+ HB_GPOSHeader* gpos,\r
+ HB_UShort load_flags,\r
+ HB_Buffer buffer,\r
+ HB_Bool dvi,\r
+ HB_Bool r2l );\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_GPOS_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_GSUB_PRIVATE_H\r
+#define HARFBUZZ_GSUB_PRIVATE_H\r
+\r
+#include "harfbuzz-impl.h"\r
+#include "harfbuzz-stream-private.h"\r
+#include "harfbuzz-gsub.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+\r
+typedef union HB_GSUB_SubTable_ HB_GSUB_SubTable;\r
+\r
+/* LookupType 1 */\r
+\r
+struct HB_SingleSubstFormat1_\r
+{\r
+ HB_Short DeltaGlyphID; /* constant added to get\r
+ substitution glyph index */\r
+};\r
+\r
+typedef struct HB_SingleSubstFormat1_ HB_SingleSubstFormat1;\r
+\r
+\r
+struct HB_SingleSubstFormat2_\r
+{\r
+ HB_UShort GlyphCount; /* number of glyph IDs in\r
+ Substitute array */\r
+ HB_UShort* Substitute; /* array of substitute glyph IDs */\r
+};\r
+\r
+typedef struct HB_SingleSubstFormat2_ HB_SingleSubstFormat2;\r
+\r
+\r
+struct HB_SingleSubst_\r
+{\r
+ HB_UShort SubstFormat; /* 1 or 2 */\r
+ HB_Coverage Coverage; /* Coverage table */\r
+\r
+ union\r
+ {\r
+ HB_SingleSubstFormat1 ssf1;\r
+ HB_SingleSubstFormat2 ssf2;\r
+ } ssf;\r
+};\r
+\r
+typedef struct HB_SingleSubst_ HB_SingleSubst;\r
+\r
+\r
+/* LookupType 2 */\r
+\r
+struct HB_Sequence_\r
+{\r
+ HB_UShort GlyphCount; /* number of glyph IDs in the\r
+ Substitute array */\r
+ HB_UShort* Substitute; /* string of glyph IDs to\r
+ substitute */\r
+};\r
+\r
+typedef struct HB_Sequence_ HB_Sequence;\r
+\r
+\r
+struct HB_MultipleSubst_\r
+{\r
+ HB_UShort SubstFormat; /* always 1 */\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort SequenceCount; /* number of Sequence tables */\r
+ HB_Sequence* Sequence; /* array of Sequence tables */\r
+};\r
+\r
+typedef struct HB_MultipleSubst_ HB_MultipleSubst;\r
+\r
+\r
+/* LookupType 3 */\r
+\r
+struct HB_AlternateSet_\r
+{\r
+ HB_UShort GlyphCount; /* number of glyph IDs in the\r
+ Alternate array */\r
+ HB_UShort* Alternate; /* array of alternate glyph IDs */\r
+};\r
+\r
+typedef struct HB_AlternateSet_ HB_AlternateSet;\r
+\r
+\r
+struct HB_AlternateSubst_\r
+{\r
+ HB_UShort SubstFormat; /* always 1 */\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort AlternateSetCount;\r
+ /* number of AlternateSet tables */\r
+ HB_AlternateSet* AlternateSet; /* array of AlternateSet tables */\r
+};\r
+\r
+typedef struct HB_AlternateSubst_ HB_AlternateSubst;\r
+\r
+\r
+/* LookupType 4 */\r
+\r
+struct HB_Ligature_\r
+{\r
+ HB_UShort LigGlyph; /* glyphID of ligature\r
+ to substitute */\r
+ HB_UShort ComponentCount; /* number of components in ligature */\r
+ HB_UShort* Component; /* array of component glyph IDs */\r
+};\r
+\r
+typedef struct HB_Ligature_ HB_Ligature;\r
+\r
+\r
+struct HB_LigatureSet_\r
+{\r
+ HB_UShort LigatureCount; /* number of Ligature tables */\r
+ HB_Ligature* Ligature; /* array of Ligature tables */\r
+};\r
+\r
+typedef struct HB_LigatureSet_ HB_LigatureSet;\r
+\r
+\r
+struct HB_LigatureSubst_\r
+{\r
+ HB_UShort SubstFormat; /* always 1 */\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort LigatureSetCount; /* number of LigatureSet tables */\r
+ HB_LigatureSet* LigatureSet; /* array of LigatureSet tables */\r
+};\r
+\r
+typedef struct HB_LigatureSubst_ HB_LigatureSubst;\r
+\r
+\r
+/* needed by both lookup type 5 and 6 */\r
+\r
+struct HB_SubstLookupRecord_\r
+{\r
+ HB_UShort SequenceIndex; /* index into current\r
+ glyph sequence */\r
+ HB_UShort LookupListIndex; /* Lookup to apply to that pos. */\r
+};\r
+\r
+typedef struct HB_SubstLookupRecord_ HB_SubstLookupRecord;\r
+\r
+\r
+/* LookupType 5 */\r
+\r
+struct HB_SubRule_\r
+{\r
+ HB_UShort GlyphCount; /* total number of input glyphs */\r
+ HB_UShort SubstCount; /* number of SubstLookupRecord\r
+ tables */\r
+ HB_UShort* Input; /* array of input glyph IDs */\r
+ HB_SubstLookupRecord* SubstLookupRecord;\r
+ /* array of SubstLookupRecord\r
+ tables */\r
+};\r
+\r
+typedef struct HB_SubRule_ HB_SubRule;\r
+\r
+\r
+struct HB_SubRuleSet_\r
+{\r
+ HB_UShort SubRuleCount; /* number of SubRule tables */\r
+ HB_SubRule* SubRule; /* array of SubRule tables */\r
+};\r
+\r
+typedef struct HB_SubRuleSet_ HB_SubRuleSet;\r
+\r
+\r
+struct HB_ContextSubstFormat1_\r
+{\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort SubRuleSetCount; /* number of SubRuleSet tables */\r
+ HB_SubRuleSet* SubRuleSet; /* array of SubRuleSet tables */\r
+};\r
+\r
+typedef struct HB_ContextSubstFormat1_ HB_ContextSubstFormat1;\r
+\r
+\r
+struct HB_SubClassRule_\r
+{\r
+ HB_UShort GlyphCount; /* total number of context classes */\r
+ HB_UShort SubstCount; /* number of SubstLookupRecord\r
+ tables */\r
+ HB_UShort* Class; /* array of classes */\r
+ HB_SubstLookupRecord* SubstLookupRecord;\r
+ /* array of SubstLookupRecord\r
+ tables */\r
+};\r
+\r
+typedef struct HB_SubClassRule_ HB_SubClassRule;\r
+\r
+\r
+struct HB_SubClassSet_\r
+{\r
+ HB_UShort SubClassRuleCount;\r
+ /* number of SubClassRule tables */\r
+ HB_SubClassRule* SubClassRule; /* array of SubClassRule tables */\r
+};\r
+\r
+typedef struct HB_SubClassSet_ HB_SubClassSet;\r
+\r
+\r
+/* The `MaxContextLength' field is not defined in the TTO specification\r
+ but simplifies the implementation of this format. It holds the\r
+ maximal context length used in the context rules. */\r
+\r
+struct HB_ContextSubstFormat2_\r
+{\r
+ HB_UShort MaxContextLength;\r
+ /* maximal context length */\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_ClassDefinition ClassDef; /* ClassDef table */\r
+ HB_UShort SubClassSetCount;\r
+ /* number of SubClassSet tables */\r
+ HB_SubClassSet* SubClassSet; /* array of SubClassSet tables */\r
+};\r
+\r
+typedef struct HB_ContextSubstFormat2_ HB_ContextSubstFormat2;\r
+\r
+\r
+struct HB_ContextSubstFormat3_\r
+{\r
+ HB_UShort GlyphCount; /* number of input glyphs */\r
+ HB_UShort SubstCount; /* number of SubstLookupRecords */\r
+ HB_Coverage* Coverage; /* array of Coverage tables */\r
+ HB_SubstLookupRecord* SubstLookupRecord;\r
+ /* array of substitution lookups */\r
+};\r
+\r
+typedef struct HB_ContextSubstFormat3_ HB_ContextSubstFormat3;\r
+\r
+\r
+struct HB_ContextSubst_\r
+{\r
+ HB_UShort SubstFormat; /* 1, 2, or 3 */\r
+\r
+ union\r
+ {\r
+ HB_ContextSubstFormat1 csf1;\r
+ HB_ContextSubstFormat2 csf2;\r
+ HB_ContextSubstFormat3 csf3;\r
+ } csf;\r
+};\r
+\r
+typedef struct HB_ContextSubst_ HB_ContextSubst;\r
+\r
+\r
+/* LookupType 6 */\r
+\r
+struct HB_ChainSubRule_\r
+{\r
+ HB_UShort BacktrackGlyphCount;\r
+ /* total number of backtrack glyphs */\r
+ HB_UShort* Backtrack; /* array of backtrack glyph IDs */\r
+ HB_UShort InputGlyphCount;\r
+ /* total number of input glyphs */\r
+ HB_UShort* Input; /* array of input glyph IDs */\r
+ HB_UShort LookaheadGlyphCount;\r
+ /* total number of lookahead glyphs */\r
+ HB_UShort* Lookahead; /* array of lookahead glyph IDs */\r
+ HB_UShort SubstCount; /* number of SubstLookupRecords */\r
+ HB_SubstLookupRecord* SubstLookupRecord;\r
+ /* array of SubstLookupRecords */\r
+};\r
+\r
+typedef struct HB_ChainSubRule_ HB_ChainSubRule;\r
+\r
+\r
+struct HB_ChainSubRuleSet_\r
+{\r
+ HB_UShort ChainSubRuleCount;\r
+ /* number of ChainSubRule tables */\r
+ HB_ChainSubRule* ChainSubRule; /* array of ChainSubRule tables */\r
+};\r
+\r
+typedef struct HB_ChainSubRuleSet_ HB_ChainSubRuleSet;\r
+\r
+\r
+struct HB_ChainContextSubstFormat1_\r
+{\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort ChainSubRuleSetCount;\r
+ /* number of ChainSubRuleSet tables */\r
+ HB_ChainSubRuleSet* ChainSubRuleSet;\r
+ /* array of ChainSubRuleSet tables */\r
+};\r
+\r
+typedef struct HB_ChainContextSubstFormat1_ HB_ChainContextSubstFormat1;\r
+\r
+\r
+struct HB_ChainSubClassRule_\r
+{\r
+ HB_UShort BacktrackGlyphCount;\r
+ /* total number of backtrack\r
+ classes */\r
+ HB_UShort* Backtrack; /* array of backtrack classes */\r
+ HB_UShort InputGlyphCount;\r
+ /* total number of context classes */\r
+ HB_UShort* Input; /* array of context classes */\r
+ HB_UShort LookaheadGlyphCount;\r
+ /* total number of lookahead\r
+ classes */\r
+ HB_UShort* Lookahead; /* array of lookahead classes */\r
+ HB_UShort SubstCount; /* number of SubstLookupRecords */\r
+ HB_SubstLookupRecord* SubstLookupRecord;\r
+ /* array of substitution lookups */\r
+};\r
+\r
+typedef struct HB_ChainSubClassRule_ HB_ChainSubClassRule;\r
+\r
+\r
+struct HB_ChainSubClassSet_\r
+{\r
+ HB_UShort ChainSubClassRuleCount;\r
+ /* number of ChainSubClassRule\r
+ tables */\r
+ HB_ChainSubClassRule* ChainSubClassRule;\r
+ /* array of ChainSubClassRule\r
+ tables */\r
+};\r
+\r
+typedef struct HB_ChainSubClassSet_ HB_ChainSubClassSet;\r
+\r
+\r
+/* The `MaxXXXLength' fields are not defined in the TTO specification\r
+ but simplifies the implementation of this format. It holds the\r
+ maximal context length used in the specific context rules. */\r
+\r
+struct HB_ChainContextSubstFormat2_\r
+{\r
+ HB_Coverage Coverage; /* Coverage table */\r
+\r
+ HB_UShort MaxBacktrackLength;\r
+ /* maximal backtrack length */\r
+ HB_ClassDefinition BacktrackClassDef;\r
+ /* BacktrackClassDef table */\r
+ HB_UShort MaxInputLength;\r
+ /* maximal input length */\r
+ HB_ClassDefinition InputClassDef;\r
+ /* InputClassDef table */\r
+ HB_UShort MaxLookaheadLength;\r
+ /* maximal lookahead length */\r
+ HB_ClassDefinition LookaheadClassDef;\r
+ /* LookaheadClassDef table */\r
+\r
+ HB_UShort ChainSubClassSetCount;\r
+ /* number of ChainSubClassSet\r
+ tables */\r
+ HB_ChainSubClassSet* ChainSubClassSet;\r
+ /* array of ChainSubClassSet\r
+ tables */\r
+};\r
+\r
+typedef struct HB_ChainContextSubstFormat2_ HB_ChainContextSubstFormat2;\r
+\r
+\r
+struct HB_ChainContextSubstFormat3_\r
+{\r
+ HB_UShort BacktrackGlyphCount;\r
+ /* number of backtrack glyphs */\r
+ HB_Coverage* BacktrackCoverage;\r
+ /* array of backtrack Coverage\r
+ tables */\r
+ HB_UShort InputGlyphCount;\r
+ /* number of input glyphs */\r
+ HB_Coverage* InputCoverage;\r
+ /* array of input coverage\r
+ tables */\r
+ HB_UShort LookaheadGlyphCount;\r
+ /* number of lookahead glyphs */\r
+ HB_Coverage* LookaheadCoverage;\r
+ /* array of lookahead coverage\r
+ tables */\r
+ HB_UShort SubstCount; /* number of SubstLookupRecords */\r
+ HB_SubstLookupRecord* SubstLookupRecord;\r
+ /* array of substitution lookups */\r
+};\r
+\r
+typedef struct HB_ChainContextSubstFormat3_ HB_ChainContextSubstFormat3;\r
+\r
+\r
+struct HB_ChainContextSubst_\r
+{\r
+ HB_UShort SubstFormat; /* 1, 2, or 3 */\r
+\r
+ union\r
+ {\r
+ HB_ChainContextSubstFormat1 ccsf1;\r
+ HB_ChainContextSubstFormat2 ccsf2;\r
+ HB_ChainContextSubstFormat3 ccsf3;\r
+ } ccsf;\r
+};\r
+\r
+typedef struct HB_ChainContextSubst_ HB_ChainContextSubst;\r
+\r
+\r
+#if 0\r
+/* LookupType 7 */\r
+struct HB_ExtensionSubst_\r
+{\r
+ HB_UShort SubstFormat; /* always 1 */\r
+ HB_UShort LookuptType; /* lookup-type of referenced subtable */\r
+ HB_GSUB_SubTable *subtable; /* referenced subtable */\r
+};\r
+\r
+typedef struct HB_ExtensionSubst_ HB_ExtensionSubst;\r
+#endif\r
+\r
+\r
+/* LookupType 8 */\r
+struct HB_ReverseChainContextSubst_\r
+{\r
+ HB_UShort SubstFormat; /* always 1 */\r
+ HB_Coverage Coverage; /* coverage table for input glyphs */\r
+ HB_UShort BacktrackGlyphCount; /* number of backtrack glyphs */\r
+ HB_Coverage* BacktrackCoverage; /* array of backtrack Coverage\r
+ tables */\r
+ HB_UShort LookaheadGlyphCount; /* number of lookahead glyphs */\r
+ HB_Coverage* LookaheadCoverage; /* array of lookahead Coverage\r
+ tables */\r
+ HB_UShort GlyphCount; /* number of Glyph IDs */\r
+ HB_UShort* Substitute; /* array of substitute Glyph ID */\r
+};\r
+\r
+typedef struct HB_ReverseChainContextSubst_ HB_ReverseChainContextSubst;\r
+\r
+\r
+union HB_GSUB_SubTable_\r
+{\r
+ HB_SingleSubst single;\r
+ HB_MultipleSubst multiple;\r
+ HB_AlternateSubst alternate;\r
+ HB_LigatureSubst ligature;\r
+ HB_ContextSubst context;\r
+ HB_ChainContextSubst chain;\r
+ HB_ReverseChainContextSubst reverse;\r
+};\r
+\r
+\r
+\r
+\r
+HB_INTERNAL HB_Error\r
+_HB_GSUB_Load_SubTable( HB_GSUB_SubTable* st,\r
+ HB_Stream stream,\r
+ HB_UShort lookup_type );\r
+\r
+HB_INTERNAL void\r
+_HB_GSUB_Free_SubTable( HB_GSUB_SubTable* st,\r
+ HB_UShort lookup_type );\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_GSUB_PRIVATE_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_GSUB_H\r
+#define HARFBUZZ_GSUB_H\r
+\r
+#include "harfbuzz-gdef.h"\r
+#include "harfbuzz-buffer.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+\r
+/* Lookup types for glyph substitution */\r
+\r
+#define HB_GSUB_LOOKUP_SINGLE 1\r
+#define HB_GSUB_LOOKUP_MULTIPLE 2\r
+#define HB_GSUB_LOOKUP_ALTERNATE 3\r
+#define HB_GSUB_LOOKUP_LIGATURE 4\r
+#define HB_GSUB_LOOKUP_CONTEXT 5\r
+#define HB_GSUB_LOOKUP_CHAIN 6\r
+#define HB_GSUB_LOOKUP_EXTENSION 7\r
+#define HB_GSUB_LOOKUP_REVERSE_CHAIN 8\r
+\r
+\r
+/* A pointer to a function which selects the alternate glyph. `pos' is\r
+ the position of the glyph with index `glyphID', `num_alternates'\r
+ gives the number of alternates in the `alternates' array. `data'\r
+ points to the user-defined structure specified during a call to\r
+ HB_GSUB_Register_Alternate_Function(). The function must return an\r
+ index into the `alternates' array. */\r
+\r
+typedef HB_UShort (*HB_AltFunction)(HB_UInt pos,\r
+ HB_UShort glyphID,\r
+ HB_UShort num_alternates,\r
+ HB_UShort* alternates,\r
+ void* data );\r
+\r
+\r
+struct HB_GSUBHeader_\r
+{\r
+ HB_UInt offset;\r
+\r
+ HB_16Dot16 Version;\r
+\r
+ HB_ScriptList ScriptList;\r
+ HB_FeatureList FeatureList;\r
+ HB_LookupList LookupList;\r
+\r
+ HB_GDEFHeader* gdef;\r
+\r
+ /* the next two fields are used for an alternate substitution callback\r
+ function to select the proper alternate glyph. */\r
+\r
+ HB_AltFunction altfunc;\r
+ void* data;\r
+};\r
+\r
+typedef struct HB_GSUBHeader_ HB_GSUBHeader;\r
+typedef HB_GSUBHeader* HB_GSUB;\r
+\r
+\r
+HB_Error HB_Load_GSUB_Table( HB_Stream stream,\r
+ HB_GSUBHeader** gsub,\r
+ HB_GDEFHeader* gdef,\r
+ HB_Stream gdefStream );\r
+\r
+\r
+HB_Error HB_Done_GSUB_Table( HB_GSUBHeader* gsub );\r
+\r
+\r
+HB_Error HB_GSUB_Select_Script( HB_GSUBHeader* gsub,\r
+ HB_UInt script_tag,\r
+ HB_UShort* script_index );\r
+\r
+HB_Error HB_GSUB_Select_Language( HB_GSUBHeader* gsub,\r
+ HB_UInt language_tag,\r
+ HB_UShort script_index,\r
+ HB_UShort* language_index,\r
+ HB_UShort* req_feature_index );\r
+\r
+HB_Error HB_GSUB_Select_Feature( HB_GSUBHeader* gsub,\r
+ HB_UInt feature_tag,\r
+ HB_UShort script_index,\r
+ HB_UShort language_index,\r
+ HB_UShort* feature_index );\r
+\r
+\r
+HB_Error HB_GSUB_Query_Scripts( HB_GSUBHeader* gsub,\r
+ HB_UInt** script_tag_list );\r
+\r
+HB_Error HB_GSUB_Query_Languages( HB_GSUBHeader* gsub,\r
+ HB_UShort script_index,\r
+ HB_UInt** language_tag_list );\r
+\r
+HB_Error HB_GSUB_Query_Features( HB_GSUBHeader* gsub,\r
+ HB_UShort script_index,\r
+ HB_UShort language_index,\r
+ HB_UInt** feature_tag_list );\r
+\r
+\r
+HB_Error HB_GSUB_Add_Feature( HB_GSUBHeader* gsub,\r
+ HB_UShort feature_index,\r
+ HB_UInt property );\r
+\r
+HB_Error HB_GSUB_Clear_Features( HB_GSUBHeader* gsub );\r
+\r
+\r
+HB_Error HB_GSUB_Register_Alternate_Function( HB_GSUBHeader* gsub,\r
+ HB_AltFunction altfunc,\r
+ void* data );\r
+\r
+\r
+HB_Error HB_GSUB_Apply_String( HB_GSUBHeader* gsub,\r
+ HB_Buffer buffer );\r
+\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_GSUB_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_IMPL_H\r
+#define HARFBUZZ_IMPL_H\r
+\r
+#include "harfbuzz-global.h"\r
+\r
+#include <stdlib.h>\r
+\r
+HB_BEGIN_HEADER\r
+\r
+#ifndef HB_INTERNAL\r
+# define HB_INTERNAL\r
+#endif\r
+\r
+#ifndef NULL\r
+# define NULL ((void *)0)\r
+#endif\r
+\r
+#ifndef FALSE\r
+# define FALSE 0\r
+#endif\r
+\r
+#ifndef TRUE\r
+# define TRUE 1\r
+#endif\r
+\r
+#ifndef TTAG_GDEF\r
+# define TTAG_GDEF HB_MAKE_TAG( 'G', 'D', 'E', 'F' )\r
+#endif\r
+#ifndef TTAG_GPOS\r
+# define TTAG_GPOS HB_MAKE_TAG( 'G', 'P', 'O', 'S' )\r
+#endif\r
+#ifndef TTAG_GSUB\r
+# define TTAG_GSUB HB_MAKE_TAG( 'G', 'S', 'U', 'B' )\r
+#endif\r
+\r
+#ifndef HB_UNUSED\r
+# define HB_UNUSED(arg) ((arg) = (arg))\r
+#endif\r
+\r
+#define HB_LIKELY(cond) (cond)\r
+#define HB_UNLIKELY(cond) (cond)\r
+\r
+#define ARRAY_LEN(Array) ((int)(sizeof (Array) / sizeof (Array)[0]))\r
+\r
+\r
+\r
+#define HB_IsHighSurrogate(ucs) \\r
+ (((ucs) & 0xfc00) == 0xd800)\r
+\r
+#define HB_IsLowSurrogate(ucs) \\r
+ (((ucs) & 0xfc00) == 0xdc00)\r
+\r
+#define HB_SurrogateToUcs4(high, low) \\r
+ (((HB_UChar32)(high))<<10) + (low) - 0x35fdc00;\r
+\r
+\r
+\r
+\r
+\r
+#define ALLOC(_ptr,_size,_type) \\r
+ ( (_ptr) = (_type)_hb_alloc( _size, &error ), error != 0 )\r
+\r
+#define REALLOC(_ptr,_newsz,_type) \\r
+ ( (_ptr) = (_type)_hb_realloc( (_ptr), (_newsz), &error ), error != 0 )\r
+\r
+#define FREE(_ptr) \\r
+ do { \\r
+ if ( (_ptr) ) \\r
+ { \\r
+ _hb_free( _ptr ); \\r
+ _ptr = NULL; \\r
+ } \\r
+ } while (0)\r
+\r
+#define ALLOC_ARRAY(_ptr,_count,_type) \\r
+ ALLOC(_ptr,(_count)*sizeof(_type),_type*)\r
+\r
+#define REALLOC_ARRAY(_ptr,_newcnt,_type) \\r
+ REALLOC(_ptr,(_newcnt)*sizeof(_type),_type*)\r
+\r
+#define MEM_Copy(dest,source,count) memcpy( (char*)(dest), (const char*)(source), (size_t)(count) )\r
+\r
+#define ERR_HB(err) _hb_err (err)\r
+\r
+\r
+//HB_INTERNAL\r
+HB_Pointer\r
+_hb_alloc( size_t size,\r
+ HB_Error *perror_ );\r
+\r
+//HB_INTERNAL\r
+ HB_Pointer\r
+_hb_realloc( HB_Pointer block,\r
+ size_t new_size,\r
+ HB_Error *perror_ );\r
+\r
+//HB_INTERNAL \r
+ void\r
+_hb_free( HB_Pointer block );\r
+\r
+\r
+/* helper func to set a breakpoint on */\r
+//HB_INTERNAL \r
+HB_Error\r
+_hb_err(HB_Error code);\r
+\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_IMPL_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_OPEN_PRIVATE_H\r
+#define HARFBUZZ_OPEN_PRIVATE_H\r
+\r
+#include "harfbuzz-impl.h"\r
+#include "harfbuzz-open.h"\r
+#include "harfbuzz-gsub-private.h"\r
+#include "harfbuzz-gpos-private.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+\r
+struct HB_SubTable_\r
+{\r
+ union\r
+ {\r
+ HB_GSUB_SubTable gsub;\r
+ HB_GPOS_SubTable gpos;\r
+ } st;\r
+};\r
+\r
+\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Load_ScriptList( HB_ScriptList* sl,\r
+ HB_Stream input );\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Load_FeatureList( HB_FeatureList* fl,\r
+ HB_Stream input );\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Load_LookupList( HB_LookupList* ll,\r
+ HB_Stream input,\r
+ HB_Type type );\r
+\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Load_Coverage( HB_Coverage* c,\r
+ HB_Stream input );\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Load_ClassDefinition( HB_ClassDefinition* cd,\r
+ HB_UShort limit,\r
+ HB_Stream input );\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Load_EmptyOrClassDefinition( HB_ClassDefinition* cd,\r
+ HB_UShort limit,\r
+ HB_UInt class_offset,\r
+ HB_UInt base_offset,\r
+ HB_Stream input );\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Load_Device( HB_Device* d,\r
+ HB_Stream input );\r
+\r
+HB_INTERNAL void _HB_OPEN_Free_ScriptList( HB_ScriptList* sl );\r
+HB_INTERNAL void _HB_OPEN_Free_FeatureList( HB_FeatureList* fl );\r
+HB_INTERNAL void _HB_OPEN_Free_LookupList( HB_LookupList* ll,\r
+ HB_Type type );\r
+\r
+HB_INTERNAL void _HB_OPEN_Free_Coverage( HB_Coverage* c );\r
+HB_INTERNAL void _HB_OPEN_Free_ClassDefinition( HB_ClassDefinition* cd );\r
+HB_INTERNAL void _HB_OPEN_Free_Device( HB_Device* d );\r
+\r
+\r
+\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Coverage_Index( HB_Coverage* c,\r
+ HB_UShort glyphID,\r
+ HB_UShort* index );\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Get_Class( HB_ClassDefinition* cd,\r
+ HB_UShort glyphID,\r
+ HB_UShort* klass,\r
+ HB_UShort* index );\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Get_Device( HB_Device* d,\r
+ HB_UShort size,\r
+ HB_Short* value );\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_OPEN_PRIVATE_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_OPEN_H\r
+#define HARFBUZZ_OPEN_H\r
+\r
+#include "harfbuzz-global.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+/* Use this if a feature applies to all glyphs */\r
+#define HB_ALL_GLYPHS 0xFFFF\r
+\r
+#define HB_DEFAULT_LANGUAGE 0xFFFF\r
+\r
+#define HB_MAX_NESTING_LEVEL 100\r
+\r
+\r
+/* Script list related structures */\r
+\r
+struct HB_LangSys_\r
+{\r
+ HB_UShort LookupOrderOffset; /* always 0 for TT Open 1.0 */\r
+ HB_UShort ReqFeatureIndex; /* required FeatureIndex */\r
+ HB_UShort FeatureCount; /* number of Feature indices */\r
+ HB_UShort* FeatureIndex; /* array of Feature indices */\r
+};\r
+\r
+typedef struct HB_LangSys_ HB_LangSys;\r
+\r
+\r
+struct HB_LangSysRecord_\r
+{\r
+ HB_UInt LangSysTag; /* LangSysTag identifier */\r
+ HB_LangSys LangSys; /* LangSys table */\r
+};\r
+\r
+typedef struct HB_LangSysRecord_ HB_LangSysRecord;\r
+\r
+\r
+struct HB_ScriptTable_\r
+{\r
+ HB_LangSys DefaultLangSys; /* DefaultLangSys table */\r
+ HB_UShort LangSysCount; /* number of LangSysRecords */\r
+ HB_LangSysRecord* LangSysRecord; /* array of LangSysRecords */\r
+};\r
+\r
+typedef struct HB_ScriptTable_ HB_ScriptTable;\r
+\r
+\r
+struct HB_ScriptRecord_\r
+{\r
+ HB_UInt ScriptTag; /* ScriptTag identifier */\r
+ HB_ScriptTable Script; /* Script table */\r
+};\r
+\r
+typedef struct HB_ScriptRecord_ HB_ScriptRecord;\r
+\r
+\r
+struct HB_ScriptList_\r
+{\r
+ HB_UShort ScriptCount; /* number of ScriptRecords */\r
+ HB_ScriptRecord* ScriptRecord; /* array of ScriptRecords */\r
+};\r
+\r
+typedef struct HB_ScriptList_ HB_ScriptList;\r
+\r
+\r
+/* Feature list related structures */\r
+\r
+struct HB_Feature_\r
+{\r
+ HB_UShort FeatureParams; /* always 0 for TT Open 1.0 */\r
+ HB_UShort LookupListCount; /* number of LookupList indices */\r
+ HB_UShort* LookupListIndex; /* array of LookupList indices */\r
+};\r
+\r
+typedef struct HB_Feature_ HB_Feature;\r
+\r
+\r
+struct HB_FeatureRecord_\r
+{\r
+ HB_UInt FeatureTag; /* FeatureTag identifier */\r
+ HB_Feature Feature; /* Feature table */\r
+};\r
+\r
+typedef struct HB_FeatureRecord_ HB_FeatureRecord;\r
+\r
+\r
+struct HB_FeatureList_\r
+{\r
+ HB_UShort FeatureCount; /* number of FeatureRecords */\r
+ HB_FeatureRecord* FeatureRecord; /* array of FeatureRecords */\r
+ HB_UShort* ApplyOrder; /* order to apply features */\r
+ HB_UShort ApplyCount; /* number of elements in ApplyOrder */\r
+};\r
+\r
+typedef struct HB_FeatureList_ HB_FeatureList;\r
+\r
+\r
+/* Lookup list related structures */\r
+\r
+typedef struct HB_SubTable_ HB_SubTable;\r
+\r
+\r
+struct HB_Lookup_\r
+{\r
+ HB_UShort LookupType; /* Lookup type */\r
+ HB_UShort LookupFlag; /* Lookup qualifiers */\r
+ HB_UShort SubTableCount; /* number of SubTables */\r
+ HB_SubTable* SubTable; /* array of SubTables */\r
+};\r
+\r
+typedef struct HB_Lookup_ HB_Lookup;\r
+\r
+\r
+/* The `Properties' field is not defined in the OpenType specification but\r
+ is needed for processing lookups. If properties[n] is > 0, the\r
+ functions HB_GSUB_Apply_String() resp. HB_GPOS_Apply_String() will\r
+ process Lookup[n] for glyphs which have the specific bit not set in\r
+ the `properties' field of the input string object. */\r
+\r
+struct HB_LookupList_\r
+{\r
+ HB_UShort LookupCount; /* number of Lookups */\r
+ HB_Lookup* Lookup; /* array of Lookup records */\r
+ HB_UInt* Properties; /* array of flags */\r
+};\r
+\r
+typedef struct HB_LookupList_ HB_LookupList;\r
+\r
+\r
+/* Possible LookupFlag bit masks. `HB_LOOKUP_FLAG_IGNORE_SPECIAL_MARKS' comes from the\r
+ OpenType 1.2 specification; HB_LOOKUP_FLAG_RIGHT_TO_LEFT has been (re)introduced in\r
+ OpenType 1.3 -- if set, the last glyph in a cursive attachment\r
+ sequence has to be positioned on the baseline -- regardless of the\r
+ writing direction. */\r
+\r
+#define HB_LOOKUP_FLAG_RIGHT_TO_LEFT 0x0001\r
+#define HB_LOOKUP_FLAG_IGNORE_BASE_GLYPHS 0x0002\r
+#define HB_LOOKUP_FLAG_IGNORE_LIGATURES 0x0004\r
+#define HB_LOOKUP_FLAG_IGNORE_MARKS 0x0008\r
+#define HB_LOOKUP_FLAG_IGNORE_SPECIAL_MARKS 0xFF00\r
+\r
+\r
+struct HB_CoverageFormat1_\r
+{\r
+ HB_UShort GlyphCount; /* number of glyphs in GlyphArray */\r
+ HB_UShort* GlyphArray; /* array of glyph IDs */\r
+};\r
+\r
+typedef struct HB_CoverageFormat1_ HB_CoverageFormat1;\r
+\r
+\r
+struct HB_RangeRecord_\r
+{\r
+ HB_UShort Start; /* first glyph ID in the range */\r
+ HB_UShort End; /* last glyph ID in the range */\r
+ HB_UShort StartCoverageIndex; /* coverage index of first\r
+ glyph ID in the range */\r
+};\r
+\r
+typedef struct HB_RangeRecord_ HB_RangeRecord;\r
+\r
+\r
+struct HB_CoverageFormat2_\r
+{\r
+ HB_UShort RangeCount; /* number of RangeRecords */\r
+ HB_RangeRecord* RangeRecord; /* array of RangeRecords */\r
+};\r
+\r
+typedef struct HB_CoverageFormat2_ HB_CoverageFormat2;\r
+\r
+\r
+struct HB_Coverage_\r
+{\r
+ HB_UShort CoverageFormat; /* 1 or 2 */\r
+\r
+ union\r
+ {\r
+ HB_CoverageFormat1 cf1;\r
+ HB_CoverageFormat2 cf2;\r
+ } cf;\r
+};\r
+\r
+typedef struct HB_Coverage_ HB_Coverage;\r
+\r
+\r
+struct HB_ClassDefFormat1_\r
+{\r
+ HB_UShort StartGlyph; /* first glyph ID of the\r
+ ClassValueArray */\r
+ HB_UShort GlyphCount; /* size of the ClassValueArray */\r
+ HB_UShort* ClassValueArray; /* array of class values */\r
+};\r
+\r
+typedef struct HB_ClassDefFormat1_ HB_ClassDefFormat1;\r
+\r
+\r
+struct HB_ClassRangeRecord_\r
+{\r
+ HB_UShort Start; /* first glyph ID in the range */\r
+ HB_UShort End; /* last glyph ID in the range */\r
+ HB_UShort Class; /* applied to all glyphs in range */\r
+};\r
+\r
+typedef struct HB_ClassRangeRecord_ HB_ClassRangeRecord;\r
+\r
+\r
+struct HB_ClassDefFormat2_\r
+{\r
+ HB_UShort ClassRangeCount;\r
+ /* number of ClassRangeRecords */\r
+ HB_ClassRangeRecord* ClassRangeRecord;\r
+ /* array of ClassRangeRecords */\r
+};\r
+\r
+typedef struct HB_ClassDefFormat2_ HB_ClassDefFormat2;\r
+\r
+\r
+struct HB_ClassDefinition_\r
+{\r
+ HB_Bool loaded;\r
+\r
+ HB_UShort ClassFormat; /* 1 or 2 */\r
+\r
+ union\r
+ {\r
+ HB_ClassDefFormat1 cd1;\r
+ HB_ClassDefFormat2 cd2;\r
+ } cd;\r
+};\r
+\r
+typedef struct HB_ClassDefinition_ HB_ClassDefinition;\r
+\r
+\r
+struct HB_Device_\r
+{\r
+ HB_UShort StartSize; /* smallest size to correct */\r
+ HB_UShort EndSize; /* largest size to correct */\r
+ HB_UShort DeltaFormat; /* DeltaValue array data format:\r
+ 1, 2, or 3 */\r
+ HB_UShort* DeltaValue; /* array of compressed data */\r
+};\r
+\r
+typedef struct HB_Device_ HB_Device;\r
+\r
+\r
+enum HB_Type_\r
+{\r
+ HB_Type_GSUB,\r
+ HB_Type_GPOS\r
+};\r
+\r
+typedef enum HB_Type_ HB_Type;\r
+\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_OPEN_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 2006 Red Hat, Inc.\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ *\r
+ * Red Hat Author(s): Owen Taylor\r
+ */\r
+\r
+#include <stdint.h>\r
+\r
+/* Base Types */\r
+\r
+typedef hb_uint16 HB_CodePoint; /* UTF-16 codepoint (not character ) */\r
+typedef char HB_Boolean;\r
+typedef hb_uint32 HB_Fixed; /* 26.6 */\r
+typedef hb_uint32 HB_Glyph;\r
+typedef hb_uint32 HB_Unichar;\r
+\r
+/* Metrics reported by the font backend for use of the shaper */\r
+typedef struct _HB_GlyphMetrics HB_GlyphMetrics;\r
+struct _HB_GlyphMetrics\r
+{\r
+ HB_Fixed advance;\r
+ \r
+ /* Do we need ink/logical extents for the glyph here? */\r
+};\r
+\r
+/*\r
+ * HB_Font: Abstract font interface.\r
+ * First pass of this might just have FT_Face *getFace();\r
+ */\r
+typedef struct _HB_Font HB_Font;\r
+typedef struct _HB_FontClass HB_FontClass;\r
+\r
+struct HB_FontClass {\r
+ HB_Glyph (*charToGlyph)(HB_Font *font, HB_Unichar chr);\r
+ void (*getMetrics)(HB_Font *font, HB_Glyph glyph, HB_GlyphMetrics *metrics);\r
+ HB_Boolean (*getSFontTable)(HB_Font *font, void **cookie, char **start, int *len);\r
+ HB_Boolean (*freeSFontTable)(void **cookie);\r
+};\r
+\r
+struct _HB_Font {\r
+ HB_FontClass *clazz;\r
+};\r
+\r
+/*\r
+ * Language tags, of the form en-us; represented as interned, canonicalized\r
+ * strings. hb_language_from_string("en_US"), hb_language_from_string("en-us")\r
+ * both return the same (pointer-comparable) HB_Language).\r
+ */\r
+typedef struct HB_Language_ *HB_Language;\r
+\r
+HB_Language hb_language_from_string(const char *str);\r
+const char *hb_language_to_string(HB_Language language);\r
+\r
+/* Special treatment for the edges of runs.\r
+ */\r
+typedef enum {\r
+ HB_RUN_EDGE_LINE_VISUAL_EDGE = 1 << 0,\r
+ HB_RUN_EDGE_LINE_LOGICAL_EDGE = 1 << 1,\r
+ HB_RUN_EDGE_LINE_ADD_HYPHEN = 1 << 2 /* ???? */\r
+} HB_RunEdge;\r
+\r
+/* Defines optional informaiton in HB_ShapeInput; this allows extension\r
+ * of HB_ShapeInput while keeping binary compatibility\r
+ */\r
+typedef enum {\r
+ HB_SHAPE_START_TYPE = 1 << 0,\r
+ HB_SHAPE_END_TYPE = 1 << 1\r
+} HB_ShapeFlags;\r
+\r
+/* Attributes types are described by "interned strings"; this is a little\r
+ * annoying if you want to write a switch statement, but keeps things\r
+ * simple.\r
+ */\r
+typedef struct _HB_AttributeType *HB_AttributeType;\r
+\r
+HB_AttributeType hb_attribute_type_from_string(const char *str);\r
+const char *hb_attribute_type_to_string(HB_AttributeType attribute_type);\r
+\r
+struct HB_Attribute {\r
+ HB_AttributeType type;\r
+ int start; \r
+ int end;\r
+};\r
+\r
+\r
+/**\r
+ * You could handle this like HB_Language, but an enum seems a little nicer;\r
+ * another approach would be to use OpenType script tags.\r
+ */\r
+typedef enum {\r
+ HB_SCRIPT_LATIN\r
+ /* ... */\r
+} HB_ShapeScript;\r
+\r
+/* This is just the subset of direction information needed by the shaper */\r
+typedef enum {\r
+ HB_DIRECTION_LTR,\r
+ HB_DIRECTION_RTL,\r
+ HB_DIRECTION_TTB\r
+} HB_Direction;\r
+\r
+typedef struct _HB_ShapeInput HB_ShapeInput;\r
+struct _HB_ShapeInput {\r
+ /* Defines what fields the caller has initialized - fields not in\r
+ * the enum are mandatory.\r
+ */\r
+ HB_ShapeFlags flags;\r
+ \r
+ HB_CodePoint *text;\r
+ int length; /* total length of text to shape */\r
+ int shape_offset; /* start of section to shape */\r
+ int shape_length; /* number of code points to shape */\r
+\r
+ HB_Direction direction;\r
+ HB_ShapeScript script;\r
+ HB_Language language;\r
+\r
+ HB_AttributeType *attributes;\r
+ int n_attributes;\r
+\r
+ HB_RunEdge start_type;\r
+ HB_RunEdge end_type;\r
+};\r
+\r
+struct HB_GlyphItem {\r
+ HB_Glyph glyph;\r
+ \r
+ HB_Fixed x_offset;\r
+ HB_Fixed y_offset;\r
+ HB_Fixed advance;\r
+\r
+ /* Add kashida information, etc, here */\r
+};\r
+\r
+typedef enum {\r
+ HB_RESULT_SUCCESS,\r
+ HB_RESULT_NO_MEMORY,\r
+ HB_SHAPE_RESULT_FAILED\r
+} HB_Result;\r
+\r
+/*\r
+ * Buffer for output \r
+ */\r
+typedef struct _HB_GlyphBuffer HB_GlyphBuffer;\r
+struct _HB_GlyphBuffer {\r
+ int glyph_item_size;\r
+ int total_glyphs;\r
+ \r
+ int *log_clusters; /* Uniscribe style */\r
+ int cluster_space;\r
+ \r
+ int glyph_space;\r
+ void *glyph_buffer;\r
+};\r
+\r
+/* Making this self-allocating simplifies writing shapers and\r
+ * also keeps things easier for caller. item_size passed in\r
+ * must be at least sizeof(HB_GlyphItem) but can be bigger,\r
+ * to accomodate application structures that extend HB_GlyphItem.\r
+ * The allocated items will be zero-initialized.\r
+ *\r
+ * (Hack: Harfbuzz could choose to use even a *bigger* item size\r
+ * and stick internal information before the public item structure.\r
+ * This hack could possibly be used to unify this with HB_Buffer)\r
+ */\r
+HB_GlyphBuffer *hb_glyph_buffer_new (size_t item_size);\r
+void hb_glyph_buffer_clear (HB_GlyphBuffer *buf);\r
+HB_Result hb_glyph_buffer_extend_glyphs (HB_GlyphBuffer *buf, int n_items);\r
+HB_Result hb_glyph_buffer_extend_clusters (HB_GlyphBuffer *buf, int n_clusters);\r
+void hb_glyph_buffer_free (HB_GlyphBuffer *buf);\r
+\r
+\r
+/* Accessor for a particular glyph */\r
+#define HB_GLYPH_BUFFER_ITEM(buffer, index)\r
+\r
+/*\r
+ * Main shaping function\r
+ */\r
+HB_Result hb_shape(HB_ShapeInput *input, HB_GlyphBuffer *output);\r
--- /dev/null
+/*\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_SHAPER_PRIVATE_H\r
+#define HARFBUZZ_SHAPER_PRIVATE_H\r
+\r
+HB_BEGIN_HEADER\r
+enum {\r
+ C_DOTTED_CIRCLE = 0x25CC\r
+};\r
+\r
+typedef enum \r
+{\r
+ HB_Combining_BelowLeftAttached = 200,\r
+ HB_Combining_BelowAttached = 202,\r
+ HB_Combining_BelowRightAttached = 204,\r
+ HB_Combining_LeftAttached = 208,\r
+ HB_Combining_RightAttached = 210,\r
+ HB_Combining_AboveLeftAttached = 212,\r
+ HB_Combining_AboveAttached = 214,\r
+ HB_Combining_AboveRightAttached = 216,\r
+\r
+ HB_Combining_BelowLeft = 218,\r
+ HB_Combining_Below = 220,\r
+ HB_Combining_BelowRight = 222,\r
+ HB_Combining_Left = 224,\r
+ HB_Combining_Right = 226,\r
+ HB_Combining_AboveLeft = 228,\r
+ HB_Combining_Above = 230,\r
+ HB_Combining_AboveRight = 232,\r
+\r
+ HB_Combining_DoubleBelow = 233,\r
+ HB_Combining_DoubleAbove = 234,\r
+ HB_Combining_IotaSubscript = 240\r
+} HB_CombiningClass;\r
+\r
+typedef enum {\r
+ CcmpProperty = 0x1,\r
+ InitProperty = 0x2,\r
+ IsolProperty = 0x4,\r
+ FinaProperty = 0x8,\r
+ MediProperty = 0x10,\r
+ RligProperty = 0x20,\r
+ CaltProperty = 0x40,\r
+ LigaProperty = 0x80,\r
+ DligProperty = 0x100,\r
+ CswhProperty = 0x200,\r
+ MsetProperty = 0x400,\r
+\r
+ /* used by indic and myanmar shaper */\r
+ NuktaProperty = 0x4,\r
+ AkhantProperty = 0x8,\r
+ RephProperty = 0x10,\r
+ PreFormProperty = 0x20,\r
+ BelowFormProperty = 0x40,\r
+ AboveFormProperty = 0x80,\r
+ HalfFormProperty = 0x100,\r
+ PostFormProperty = 0x200,\r
+ VattuProperty = 0x400,\r
+ PreSubstProperty = 0x800,\r
+ BelowSubstProperty = 0x1000,\r
+ AboveSubstProperty = 0x2000,\r
+ PostSubstProperty = 0x4000,\r
+ HalantProperty = 0x8000,\r
+ CligProperty = 0x10000\r
+\r
+} HB_OpenTypeProperty;\r
+\r
+/* return true if ok. */\r
+typedef HB_Bool (*HB_ShapeFunction)(HB_ShaperItem *shaper_item);\r
+typedef void (*HB_AttributeFunction)(HB_Script script, const HB_UChar16 *string, hb_uint32 from, hb_uint32 len, HB_CharAttributes *attributes);\r
+\r
+typedef struct {\r
+ HB_ShapeFunction shape;\r
+ HB_AttributeFunction charAttributes;\r
+} HB_ScriptEngine;\r
+\r
+extern const HB_ScriptEngine HB_ScriptEngines[];\r
+\r
+extern HB_Bool HB_BasicShape(HB_ShaperItem *shaper_item);\r
+extern HB_Bool HB_TibetanShape(HB_ShaperItem *shaper_item);\r
+extern HB_Bool HB_HebrewShape(HB_ShaperItem *shaper_item);\r
+extern HB_Bool HB_ArabicShape(HB_ShaperItem *shaper_item);\r
+extern HB_Bool HB_HangulShape(HB_ShaperItem *shaper_item);\r
+extern HB_Bool HB_MyanmarShape(HB_ShaperItem *shaper_item);\r
+extern HB_Bool HB_KhmerShape(HB_ShaperItem *shaper_item);\r
+extern HB_Bool HB_IndicShape(HB_ShaperItem *shaper_item);\r
+\r
+extern void HB_TibetanAttributes(HB_Script script, const HB_UChar16 *string, hb_uint32 from, hb_uint32 len, HB_CharAttributes *attributes);\r
+\r
+extern void HB_MyanmarAttributes(HB_Script script, const HB_UChar16 *string, hb_uint32 from, hb_uint32 len, HB_CharAttributes *attributes);\r
+\r
+extern void HB_KhmerAttributes(HB_Script script, const HB_UChar16 *string, hb_uint32 from, hb_uint32 len, HB_CharAttributes *attributes);\r
+\r
+extern void HB_IndicAttributes(HB_Script script, const HB_UChar16 *string, hb_uint32 from, hb_uint32 len, HB_CharAttributes *attributes);\r
+\r
+extern void HB_ThaiAttributes(HB_Script script, const HB_UChar16 *string, hb_uint32 from, hb_uint32 len, HB_CharAttributes *attributes);\r
+\r
+typedef struct {\r
+ hb_uint32 tag;\r
+ hb_uint32 property;\r
+} HB_OpenTypeFeature;\r
+\r
+#define PositioningProperties 0x80000000\r
+\r
+HB_Bool HB_SelectScript(HB_ShaperItem *item, const HB_OpenTypeFeature *features);\r
+\r
+HB_Bool HB_OpenTypeShape(HB_ShaperItem *item, const hb_uint32 *properties);\r
+HB_Bool HB_OpenTypePosition(HB_ShaperItem *item, int availableGlyphs, HB_Bool doLogClusters);\r
+\r
+void HB_HeuristicPosition(HB_ShaperItem *item);\r
+void HB_HeuristicSetGlyphAttributes(HB_ShaperItem *item);\r
+\r
+#define HB_IsControlChar(uc) \\r
+ ((uc >= 0x200b && uc <= 0x200f /* ZW Space, ZWNJ, ZWJ, LRM and RLM */) \\r
+ || (uc >= 0x2028 && uc <= 0x202f /* LS, PS, LRE, RLE, PDF, LRO, RLO, NNBSP */) \\r
+ || (uc >= 0x206a && uc <= 0x206f /* ISS, ASS, IAFS, AFS, NADS, NODS */))\r
+\r
+HB_Bool HB_ConvertStringToGlyphIndices(HB_ShaperItem *shaper_item);\r
+\r
+#define HB_GetGlyphAdvances(shaper_item) \\r
+ shaper_item->font->klass->getGlyphAdvances(shaper_item->font, \\r
+ shaper_item->glyphs, shaper_item->num_glyphs, \\r
+ shaper_item->advances, \\r
+ shaper_item->face->current_flags);\r
+\r
+#define HB_DECLARE_STACKARRAY(Type, Name) \\r
+ Type stack##Name[64]; \ \r
+ Type *Name = stack##Name;\r
+\r
+#define HB_INIT_STACKARRAY(Type, Name, Length) \\r
+ if ((Length) >= 64) \\r
+ Name = (Type *)malloc((Length) * sizeof(Type));\r
+\r
+#define HB_STACKARRAY(Type, Name, Length) \\r
+ HB_DECLARE_STACKARRAY(Type, Name) \\r
+ HB_INIT_STACKARRAY(Type, Name, Length)\r
+\r
+#define HB_FREE_STACKARRAY(Name) \\r
+ if (stack##Name != Name) \\r
+ free(Name);\r
+\r
+HB_END_HEADER\r
+\r
+#endif\r
--- /dev/null
+/*\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_SHAPER_H\r
+#define HARFBUZZ_SHAPER_H\r
+\r
+#include "harfbuzz-global.h"\r
+#include "harfbuzz-gdef.h"\r
+#include "harfbuzz-gpos.h"\r
+#include "harfbuzz-gsub.h"\r
+#include "harfbuzz-external.h" \r
+#include "harfbuzz-stream-private.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+typedef enum {\r
+ HB_Script_Common,\r
+ HB_Script_Greek,\r
+ HB_Script_Cyrillic,\r
+ HB_Script_Armenian,\r
+ HB_Script_Hebrew,\r
+ HB_Script_Arabic,\r
+ HB_Script_Syriac,\r
+ HB_Script_Thaana,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Bengali,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Oriya,\r
+ HB_Script_Tamil,\r
+ HB_Script_Telugu,\r
+ HB_Script_Kannada,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Thai,\r
+ HB_Script_Lao,\r
+ HB_Script_Tibetan,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Georgian,\r
+ HB_Script_Hangul,\r
+ HB_Script_Ogham,\r
+ HB_Script_Runic,\r
+ HB_Script_Khmer,\r
+ HB_Script_Nko,\r
+ HB_Script_Inherited,\r
+ HB_ScriptCount = HB_Script_Inherited\r
+ /*\r
+ HB_Script_Latin = Common,\r
+ HB_Script_Ethiopic = Common,\r
+ HB_Script_Cherokee = Common,\r
+ HB_Script_CanadianAboriginal = Common,\r
+ HB_Script_Mongolian = Common,\r
+ HB_Script_Hiragana = Common,\r
+ HB_Script_Katakana = Common,\r
+ HB_Script_Bopomofo = Common,\r
+ HB_Script_Han = Common,\r
+ HB_Script_Yi = Common,\r
+ HB_Script_OldItalic = Common,\r
+ HB_Script_Gothic = Common,\r
+ HB_Script_Deseret = Common,\r
+ HB_Script_Tagalog = Common,\r
+ HB_Script_Hanunoo = Common,\r
+ HB_Script_Buhid = Common,\r
+ HB_Script_Tagbanwa = Common,\r
+ HB_Script_Limbu = Common,\r
+ HB_Script_TaiLe = Common,\r
+ HB_Script_LinearB = Common,\r
+ HB_Script_Ugaritic = Common,\r
+ HB_Script_Shavian = Common,\r
+ HB_Script_Osmanya = Common,\r
+ HB_Script_Cypriot = Common,\r
+ HB_Script_Braille = Common,\r
+ HB_Script_Buginese = Common,\r
+ HB_Script_Coptic = Common,\r
+ HB_Script_NewTaiLue = Common,\r
+ HB_Script_Glagolitic = Common,\r
+ HB_Script_Tifinagh = Common,\r
+ HB_Script_SylotiNagri = Common,\r
+ HB_Script_OldPersian = Common,\r
+ HB_Script_Kharoshthi = Common,\r
+ HB_Script_Balinese = Common,\r
+ HB_Script_Cuneiform = Common,\r
+ HB_Script_Phoenician = Common,\r
+ HB_Script_PhagsPa = Common,\r
+ */\r
+} HB_Script;\r
+\r
+typedef struct\r
+{\r
+ hb_uint32 pos;\r
+ hb_uint32 length;\r
+ HB_Script script;\r
+ hb_uint8 bidiLevel;\r
+} HB_ScriptItem;\r
+\r
+typedef enum {\r
+ HB_NoBreak,\r
+ HB_SoftHyphen,\r
+ HB_Break,\r
+ HB_ForcedBreak\r
+} HB_LineBreakType;\r
+\r
+\r
+typedef struct {\r
+ /*HB_LineBreakType*/ unsigned lineBreakType :2;\r
+ /*HB_Bool*/ unsigned whiteSpace :1; /* A unicode whitespace character, except NBSP, ZWNBSP */\r
+ /*HB_Bool*/ unsigned charStop :1; /* Valid cursor position (for left/right arrow) */\r
+ /*HB_Bool*/ unsigned wordBoundary :1;\r
+ /*HB_Bool*/ unsigned sentenceBoundary :1;\r
+ unsigned unused :2;\r
+} HB_CharAttributes;\r
+\r
+void HB_GetCharAttributes(const HB_UChar16 *string, hb_uint32 stringLength,\r
+ const HB_ScriptItem *items, hb_uint32 numItems,\r
+ HB_CharAttributes *attributes);\r
+\r
+/* requires HB_GetCharAttributes to be called before */\r
+void HB_GetWordBoundaries(const HB_UChar16 *string, hb_uint32 stringLength,\r
+ const HB_ScriptItem *items, hb_uint32 numItems,\r
+ HB_CharAttributes *attributes);\r
+\r
+/* requires HB_GetCharAttributes to be called before */\r
+void HB_GetSentenceBoundaries(const HB_UChar16 *string, hb_uint32 stringLength,\r
+ const HB_ScriptItem *items, hb_uint32 numItems,\r
+ HB_CharAttributes *attributes);\r
+\r
+\r
+typedef enum {\r
+ HB_LeftToRight = 0,\r
+ HB_RightToLeft = 1\r
+} HB_StringToGlyphsFlags;\r
+\r
+typedef enum {\r
+ HB_ShaperFlag_Default = 0,\r
+ HB_ShaperFlag_NoKerning = 1,\r
+ HB_ShaperFlag_UseDesignMetrics = 2\r
+} HB_ShaperFlag;\r
+\r
+/* \r
+ highest value means highest priority for justification. Justification is done by first inserting kashidas\r
+ starting with the highest priority positions, then stretching spaces, afterwards extending inter char\r
+ spacing, and last spacing between arabic words.\r
+ NoJustification is for example set for arabic where no Kashida can be inserted or for diacritics.\r
+*/\r
+typedef enum {\r
+ HB_NoJustification= 0, /* Justification can't be applied after this glyph */\r
+ HB_Arabic_Space = 1, /* This glyph represents a space inside arabic text */\r
+ HB_Character = 2, /* Inter-character justification point follows this glyph */\r
+ HB_Space = 4, /* This glyph represents a blank outside an Arabic run */\r
+ HB_Arabic_Normal = 7, /* Normal Middle-Of-Word glyph that connects to the right (begin) */\r
+ HB_Arabic_Waw = 8, /* Next character is final form of Waw/Ain/Qaf/Fa */\r
+ HB_Arabic_BaRa = 9, /* Next two chars are Ba + Ra/Ya/AlefMaksura */\r
+ HB_Arabic_Alef = 10, /* Next character is final form of Alef/Tah/Lam/Kaf/Gaf */\r
+ HB_Arabic_HaaDal = 11, /* Next character is final form of Haa/Dal/Taa Marbutah */\r
+ HB_Arabic_Seen = 12, /* Initial or Medial form Of Seen/Sad */\r
+ HB_Arabic_Kashida = 13 /* Kashida(U+640) in middle of word */\r
+} HB_JustificationClass;\r
+\r
+/* This structure is binary compatible with Uniscribe's SCRIPT_VISATTR. Would be nice to keep\r
+ * it like that. If this is a problem please tell Trolltech :)\r
+ */\r
+typedef struct {\r
+ unsigned justification :4; /* Justification class */\r
+ unsigned clusterStart :1; /* First glyph of representation of cluster */\r
+ unsigned mark :1; /* needs to be positioned around base char */\r
+ unsigned zeroWidth :1; /* ZWJ, ZWNJ etc, with no width */\r
+ unsigned dontPrint :1;\r
+ unsigned combiningClass :8;\r
+} HB_GlyphAttributes;\r
+\r
+typedef struct HB_FaceRec_ {\r
+ HB_Bool isSymbolFont;\r
+\r
+ HB_GDEF gdef;\r
+ HB_GSUB gsub;\r
+ HB_GPOS gpos;\r
+ HB_Bool supported_scripts[HB_ScriptCount];\r
+ HB_Buffer buffer;\r
+ HB_Script current_script;\r
+ int current_flags; /* HB_ShaperFlags */\r
+ HB_Bool has_opentype_kerning;\r
+ HB_Bool glyphs_substituted;\r
+ HB_GlyphAttributes *tmpAttributes;\r
+ unsigned int *tmpLogClusters;\r
+ int length;\r
+ int orig_nglyphs;\r
+} HB_FaceRec;\r
+\r
+typedef HB_Error (*HB_GetFontTableFunc)(void *font, HB_Tag tag, HB_Byte *buffer, HB_UInt *length);\r
+\r
+HB_Face HB_NewFace(void *font, HB_GetFontTableFunc tableFunc);\r
+void HB_FreeFace(HB_Face face);\r
+\r
+typedef struct {\r
+ HB_Fixed x, y;\r
+ HB_Fixed width, height;\r
+ HB_Fixed xOffset, yOffset;\r
+} HB_GlyphMetrics;\r
+\r
+typedef enum {\r
+ HB_FontAscent\r
+} HB_FontMetric;\r
+\r
+typedef struct {\r
+ HB_Bool (*convertStringToGlyphIndices)(HB_Font font, const HB_UChar16 *string, hb_uint32 length, HB_Glyph *glyphs, hb_uint32 *numGlyphs, HB_Bool rightToLeft);\r
+ void (*getGlyphAdvances)(HB_Font font, const HB_Glyph *glyphs, hb_uint32 numGlyphs, HB_Fixed *advances, int flags /*HB_ShaperFlag*/);\r
+ HB_Bool (*canRender)(HB_Font font, const HB_UChar16 *string, hb_uint32 length);\r
+ /* implementation needs to make sure to load a scaled glyph, so /no/ FT_LOAD_NO_SCALE */\r
+ HB_Error (*getPointInOutline)(HB_Font font, HB_Glyph glyph, int flags /*HB_ShaperFlag*/, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints);\r
+ void (*getGlyphMetrics)(HB_Font font, HB_Glyph glyph, HB_GlyphMetrics *metrics);\r
+ HB_Fixed (*getFontMetric)(HB_Font font, HB_FontMetric metric);\r
+} HB_FontClass;\r
+\r
+typedef struct HB_Font_ {\r
+ const HB_FontClass *klass;\r
+\r
+ /* Metrics */\r
+ HB_UShort x_ppem, y_ppem;\r
+ HB_16Dot16 x_scale, y_scale;\r
+\r
+ void *userData;\r
+} HB_FontRec;\r
+\r
+typedef struct HB_ShaperItem_ HB_ShaperItem;\r
+\r
+struct HB_ShaperItem_ {\r
+ const HB_UChar16 *string; /* input: the Unicode UTF16 text to be shaped */\r
+ hb_uint32 stringLength; /* input: the length of the input in 16-bit words */\r
+ HB_ScriptItem item; /* input: the current run to be shaped: a run of text all in the same script that is a substring of <string> */\r
+ HB_Font font; /* input: the font: scale, units and function pointers supplying glyph indices and metrics */\r
+ HB_Face face; /* input: the shaper state; current script, access to the OpenType tables , etc. */\r
+ int shaperFlags; /* input (unused) should be set to 0; intended to support flags defined in HB_ShaperFlag */\r
+ HB_Bool glyphIndicesPresent; /* input: true if the <glyphs> array contains glyph indices ready to be shaped */\r
+ hb_uint32 initialGlyphCount; /* input: if glyphIndicesPresent is true, the number of glyph indices in the <glyphs> array */\r
+\r
+ hb_uint32 num_glyphs; /* input: capacity of output arrays <glyphs>, <attributes>, <advances>, <offsets>, and <log_clusters>; */\r
+ /* output: required capacity (may be larger than actual capacity) */\r
+\r
+ HB_Glyph *glyphs; /* output: <num_glyphs> indices of shaped glyphs */\r
+ HB_GlyphAttributes *attributes; /* output: <num_glyphs> glyph attributes */\r
+ HB_Fixed *advances; /* output: <num_glyphs> advances */\r
+ HB_FixedPoint *offsets; /* output: <num_glyphs> offsets */\r
+ unsigned short *log_clusters; /* output: for each output glyph, the index in the input of the start of its logical cluster */\r
+\r
+ /* internal */\r
+ HB_Bool kerning_applied; /* output: true if kerning was applied by the shaper */\r
+};\r
+\r
+HB_Bool HB_ShapeItem(HB_ShaperItem *item);\r
+\r
+\r
+extern int tibetan_nextSyllableBoundary(const HB_UChar16 *s, int start, int end, HB_Bool *invalid) ;\r
+extern int myanmar_nextSyllableBoundary(const HB_UChar16 *s, int start, int end, HB_Bool *invalid) ;\r
+extern int khmer_nextSyllableBoundary(const HB_UChar16 *s, int start, int end, HB_Bool *invalid) ;\r
+//#ifdef __cplusplus\r
+//extern "C" //{ int indic_nextSyllableBoundary(HB_Script script, const HB_UChar16 *s, int start, int end, bool *invalid) ;\r
+//#endif\r
+\r
+extern int indic_nextSyllableBoundary(HB_Script script, const HB_UChar16 *s, int start, int end, HB_Bool *invalid) ;\r
+\r
+\r
+HB_END_HEADER\r
+\r
+#endif\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_STREAM_PRIVATE_H\r
+#define HARFBUZZ_STREAM_PRIVATE_H\r
+\r
+#include "harfbuzz-impl.h"\r
+#include "harfbuzz-stream.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+HB_INTERNAL void\r
+_hb_close_stream( HB_Stream stream );\r
+\r
+HB_INTERNAL HB_Int\r
+_hb_stream_pos( HB_Stream stream );\r
+\r
+HB_INTERNAL HB_Error\r
+_hb_stream_seek( HB_Stream stream,\r
+ HB_UInt pos );\r
+\r
+HB_INTERNAL HB_Error\r
+_hb_stream_frame_enter( HB_Stream stream,\r
+ HB_UInt size );\r
+\r
+HB_INTERNAL void\r
+_hb_stream_frame_exit( HB_Stream stream );\r
+\r
+/* convenience macros */\r
+\r
+#define SET_ERR(c) ( (error = (c)) != 0 )\r
+\r
+#define GOTO_Table(tag) (0)\r
+#define FILE_Pos() _hb_stream_pos( stream )\r
+#define FILE_Seek(pos) SET_ERR( _hb_stream_seek( stream, pos ) )\r
+#define ACCESS_Frame(size) SET_ERR( _hb_stream_frame_enter( stream, size ) )\r
+#define FORGET_Frame() _hb_stream_frame_exit( stream )\r
+\r
+#define GET_Byte() (*stream->cursor++)\r
+#define GET_Short() (stream->cursor += 2, (HB_Short)( \\r
+ (*(((HB_Byte*)stream->cursor)-2) << 8) | \\r
+ *(((HB_Byte*)stream->cursor)-1) \\r
+ ))\r
+#define GET_Long() (stream->cursor += 4, (HB_Int)( \\r
+ (*(((HB_Byte*)stream->cursor)-4) << 24) | \\r
+ (*(((HB_Byte*)stream->cursor)-3) << 16) | \\r
+ (*(((HB_Byte*)stream->cursor)-2) << 8) | \\r
+ *(((HB_Byte*)stream->cursor)-1) \\r
+ ))\r
+\r
+\r
+#define GET_Char() ((HB_Char)GET_Byte())\r
+#define GET_UShort() ((HB_UShort)GET_Short())\r
+#define GET_ULong() ((HB_UInt)GET_Long())\r
+#define GET_Tag4() GET_ULong()\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_STREAM_PRIVATE_H */\r
--- /dev/null
+/*\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_STREAM_H\r
+#define HARFBUZZ_STREAM_H\r
+\r
+#include "harfbuzz-global.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+typedef struct HB_StreamRec_\r
+{\r
+ HB_Byte* base;\r
+ HB_UInt size;\r
+ HB_UInt pos;\r
+ \r
+ HB_Byte* cursor;\r
+} HB_StreamRec;\r
+\r
+\r
+HB_END_HEADER\r
+\r
+#endif\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_H\r
+#define HARFBUZZ_H\r
+\r
+#include "harfbuzz-external.h"\r
+#include "harfbuzz-impl.h"\r
+#include "harfbuzz-global.h"\r
+#include "harfbuzz-buffer.h"\r
+#include "harfbuzz-gdef.h"\r
+#include "harfbuzz-gsub.h"\r
+#include "harfbuzz-gpos.h"\r
+#include "harfbuzz-open.h"\r
+#include "harfbuzz-shaper.h"\r
+\r
+#define HB_DOTTED_CIRCLE 0x25CC /** DottedCircle used with dependent Matras */\r
+#define HB_ZWJ 0x200D /** Zero Width Joiner */\r
+#define HB_ZWNJ 0x200C /** Zero Width Non-Joiner */\r
+\r
+#define HB_INITIAL_NO_OF_GLYPH 64\r
+\r
+extern HB_Error hb_getScriptID(HB_UShort value, HB_Script *scriptID) ;\r
+extern HB_Error hb_getTextWithScriptID(HB_UShort *text, int textLen, HB_Script *scriptID, int *scriptLen) ;\r
+extern int hb_getSyllableLength(HB_UShort *text, int textLen, HB_Script *scriptID) ;\r
+\r
+#endif /* HARFBUZZ_OPEN_H */\r
--- /dev/null
+\r
+/*\r
+ * Copyright (C) 2010 Samsung India Software Operations Pvt. Ltd.\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef __hb_unicode_tables_h__\r
+#define __hb_unicode_tables_h__\r
+\r
+#include "math.h"\r
+#include "harfbuzz-shaper.h"\r
+#include "harfbuzz-shaper-private.h"\r
+\r
+typedef struct\r
+{\r
+ HB_UShort scriptID;//it can be sript id if subtable is null, else size of subtable\r
+ HB_Script *pSubTable;\r
+\r
+}unicodeScriptTableStruct;\r
+\r
+HB_Script subTableThanaSyriac[] = \r
+{\r
+ HB_Script_Syriac,//0x00\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,//0x08\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+\r
+ HB_Script_Syriac,//0x10\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+\r
+ HB_Script_Syriac,//0x18\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+\r
+ HB_Script_Syriac,//0x20\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,//0x28\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+\r
+ HB_Script_Syriac,//0x30\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,//0x38\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,//0x40\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+\r
+ HB_Script_Syriac,//0x48\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,//0x4f\r
+\r
+ HB_Script_Common,//0x50\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,//0x58\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,//0x60\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,//0x68\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,//0x70\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,//0x78\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Thaana,//0x80\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,//0x88\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,//0x90\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,//0x98\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,//0xa0\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,//0xa8\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,//0xb0\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,//0xb8\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,//0xbf\r
+};\r
+\r
+HB_Script subTableDevaBengali[] = \r
+{\r
+ HB_Script_Devanagari,//0x00\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,//0x08\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+\r
+ HB_Script_Devanagari,//0x10\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+\r
+ HB_Script_Devanagari,//0x18\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+\r
+ HB_Script_Devanagari,//0x20\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,//0x28\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+\r
+ HB_Script_Devanagari,//0x30\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,//0x38\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,//0x40\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+\r
+ HB_Script_Devanagari,//0x48\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,//0x4f\r
+\r
+ HB_Script_Devanagari,//0x50\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,//0x58\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+\r
+ HB_Script_Devanagari,//0x60\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+\r
+ HB_Script_Devanagari,//0x68\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+\r
+ HB_Script_Devanagari,//0x70\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,//0x78\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,//0x7f\r
+\r
+\r
+ HB_Script_Bengali,//0x80\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0x88\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0x90\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+\r
+ HB_Script_Bengali,//0x98\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0xa0\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0xa8\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0xb0\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+\r
+ HB_Script_Bengali,//0xb8\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0xc0\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+\r
+ HB_Script_Bengali,//0xc8\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0xd0\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0xd8\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0xe0\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+\r
+ HB_Script_Bengali,//0xe8\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0xf0\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0xf8\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,//0xff\r
+\r
+};\r
+\r
+\r
+HB_Script subTableGuruGuarati[]=\r
+{\r
+ HB_Script_Gurmukhi,//0x00\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,//0x08\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+\r
+ HB_Script_Gurmukhi,//0x10\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+\r
+ HB_Script_Gurmukhi,//0x18\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+\r
+ HB_Script_Gurmukhi,//0x20\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,//0x28\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+\r
+ HB_Script_Gurmukhi,//0x30\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,//0x38\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,//0x40\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+\r
+ HB_Script_Gurmukhi,//0x48\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,//0x4f\r
+\r
+ HB_Script_Gurmukhi,//0x50\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,//0x58\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+\r
+ HB_Script_Gurmukhi,//0x60\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+\r
+ HB_Script_Gurmukhi,//0x68\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+\r
+ HB_Script_Gurmukhi,//0x70\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,//0x78\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,//0x7f\r
+\r
+\r
+ HB_Script_Gujarati,//0x80\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0x88\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0x90\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+\r
+ HB_Script_Gujarati,//0x98\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0xa0\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0xa8\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0xb0\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+\r
+ HB_Script_Gujarati,//0xb8\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0xc0\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+\r
+ HB_Script_Gujarati,//0xc8\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0xd0\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0xd8\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0xe0\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+\r
+ HB_Script_Gujarati,//0xe8\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0xf0\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0xf8\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,//0xff\r
+\r
+};\r
+\r
+HB_Script subTableOriyaTamil[]=\r
+{\r
+ HB_Script_Oriya,//0x00\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,//0x08\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+\r
+ HB_Script_Oriya,//0x10\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+\r
+ HB_Script_Oriya,//0x18\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+\r
+ HB_Script_Oriya,//0x20\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,//0x28\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+\r
+ HB_Script_Oriya,//0x30\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,//0x38\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,//0x40\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+\r
+ HB_Script_Oriya,//0x48\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,//0x4f\r
+\r
+ HB_Script_Oriya,//0x50\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,//0x58\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+\r
+ HB_Script_Oriya,//0x60\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+\r
+ HB_Script_Oriya,//0x68\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+\r
+ HB_Script_Oriya,//0x70\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,//0x78\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,//0x7f\r
+\r
+\r
+ HB_Script_Tamil,//0x80\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0x88\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0x90\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+\r
+ HB_Script_Tamil,//0x98\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0xa0\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0xa8\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0xb0\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+\r
+ HB_Script_Tamil,//0xb8\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0xc0\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+\r
+ HB_Script_Tamil,//0xc8\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0xd0\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0xd8\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0xe0\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+\r
+ HB_Script_Tamil,//0xe8\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0xf0\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0xf8\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,//0xff\r
+\r
+};\r
+\r
+\r
+HB_Script subTableTelukannada[]=\r
+{\r
+ HB_Script_Telugu,//0x00\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,//0x08\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+\r
+ HB_Script_Telugu,//0x10\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+\r
+ HB_Script_Telugu,//0x18\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+\r
+ HB_Script_Telugu,//0x20\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,//0x28\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+\r
+ HB_Script_Telugu,//0x30\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,//0x38\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,//0x40\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+\r
+ HB_Script_Telugu,//0x48\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,//0x4f\r
+\r
+ HB_Script_Telugu,//0x50\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,//0x58\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+\r
+ HB_Script_Telugu,//0x60\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+\r
+ HB_Script_Telugu,//0x68\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+\r
+ HB_Script_Telugu,//0x70\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,//0x78\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,//0x7f\r
+\r
+\r
+ HB_Script_Kannada,//0x80\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0x88\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0x90\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+\r
+ HB_Script_Kannada,//0x98\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0xa0\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0xa8\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0xb0\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+\r
+ HB_Script_Kannada,//0xb8\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0xc0\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+\r
+ HB_Script_Kannada,//0xc8\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0xd0\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0xd8\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0xe0\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+\r
+ HB_Script_Kannada,//0xe8\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0xf0\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0xf8\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,//0xff\r
+\r
+};\r
+\r
+HB_Script subTableMalSinhala[]=\r
+{\r
+ HB_Script_Malayalam,//0x00\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,//0x08\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+\r
+ HB_Script_Malayalam,//0x10\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+\r
+ HB_Script_Malayalam,//0x18\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+\r
+ HB_Script_Malayalam,//0x20\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,//0x28\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+\r
+ HB_Script_Malayalam,//0x30\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,//0x38\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,//0x40\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+\r
+ HB_Script_Malayalam,//0x48\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,//0x4f\r
+\r
+ HB_Script_Malayalam,//0x50\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,//0x58\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+\r
+ HB_Script_Malayalam,//0x60\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+\r
+ HB_Script_Malayalam,//0x68\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+\r
+ HB_Script_Malayalam,//0x70\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,//0x78\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,//0x7f\r
+\r
+\r
+ HB_Script_Sinhala,//0x80\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0x88\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0x90\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+\r
+ HB_Script_Sinhala,//0x98\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0xa0\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0xa8\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0xb0\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+\r
+ HB_Script_Sinhala,//0xb8\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0xc0\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+\r
+ HB_Script_Sinhala,//0xc8\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0xd0\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0xd8\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0xe0\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+\r
+ HB_Script_Sinhala,//0xe8\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0xf0\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0xf8\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,//0xff\r
+\r
+};\r
+\r
+HB_Script subTableThaiLao[]=\r
+{\r
+ HB_Script_Thai,//0x00\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,//0x08\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+\r
+ HB_Script_Thai,//0x10\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+\r
+ HB_Script_Thai,//0x18\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+\r
+ HB_Script_Thai,//0x20\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,//0x28\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+\r
+ HB_Script_Thai,//0x30\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,//0x38\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,//0x40\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+\r
+ HB_Script_Thai,//0x48\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,//0x4f\r
+\r
+ HB_Script_Thai,//0x50\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,//0x58\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+\r
+ HB_Script_Thai,//0x60\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+\r
+ HB_Script_Thai,//0x68\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+\r
+ HB_Script_Thai,//0x70\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,//0x78\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,//0x7f\r
+\r
+\r
+ HB_Script_Lao,//0x80\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0x88\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0x90\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+\r
+ HB_Script_Lao,//0x98\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0xa0\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0xa8\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0xb0\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+\r
+ HB_Script_Lao,//0xb8\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0xc0\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+\r
+ HB_Script_Lao,//0xc8\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0xd0\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0xd8\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0xe0\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+\r
+ HB_Script_Lao,//0xe8\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0xf0\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0xf8\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,//0xff\r
+\r
+};\r
+\r
+HB_Script subTableMyanGeorgian[] =\r
+{\r
+ HB_Script_Myanmar,//0x00\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,//0x08\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+\r
+ HB_Script_Myanmar,//0x10\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+\r
+ HB_Script_Myanmar,//0x18\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+\r
+ HB_Script_Myanmar,//0x20\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,//0x28\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+\r
+ HB_Script_Myanmar,//0x30\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,//0x38\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,//0x40\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+\r
+ HB_Script_Myanmar,//0x48\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,//0x4f\r
+\r
+ HB_Script_Myanmar,//0x50\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,//0x58\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+\r
+ HB_Script_Myanmar,//0x60\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+\r
+ HB_Script_Myanmar,//0x68\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+\r
+ HB_Script_Myanmar,//0x70\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,//0x78\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,//0x7f\r
+\r
+\r
+ HB_Script_Myanmar,//0x80\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,//0x88\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,//0x90\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+\r
+ HB_Script_Myanmar,//0x98\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Georgian,//0xa0\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,//0xa8\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,//0xb0\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+\r
+ HB_Script_Georgian,//0xb8\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,//0xc0\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+\r
+ HB_Script_Georgian,//0xc8\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,//0xd0\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,//0xd8\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,//0xe0\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+\r
+ HB_Script_Georgian,//0xe8\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,//0xf0\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,//0xf8\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,//0xff\r
+\r
+};\r
+\r
+HB_Script subTableOghamRunic[] = \r
+{\r
+ HB_Script_Ogham,//0x00\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,//0x08\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+\r
+ HB_Script_Ogham,//0x10\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+\r
+ HB_Script_Ogham,//0x18\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+\r
+ HB_Script_Ogham,//0x20\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,//0x28\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+\r
+ HB_Script_Ogham,//0x30\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,//0x38\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,//0x40\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+\r
+ HB_Script_Ogham,//0x48\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,//0x4f\r
+\r
+ HB_Script_Ogham,//0x50\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,//0x58\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+\r
+ HB_Script_Ogham,//0x60\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+\r
+ HB_Script_Ogham,//0x68\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+\r
+ HB_Script_Ogham,//0x70\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,//0x78\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,//0x7f\r
+\r
+\r
+ HB_Script_Ogham,//0x80\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,//0x88\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,//0x90\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+\r
+ HB_Script_Ogham,//0x98\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Runic,//0xa0\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,//0xa8\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,//0xb0\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+\r
+ HB_Script_Runic,//0xb8\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,//0xc0\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+\r
+ HB_Script_Runic,//0xc8\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,//0xd0\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,//0xd8\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,//0xe0\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+\r
+ HB_Script_Runic,//0xe8\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,//0xf0\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,//0xf8\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,//0xff\r
+\r
+};\r
+\r
+#define VFE_UNICODE_MAX_SCRIPT 256\r
+\r
+static const unicodeScriptTableStruct scriptTableStruct[VFE_UNICODE_MAX_SCRIPT]=\r
+{\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Greek, 0},\r
+\r
+ {HB_Script_Cyrillic, 0},//0x04\r
+ {HB_Script_Armenian, 0},\r
+ {HB_Script_Arabic, 0},\r
+ {0xc0, subTableThanaSyriac},\r
+\r
+ {HB_Script_Common, 0},//0x08\r
+ {0x100, subTableDevaBengali},\r
+ {0x100, subTableGuruGuarati},\r
+ {0x100, subTableOriyaTamil},\r
+ \r
+ {0x100, subTableTelukannada},//0x0c\r
+ {0x100, subTableMalSinhala},\r
+ {0x100, subTableThaiLao},\r
+ {HB_Script_Tibetan, 0},\r
+\r
+ {0x100, subTableMyanGeorgian},//0x10\r
+ {HB_Script_Hangul, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x14\r
+ {HB_Script_Common, 0},\r
+ {0x100, subTableOghamRunic},\r
+ {HB_Script_Khmer, 0},\r
+\r
+ {HB_Script_Common, 0},//0x18\r
+ {HB_Script_Khmer, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x1c\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x20\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x24\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x28\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x2c\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x30\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x34\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x38\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x3c\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x40\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x44\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x48\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x4c\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x50\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x54\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x58\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x5c\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x60\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x64\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x68\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x6c\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x70\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x74\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x78\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x7c\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x80\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x84\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x88\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x8c\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x40\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x94\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x98\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x9c\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xa0\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xa4\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xa8\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xac\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xb0\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xb4\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xb8\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xbc\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xc0\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xc4\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xc8\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xcc\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xd0\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xd4\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xd8\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xdc\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xe0\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xe4\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xe8\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xec\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xf0\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xf4\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xf8\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xfc\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},//ff\r
+};\r
+\r
+#endif /* __hb_unicode_tables_h__ */\r
+\r
--- /dev/null
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: harfbuzz
+Description: A free, high-quality, and portable shaping engine.
+Version: 1
+Requires:
+Libs: -L${libdir} -lharfbuzz
+Cflags: -I${includedir}/harfbuzz -I${includedir}
--- /dev/null
+This is harfbuzz library ,maintained by prameet <prameet.k@partner.samsung.com>
+on Fri, 05 Mar 2010 10:49:10 +0530.
+
+The original source can always be found at:
+ ftp://ftp.debian.org/dists/unstable/main/source/
+
+Copyright Holder: unknown
+
+License:
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2004,2007 Red Hat, Inc.\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ *\r
+ * Red Hat Author(s): Owen Taylor, Behdad Esfahbod\r
+ */\r
+\r
+#ifndef HARFBUZZ_BUFFER_PRIVATE_H\r
+#define HARFBUZZ_BUFFER_PRIVATE_H\r
+\r
+#include "harfbuzz-impl.h"\r
+#include "harfbuzz-buffer.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+#define HB_GLYPH_PROPERTIES_UNKNOWN 0xFFFF\r
+\r
+HB_INTERNAL void\r
+_hb_buffer_swap( HB_Buffer buffer );\r
+\r
+HB_INTERNAL void\r
+_hb_buffer_clear_output( HB_Buffer buffer );\r
+\r
+HB_INTERNAL HB_Error\r
+_hb_buffer_clear_positions( HB_Buffer buffer );\r
+\r
+HB_INTERNAL HB_Error\r
+_hb_buffer_add_output_glyphs( HB_Buffer buffer,\r
+ HB_UShort num_in,\r
+ HB_UShort num_out,\r
+ HB_UShort *glyph_data,\r
+ HB_UShort component,\r
+ HB_UShort ligID );\r
+\r
+HB_INTERNAL HB_Error\r
+_hb_buffer_add_output_glyph ( HB_Buffer buffer,\r
+ HB_UInt glyph_index,\r
+ HB_UShort component,\r
+ HB_UShort ligID );\r
+\r
+HB_INTERNAL HB_Error\r
+_hb_buffer_copy_output_glyph ( HB_Buffer buffer );\r
+\r
+HB_INTERNAL HB_Error\r
+_hb_buffer_replace_output_glyph ( HB_Buffer buffer,\r
+ HB_UInt glyph_index,\r
+ HB_Bool inplace );\r
+\r
+HB_INTERNAL HB_UShort\r
+_hb_buffer_allocate_ligid( HB_Buffer buffer );\r
+\r
+\r
+/* convenience macros */\r
+\r
+#define IN_GLYPH( pos ) (buffer->in_string[(pos)].gindex)\r
+#define IN_ITEM( pos ) (&buffer->in_string[(pos)])\r
+#define IN_CURGLYPH() (buffer->in_string[buffer->in_pos].gindex)\r
+#define IN_CURITEM() (&buffer->in_string[buffer->in_pos])\r
+#define IN_PROPERTIES( pos ) (buffer->in_string[(pos)].properties)\r
+#define IN_LIGID( pos ) (buffer->in_string[(pos)].ligID)\r
+#define IN_COMPONENT( pos ) (buffer->in_string[(pos)].component)\r
+#define POSITION( pos ) (&buffer->positions[(pos)])\r
+#define OUT_GLYPH( pos ) (buffer->out_string[(pos)].gindex)\r
+#define OUT_ITEM( pos ) (&buffer->out_string[(pos)])\r
+\r
+#define CHECK_Property( gdef, index, flags, property ) \\r
+ ( ( error = _HB_GDEF_Check_Property( (gdef), (index), (flags), \\r
+ (property) ) ) != HB_Err_Ok )\r
+\r
+#define ADD_String( buffer, num_in, num_out, glyph_data, component, ligID ) \\r
+ ( ( error = _hb_buffer_add_output_glyphs( (buffer), \\r
+ (num_in), (num_out), \\r
+ (glyph_data), (component), (ligID) \\r
+ ) ) != HB_Err_Ok )\r
+#define ADD_Glyph( buffer, glyph_index, component, ligID ) \\r
+ ( ( error = _hb_buffer_add_output_glyph( (buffer), \\r
+ (glyph_index), (component), (ligID) \\r
+ ) ) != HB_Err_Ok )\r
+#define REPLACE_Glyph( buffer, glyph_index, nesting_level ) \\r
+ ( ( error = _hb_buffer_replace_output_glyph( (buffer), (glyph_index), \\r
+ (nesting_level) == 1 ) ) != HB_Err_Ok )\r
+#define COPY_Glyph( buffer ) \\r
+ ( (error = _hb_buffer_copy_output_glyph ( buffer ) ) != HB_Err_Ok )\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_BUFFER_PRIVATE_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2004,2007 Red Hat, Inc.\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ *\r
+ * Red Hat Author(s): Owen Taylor, Behdad Esfahbod\r
+ */\r
+\r
+#ifndef HARFBUZZ_BUFFER_H\r
+#define HARFBUZZ_BUFFER_H\r
+\r
+#include "harfbuzz-global.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+typedef struct HB_GlyphItemRec_ {\r
+ HB_UInt gindex;\r
+ HB_UInt properties;\r
+ HB_UInt cluster;\r
+ HB_UShort component;\r
+ HB_UShort ligID;\r
+ HB_UShort gproperties;\r
+} HB_GlyphItemRec, *HB_GlyphItem;\r
+\r
+typedef struct HB_PositionRec_ {\r
+ HB_Fixed x_pos;\r
+ HB_Fixed y_pos;\r
+ HB_Fixed x_advance;\r
+ HB_Fixed y_advance;\r
+ HB_UShort back; /* number of glyphs to go back\r
+ for drawing current glyph */\r
+ HB_Bool new_advance; /* if set, the advance width values are\r
+ absolute, i.e., they won't be\r
+ added to the original glyph's value\r
+ but rather replace them. */\r
+ HB_Short cursive_chain; /* character to which this connects,\r
+ may be positive or negative; used\r
+ only internally */\r
+} HB_PositionRec, *HB_Position;\r
+\r
+\r
+typedef struct HB_BufferRec_{ \r
+ HB_UInt allocated;\r
+\r
+ HB_UInt in_length;\r
+ HB_UInt out_length;\r
+ HB_UInt in_pos;\r
+ HB_UInt out_pos;\r
+ \r
+ HB_Bool separate_out;\r
+ HB_GlyphItem in_string;\r
+ HB_GlyphItem out_string;\r
+ HB_GlyphItem alt_string;\r
+ HB_Position positions;\r
+ HB_UShort max_ligID;\r
+} HB_BufferRec, *HB_Buffer;\r
+\r
+HB_Error\r
+hb_buffer_new( HB_Buffer *buffer );\r
+\r
+void\r
+hb_buffer_free( HB_Buffer buffer );\r
+\r
+void\r
+hb_buffer_clear( HB_Buffer buffer );\r
+\r
+HB_Error\r
+hb_buffer_add_glyph( HB_Buffer buffer,\r
+ HB_UInt glyph_index,\r
+ HB_UInt properties,\r
+ HB_UInt cluster );\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_BUFFER_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 2000, 2007 Red Hat, Inc.\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ *\r
+ * Red Hat Author(s): Owen Taylor, Behdad Esfahbod\r
+ */\r
+\r
+#ifndef HARFBUZZ_DUMP_H\r
+#define HARFBUZZ_DUMP_H\r
+\r
+#include <stdio.h>\r
+#include "harfbuzz-gsub.h"\r
+#include "harfbuzz-gpos.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+void HB_Dump_GSUB_Table (HB_GSUB gsub, FILE *stream);\r
+void HB_Dump_GPOS_Table (HB_GPOS gpos, FILE *stream);\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_DUMP_H */\r
--- /dev/null
+/*\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_EXTERNAL_H\r
+#define HARFBUZZ_EXTERNAL_H\r
+\r
+#include "harfbuzz-global.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+/* This header contains some methods that are not part of\r
+ Harfbuzz itself, but referenced by it.\r
+ They need to be provided by the application/library\r
+*/\r
+\r
+\r
+/*\r
+ see http://www.unicode.org/reports/tr14/tr14-19.html\r
+ we don't use the XX, AI and CB properties and map them to AL instead.\r
+ as we don't support any EBDIC based OS'es, NL is ignored and mapped to AL as well.\r
+*/\r
+typedef enum {\r
+ HB_LineBreak_OP, HB_LineBreak_CL, HB_LineBreak_QU, HB_LineBreak_GL, HB_LineBreak_NS,\r
+ HB_LineBreak_EX, HB_LineBreak_SY, HB_LineBreak_IS, HB_LineBreak_PR, HB_LineBreak_PO,\r
+ HB_LineBreak_NU, HB_LineBreak_AL, HB_LineBreak_ID, HB_LineBreak_IN, HB_LineBreak_HY,\r
+ HB_LineBreak_BA, HB_LineBreak_BB, HB_LineBreak_B2, HB_LineBreak_ZW, HB_LineBreak_CM,\r
+ HB_LineBreak_WJ, HB_LineBreak_H2, HB_LineBreak_H3, HB_LineBreak_JL, HB_LineBreak_JV,\r
+ HB_LineBreak_JT, HB_LineBreak_SA, HB_LineBreak_SG,\r
+ HB_LineBreak_SP, HB_LineBreak_CR, HB_LineBreak_LF, HB_LineBreak_BK\r
+} HB_LineBreakClass;\r
+\r
+typedef enum \r
+{\r
+ HB_NoCategory,\r
+\r
+ HB_Mark_NonSpacing, /* Mn */\r
+ HB_Mark_SpacingCombining, /* Mc */\r
+ HB_Mark_Enclosing, /* Me */\r
+\r
+ HB_Number_DecimalDigit, /* Nd */\r
+ HB_Number_Letter, /* Nl */\r
+ HB_Number_Other, /* No */\r
+\r
+ HB_Separator_Space, /* Zs */\r
+ HB_Separator_Line, /* Zl */\r
+ HB_Separator_Paragraph, /* Zp */\r
+\r
+ HB_Other_Control, /* Cc */\r
+ HB_Other_Format, /* Cf */\r
+ HB_Other_Surrogate, /* Cs */\r
+ HB_Other_PrivateUse, /* Co */\r
+ HB_Other_NotAssigned, /* Cn */\r
+\r
+ HB_Letter_Uppercase, /* Lu */\r
+ HB_Letter_Lowercase, /* Ll */\r
+ HB_Letter_Titlecase, /* Lt */\r
+ HB_Letter_Modifier, /* Lm */\r
+ HB_Letter_Other, /* Lo */\r
+\r
+ HB_Punctuation_Connector, /* Pc */\r
+ HB_Punctuation_Dash, /* Pd */\r
+ HB_Punctuation_Open, /* Ps */\r
+ HB_Punctuation_Close, /* Pe */\r
+ HB_Punctuation_InitialQuote, /* Pi */\r
+ HB_Punctuation_FinalQuote, /* Pf */\r
+ HB_Punctuation_Other, /* Po */\r
+\r
+ HB_Symbol_Math, /* Sm */\r
+ HB_Symbol_Currency, /* Sc */\r
+ HB_Symbol_Modifier, /* Sk */\r
+ HB_Symbol_Other /* So */\r
+} HB_CharCategory;\r
+\r
+typedef enum\r
+{\r
+ HB_Grapheme_Other, \r
+ HB_Grapheme_CR,\r
+ HB_Grapheme_LF,\r
+ HB_Grapheme_Control,\r
+ HB_Grapheme_Extend,\r
+ HB_Grapheme_L, \r
+ HB_Grapheme_V, \r
+ HB_Grapheme_T, \r
+ HB_Grapheme_LV, \r
+ HB_Grapheme_LVT\r
+} HB_GraphemeClass;\r
+\r
+\r
+typedef enum\r
+{\r
+ HB_Word_Other,\r
+ HB_Word_Format,\r
+ HB_Word_Katakana,\r
+ HB_Word_ALetter,\r
+ HB_Word_MidLetter,\r
+ HB_Word_MidNum,\r
+ HB_Word_Numeric,\r
+ HB_Word_ExtendNumLet\r
+} HB_WordClass;\r
+\r
+\r
+typedef enum\r
+{\r
+ HB_Sentence_Other,\r
+ HB_Sentence_Sep,\r
+ HB_Sentence_Format,\r
+ HB_Sentence_Sp,\r
+ HB_Sentence_Lower,\r
+ HB_Sentence_Upper,\r
+ HB_Sentence_OLetter,\r
+ HB_Sentence_Numeric,\r
+ HB_Sentence_ATerm,\r
+ HB_Sentence_STerm,\r
+ HB_Sentence_Close\r
+} HB_SentenceClass;\r
+\r
+HB_GraphemeClass HB_GetGraphemeClass(HB_UChar32 ch);\r
+HB_WordClass HB_GetWordClass(HB_UChar32 ch);\r
+HB_SentenceClass HB_GetSentenceClass(HB_UChar32 ch);\r
+HB_LineBreakClass HB_GetLineBreakClass(HB_UChar32 ch);\r
+\r
+void HB_GetGraphemeAndLineBreakClass(HB_UChar32 ch, HB_GraphemeClass *grapheme, HB_LineBreakClass *lineBreak);\r
+void HB_GetUnicodeCharProperties(HB_UChar32 ch, HB_CharCategory *category, int *combiningClass);\r
+HB_CharCategory HB_GetUnicodeCharCategory(HB_UChar32 ch);\r
+int HB_GetUnicodeCharCombiningClass(HB_UChar32 ch);\r
+HB_UChar16 HB_GetMirroredChar(HB_UChar16 ch);\r
+\r
+void *HB_Library_Resolve(const char *library, const char *symbol);\r
+\r
+void *HB_TextCodecForMib(int mib);\r
+char *HB_TextCodec_ConvertFromUnicode(void *codec, const HB_UChar16 *unicode, hb_uint32 length, hb_uint32 *outputLength);\r
+void HB_TextCodec_FreeResult(char *);\r
+\r
+HB_END_HEADER\r
+\r
+#endif\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_GDEF_PRIVATE_H\r
+#define HARFBUZZ_GDEF_PRIVATE_H\r
+\r
+#include "harfbuzz-impl.h"\r
+#include "harfbuzz-stream-private.h"\r
+#include "harfbuzz-buffer-private.h"\r
+#include "harfbuzz-gdef.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+\r
+/* Attachment related structures */\r
+\r
+struct HB_AttachPoint_\r
+{\r
+ HB_UShort PointCount; /* size of the PointIndex array */\r
+ HB_UShort* PointIndex; /* array of contour points */\r
+};\r
+\r
+/* Ligature Caret related structures */\r
+\r
+struct HB_CaretValueFormat1_\r
+{\r
+ HB_Short Coordinate; /* x or y value (in design units) */\r
+};\r
+\r
+typedef struct HB_CaretValueFormat1_ HB_CaretValueFormat1;\r
+\r
+\r
+struct HB_CaretValueFormat2_\r
+{\r
+ HB_UShort CaretValuePoint; /* contour point index on glyph */\r
+};\r
+\r
+typedef struct HB_CaretValueFormat2_ HB_CaretValueFormat2;\r
+\r
+\r
+struct HB_CaretValueFormat3_\r
+{\r
+ HB_Short Coordinate; /* x or y value (in design units) */\r
+ HB_Device Device; /* Device table for x or y value */\r
+};\r
+\r
+typedef struct HB_CaretValueFormat3_ HB_CaretValueFormat3;\r
+\r
+\r
+struct HB_CaretValueFormat4_\r
+{\r
+ HB_UShort IdCaretValue; /* metric ID */\r
+};\r
+\r
+typedef struct HB_CaretValueFormat4_ HB_CaretValueFormat4;\r
+\r
+\r
+struct HB_CaretValue_\r
+{\r
+ HB_UShort CaretValueFormat; /* 1, 2, 3, or 4 */\r
+\r
+ union\r
+ {\r
+ HB_CaretValueFormat1 cvf1;\r
+ HB_CaretValueFormat2 cvf2;\r
+ HB_CaretValueFormat3 cvf3;\r
+ HB_CaretValueFormat4 cvf4;\r
+ } cvf;\r
+};\r
+\r
+typedef struct HB_CaretValue_ HB_CaretValue;\r
+\r
+\r
+struct HB_LigGlyph_\r
+{\r
+ HB_Bool loaded;\r
+\r
+ HB_UShort CaretCount; /* number of caret values */\r
+ HB_CaretValue* CaretValue; /* array of caret values */\r
+};\r
+\r
+\r
+HB_INTERNAL HB_Error\r
+_HB_GDEF_Add_Glyph_Property( HB_GDEFHeader* gdef,\r
+ HB_UShort glyphID,\r
+ HB_UShort property );\r
+\r
+HB_INTERNAL HB_Error\r
+_HB_GDEF_Check_Property( HB_GDEFHeader* gdef,\r
+ HB_GlyphItem item,\r
+ HB_UShort flags,\r
+ HB_UShort* property );\r
+\r
+HB_INTERNAL HB_Error\r
+_HB_GDEF_LoadMarkAttachClassDef_From_LookupFlags( HB_GDEFHeader* gdef,\r
+ HB_Stream input,\r
+ HB_Lookup* lo,\r
+ HB_UShort num_lookups );\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_GDEF_PRIVATE_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_GDEF_H\r
+#define HARFBUZZ_GDEF_H\r
+\r
+#include "harfbuzz-open.h"\r
+#include "harfbuzz-stream.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+/* GDEF glyph properties. Note that HB_GDEF_COMPONENT has no corresponding\r
+ * flag in the LookupFlag field. */\r
+#define HB_GDEF_BASE_GLYPH 0x0002\r
+#define HB_GDEF_LIGATURE 0x0004\r
+#define HB_GDEF_MARK 0x0008\r
+#define HB_GDEF_COMPONENT 0x0010\r
+\r
+\r
+typedef struct HB_AttachPoint_ HB_AttachPoint;\r
+\r
+\r
+struct HB_AttachList_\r
+{\r
+ HB_Bool loaded;\r
+\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort GlyphCount; /* number of glyphs with\r
+ attachments */\r
+ HB_AttachPoint* AttachPoint; /* array of AttachPoint tables */\r
+};\r
+\r
+typedef struct HB_AttachList_ HB_AttachList;\r
+\r
+typedef struct HB_LigGlyph_ HB_LigGlyph;\r
+\r
+struct HB_LigCaretList_\r
+{\r
+ HB_Bool loaded;\r
+\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort LigGlyphCount; /* number of ligature glyphs */\r
+ HB_LigGlyph* LigGlyph; /* array of LigGlyph tables */\r
+};\r
+\r
+typedef struct HB_LigCaretList_ HB_LigCaretList;\r
+\r
+\r
+\r
+/* The `NewGlyphClasses' field is not defined in the TTO specification.\r
+ We use it for fonts with a constructed `GlyphClassDef' structure\r
+ (i.e., which don't have a GDEF table) to collect glyph classes\r
+ assigned during the lookup process. The number of arrays in this\r
+ pointer array is GlyphClassDef->cd.cd2.ClassRangeCount+1; the nth\r
+ array then contains the glyph class values of the glyphs not covered\r
+ by the ClassRangeRecords structures with index n-1 and n. We store\r
+ glyph class values for four glyphs in a single array element.\r
+\r
+ `LastGlyph' is identical to the number of glyphs minus one in the\r
+ font; we need it only if `NewGlyphClasses' is not NULL (to have an\r
+ upper bound for the last array).\r
+\r
+ Note that we first store the file offset to the `MarkAttachClassDef'\r
+ field (which has been introduced in OpenType 1.2) -- since the\r
+ `Version' field value hasn't been increased to indicate that we have\r
+ one more field for some obscure reason, we must parse the GSUB table\r
+ to find out whether class values refer to this table. Only then we\r
+ can finally load the MarkAttachClassDef structure if necessary. */\r
+\r
+struct HB_GDEFHeader_\r
+{\r
+ HB_UInt offset;\r
+\r
+ HB_16Dot16 Version;\r
+\r
+ HB_ClassDefinition GlyphClassDef;\r
+ HB_AttachList AttachList;\r
+ HB_LigCaretList LigCaretList;\r
+ HB_UInt MarkAttachClassDef_offset;\r
+ HB_ClassDefinition MarkAttachClassDef; /* new in OT 1.2 */\r
+\r
+ HB_UShort LastGlyph;\r
+ HB_UShort** NewGlyphClasses;\r
+};\r
+\r
+typedef struct HB_GDEFHeader_ HB_GDEFHeader;\r
+typedef struct HB_GDEFHeader_* HB_GDEF;\r
+\r
+\r
+HB_Error HB_New_GDEF_Table( HB_GDEFHeader** retptr );\r
+ \r
+\r
+HB_Error HB_Load_GDEF_Table( HB_Stream stream,\r
+ HB_GDEFHeader** gdef );\r
+\r
+\r
+HB_Error HB_Done_GDEF_Table ( HB_GDEFHeader* gdef );\r
+\r
+\r
+HB_Error HB_GDEF_Get_Glyph_Property( HB_GDEFHeader* gdef,\r
+ HB_UShort glyphID,\r
+ HB_UShort* property );\r
+\r
+HB_Error HB_GDEF_Build_ClassDefinition( HB_GDEFHeader* gdef,\r
+ HB_UShort num_glyphs,\r
+ HB_UShort glyph_count,\r
+ HB_UShort* glyph_array,\r
+ HB_UShort* class_array );\r
+\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_GDEF_H */\r
--- /dev/null
+/*\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ *\r
+ */\r
+\r
+#ifndef HARFBUZZ_GLOBAL_H\r
+#define HARFBUZZ_GLOBAL_H\r
+\r
+#include <stdlib.h>\r
+#include <string.h>\r
+\r
+#ifdef __cplusplus\r
+#define HB_BEGIN_HEADER extern "C" {\r
+#define HB_END_HEADER }\r
+#else\r
+#define HB_BEGIN_HEADER /* nothing */\r
+#define HB_END_HEADER /* nothing */\r
+#endif\r
+\r
+HB_BEGIN_HEADER\r
+\r
+#ifndef FALSE\r
+#define FALSE 0\r
+#endif\r
+\r
+#ifndef TRUE\r
+#define TRUE (!FALSE)\r
+#endif\r
+\r
+#ifndef false\r
+#define false 0\r
+#endif\r
+\r
+#ifndef true\r
+#define true (!FALSE)\r
+#endif\r
+\r
+#define HB_MAKE_TAG( _x1, _x2, _x3, _x4 ) \\r
+ ( ( (HB_UInt)_x1 << 24 ) | \\r
+ ( (HB_UInt)_x2 << 16 ) | \\r
+ ( (HB_UInt)_x3 << 8 ) | \\r
+ (HB_UInt)_x4 )\r
+\r
+typedef char hb_int8;\r
+typedef unsigned char hb_uint8;\r
+typedef short hb_int16;\r
+typedef unsigned short hb_uint16;\r
+typedef int hb_int32;\r
+typedef unsigned int hb_uint32;\r
+\r
+typedef hb_uint8 HB_Bool;\r
+typedef hb_uint8 bool;\r
+\r
+typedef hb_uint8 HB_Byte;\r
+typedef hb_uint16 HB_UShort;\r
+typedef hb_uint32 HB_UInt;\r
+typedef hb_int8 HB_Char;\r
+typedef hb_int16 HB_Short;\r
+typedef hb_int32 HB_Int;\r
+\r
+typedef hb_uint16 HB_UChar16;\r
+typedef hb_uint32 HB_UChar32;\r
+typedef hb_uint32 HB_Glyph;\r
+typedef hb_int32 HB_Fixed; /* 26.6 */\r
+\r
+#define HB_FIXED_CONSTANT(v) ((v) * 64)\r
+#define HB_FIXED_ROUND(v) (((v)+32) & -64)\r
+\r
+typedef hb_int32 HB_16Dot16; /* 16.16 */\r
+\r
+typedef void * HB_Pointer;\r
+typedef hb_uint32 HB_Tag;\r
+\r
+typedef enum {\r
+ /* no error */\r
+ HB_Err_Ok = 0x0000,\r
+ HB_Err_Not_Covered = 0xFFFF,\r
+\r
+ /* _hb_err() is called whenever returning the following errors,\r
+ * and in a couple places for HB_Err_Not_Covered too. */\r
+\r
+ /* programmer error */\r
+ HB_Err_Invalid_Argument = 0x1A66,\r
+\r
+ /* font error */\r
+ HB_Err_Invalid_SubTable_Format = 0x157F,\r
+ HB_Err_Invalid_SubTable = 0x1570,\r
+ HB_Err_Read_Error = 0x6EAD,\r
+\r
+ /* system error */\r
+ HB_Err_Out_Of_Memory = 0xDEAD\r
+} HB_Error;\r
+\r
+typedef struct {\r
+ HB_Fixed x;\r
+ HB_Fixed y;\r
+} HB_FixedPoint;\r
+\r
+typedef struct HB_Font_ *HB_Font;\r
+typedef struct HB_StreamRec_ *HB_Stream;\r
+typedef struct HB_FaceRec_ *HB_Face;\r
+\r
+HB_END_HEADER\r
+\r
+#endif\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_GPOS_PRIVATE_H\r
+#define HARFBUZZ_GPOS_PRIVATE_H\r
+\r
+#include "harfbuzz-impl.h"\r
+#include "harfbuzz-stream-private.h"\r
+#include "harfbuzz-gpos.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+\r
+/* shared tables */\r
+\r
+struct HB_ValueRecord_\r
+{\r
+ HB_Short XPlacement; /* horizontal adjustment for\r
+ placement */\r
+ HB_Short YPlacement; /* vertical adjustment for\r
+ placement */\r
+ HB_Short XAdvance; /* horizontal adjustment for\r
+ advance */\r
+ HB_Short YAdvance; /* vertical adjustment for\r
+ advance */\r
+ HB_Device XPlacementDevice; /* device table for horizontal\r
+ placement */\r
+ HB_Device YPlacementDevice; /* device table for vertical\r
+ placement */\r
+ HB_Device XAdvanceDevice; /* device table for horizontal\r
+ advance */\r
+ HB_Device YAdvanceDevice; /* device table for vertical\r
+ advance */\r
+ HB_UShort XIdPlacement; /* horizontal placement metric ID */\r
+ HB_UShort YIdPlacement; /* vertical placement metric ID */\r
+ HB_UShort XIdAdvance; /* horizontal advance metric ID */\r
+ HB_UShort YIdAdvance; /* vertical advance metric ID */\r
+};\r
+\r
+typedef struct HB_ValueRecord_ HB_ValueRecord;\r
+\r
+\r
+/* Mask values to scan the value format of the ValueRecord structure.\r
+ We always expand compressed ValueRecords of the font. */\r
+\r
+#define HB_GPOS_FORMAT_HAVE_X_PLACEMENT 0x0001\r
+#define HB_GPOS_FORMAT_HAVE_Y_PLACEMENT 0x0002\r
+#define HB_GPOS_FORMAT_HAVE_X_ADVANCE 0x0004\r
+#define HB_GPOS_FORMAT_HAVE_Y_ADVANCE 0x0008\r
+#define HB_GPOS_FORMAT_HAVE_X_PLACEMENT_DEVICE 0x0010\r
+#define HB_GPOS_FORMAT_HAVE_Y_PLACEMENT_DEVICE 0x0020\r
+#define HB_GPOS_FORMAT_HAVE_X_ADVANCE_DEVICE 0x0040\r
+#define HB_GPOS_FORMAT_HAVE_Y_ADVANCE_DEVICE 0x0080\r
+#define HB_GPOS_FORMAT_HAVE_X_ID_PLACEMENT 0x0100\r
+#define HB_GPOS_FORMAT_HAVE_Y_ID_PLACEMENT 0x0200\r
+#define HB_GPOS_FORMAT_HAVE_X_ID_ADVANCE 0x0400\r
+#define HB_GPOS_FORMAT_HAVE_Y_ID_ADVANCE 0x0800\r
+\r
+\r
+struct HB_AnchorFormat1_\r
+{\r
+ HB_Short XCoordinate; /* horizontal value */\r
+ HB_Short YCoordinate; /* vertical value */\r
+};\r
+\r
+typedef struct HB_AnchorFormat1_ HB_AnchorFormat1;\r
+\r
+\r
+struct HB_AnchorFormat2_\r
+{\r
+ HB_Short XCoordinate; /* horizontal value */\r
+ HB_Short YCoordinate; /* vertical value */\r
+ HB_UShort AnchorPoint; /* index to glyph contour point */\r
+};\r
+\r
+typedef struct HB_AnchorFormat2_ HB_AnchorFormat2;\r
+\r
+\r
+struct HB_AnchorFormat3_\r
+{\r
+ HB_Short XCoordinate; /* horizontal value */\r
+ HB_Short YCoordinate; /* vertical value */\r
+ HB_Device XDeviceTable; /* device table for X coordinate */\r
+ HB_Device YDeviceTable; /* device table for Y coordinate */\r
+};\r
+\r
+typedef struct HB_AnchorFormat3_ HB_AnchorFormat3;\r
+\r
+\r
+struct HB_AnchorFormat4_\r
+{\r
+ HB_UShort XIdAnchor; /* horizontal metric ID */\r
+ HB_UShort YIdAnchor; /* vertical metric ID */\r
+};\r
+\r
+typedef struct HB_AnchorFormat4_ HB_AnchorFormat4;\r
+\r
+\r
+struct HB_Anchor_\r
+{\r
+ HB_UShort PosFormat; /* 1, 2, 3, or 4 -- 0 indicates\r
+ that there is no Anchor table */\r
+\r
+ union\r
+ {\r
+ HB_AnchorFormat1 af1;\r
+ HB_AnchorFormat2 af2;\r
+ HB_AnchorFormat3 af3;\r
+ HB_AnchorFormat4 af4;\r
+ } af;\r
+};\r
+\r
+typedef struct HB_Anchor_ HB_Anchor;\r
+\r
+\r
+struct HB_MarkRecord_\r
+{\r
+ HB_UShort Class; /* mark class */\r
+ HB_Anchor MarkAnchor; /* anchor table */\r
+};\r
+\r
+typedef struct HB_MarkRecord_ HB_MarkRecord;\r
+\r
+\r
+struct HB_MarkArray_\r
+{\r
+ HB_UShort MarkCount; /* number of MarkRecord tables */\r
+ HB_MarkRecord* MarkRecord; /* array of MarkRecord tables */\r
+};\r
+\r
+typedef struct HB_MarkArray_ HB_MarkArray;\r
+\r
+\r
+/* LookupType 1 */\r
+\r
+struct HB_SinglePosFormat1_\r
+{\r
+ HB_ValueRecord Value; /* ValueRecord for all covered\r
+ glyphs */\r
+};\r
+\r
+typedef struct HB_SinglePosFormat1_ HB_SinglePosFormat1;\r
+\r
+\r
+struct HB_SinglePosFormat2_\r
+{\r
+ HB_UShort ValueCount; /* number of ValueRecord tables */\r
+ HB_ValueRecord* Value; /* array of ValueRecord tables */\r
+};\r
+\r
+typedef struct HB_SinglePosFormat2_ HB_SinglePosFormat2;\r
+\r
+\r
+struct HB_SinglePos_\r
+{\r
+ HB_UShort PosFormat; /* 1 or 2 */\r
+ HB_Coverage Coverage; /* Coverage table */\r
+\r
+ HB_UShort ValueFormat; /* format of ValueRecord table */\r
+\r
+ union\r
+ {\r
+ HB_SinglePosFormat1 spf1;\r
+ HB_SinglePosFormat2 spf2;\r
+ } spf;\r
+};\r
+\r
+typedef struct HB_SinglePos_ HB_SinglePos;\r
+\r
+\r
+/* LookupType 2 */\r
+\r
+struct HB_PairValueRecord_\r
+{\r
+ HB_UShort SecondGlyph; /* glyph ID for second glyph */\r
+ HB_ValueRecord Value1; /* pos. data for first glyph */\r
+ HB_ValueRecord Value2; /* pos. data for second glyph */\r
+};\r
+\r
+typedef struct HB_PairValueRecord_ HB_PairValueRecord;\r
+\r
+\r
+struct HB_PairSet_\r
+{\r
+ HB_UShort PairValueCount;\r
+ /* number of PairValueRecord tables */\r
+ HB_PairValueRecord* PairValueRecord;\r
+ /* array of PairValueRecord tables */\r
+};\r
+\r
+typedef struct HB_PairSet_ HB_PairSet;\r
+\r
+\r
+struct HB_PairPosFormat1_\r
+{\r
+ HB_UShort PairSetCount; /* number of PairSet tables */\r
+ HB_PairSet* PairSet; /* array of PairSet tables */\r
+};\r
+\r
+typedef struct HB_PairPosFormat1_ HB_PairPosFormat1;\r
+\r
+\r
+struct HB_Class2Record_\r
+{\r
+ HB_ValueRecord Value1; /* pos. data for first glyph */\r
+ HB_ValueRecord Value2; /* pos. data for second glyph */\r
+};\r
+\r
+typedef struct HB_Class2Record_ HB_Class2Record;\r
+\r
+\r
+struct HB_Class1Record_\r
+{\r
+ HB_Class2Record* Class2Record; /* array of Class2Record tables */\r
+};\r
+\r
+typedef struct HB_Class1Record_ HB_Class1Record;\r
+\r
+\r
+struct HB_PairPosFormat2_\r
+{\r
+ HB_ClassDefinition ClassDef1; /* class def. for first glyph */\r
+ HB_ClassDefinition ClassDef2; /* class def. for second glyph */\r
+ HB_UShort Class1Count; /* number of classes in ClassDef1\r
+ table */\r
+ HB_UShort Class2Count; /* number of classes in ClassDef2\r
+ table */\r
+ HB_Class1Record* Class1Record; /* array of Class1Record tables */\r
+};\r
+\r
+typedef struct HB_PairPosFormat2_ HB_PairPosFormat2;\r
+\r
+\r
+struct HB_PairPos_\r
+{\r
+ HB_UShort PosFormat; /* 1 or 2 */\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort ValueFormat1; /* format of ValueRecord table\r
+ for first glyph */\r
+ HB_UShort ValueFormat2; /* format of ValueRecord table\r
+ for second glyph */\r
+\r
+ union\r
+ {\r
+ HB_PairPosFormat1 ppf1;\r
+ HB_PairPosFormat2 ppf2;\r
+ } ppf;\r
+};\r
+\r
+typedef struct HB_PairPos_ HB_PairPos;\r
+\r
+\r
+/* LookupType 3 */\r
+\r
+struct HB_EntryExitRecord_\r
+{\r
+ HB_Anchor EntryAnchor; /* entry Anchor table */\r
+ HB_Anchor ExitAnchor; /* exit Anchor table */\r
+};\r
+\r
+\r
+typedef struct HB_EntryExitRecord_ HB_EntryExitRecord;\r
+\r
+struct HB_CursivePos_\r
+{\r
+ HB_UShort PosFormat; /* always 1 */\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort EntryExitCount;\r
+ /* number of EntryExitRecord tables */\r
+ HB_EntryExitRecord* EntryExitRecord;\r
+ /* array of EntryExitRecord tables */\r
+};\r
+\r
+typedef struct HB_CursivePos_ HB_CursivePos;\r
+\r
+\r
+/* LookupType 4 */\r
+\r
+struct HB_BaseRecord_\r
+{\r
+ HB_Anchor* BaseAnchor; /* array of base glyph anchor\r
+ tables */\r
+};\r
+\r
+typedef struct HB_BaseRecord_ HB_BaseRecord;\r
+\r
+\r
+struct HB_BaseArray_\r
+{\r
+ HB_UShort BaseCount; /* number of BaseRecord tables */\r
+ HB_BaseRecord* BaseRecord; /* array of BaseRecord tables */\r
+};\r
+\r
+typedef struct HB_BaseArray_ HB_BaseArray;\r
+\r
+\r
+struct HB_MarkBasePos_\r
+{\r
+ HB_UShort PosFormat; /* always 1 */\r
+ HB_Coverage MarkCoverage; /* mark glyph coverage table */\r
+ HB_Coverage BaseCoverage; /* base glyph coverage table */\r
+ HB_UShort ClassCount; /* number of mark classes */\r
+ HB_MarkArray MarkArray; /* mark array table */\r
+ HB_BaseArray BaseArray; /* base array table */\r
+};\r
+\r
+typedef struct HB_MarkBasePos_ HB_MarkBasePos;\r
+\r
+\r
+/* LookupType 5 */\r
+\r
+struct HB_ComponentRecord_\r
+{\r
+ HB_Anchor* LigatureAnchor; /* array of ligature glyph anchor\r
+ tables */\r
+};\r
+\r
+typedef struct HB_ComponentRecord_ HB_ComponentRecord;\r
+\r
+\r
+struct HB_LigatureAttach_\r
+{\r
+ HB_UShort ComponentCount;\r
+ /* number of ComponentRecord tables */\r
+ HB_ComponentRecord* ComponentRecord;\r
+ /* array of ComponentRecord tables */\r
+};\r
+\r
+typedef struct HB_LigatureAttach_ HB_LigatureAttach;\r
+\r
+\r
+struct HB_LigatureArray_\r
+{\r
+ HB_UShort LigatureCount; /* number of LigatureAttach tables */\r
+ HB_LigatureAttach* LigatureAttach;\r
+ /* array of LigatureAttach tables */\r
+};\r
+\r
+typedef struct HB_LigatureArray_ HB_LigatureArray;\r
+\r
+\r
+struct HB_MarkLigPos_\r
+{\r
+ HB_UShort PosFormat; /* always 1 */\r
+ HB_Coverage MarkCoverage; /* mark glyph coverage table */\r
+ HB_Coverage LigatureCoverage;\r
+ /* ligature glyph coverage table */\r
+ HB_UShort ClassCount; /* number of mark classes */\r
+ HB_MarkArray MarkArray; /* mark array table */\r
+ HB_LigatureArray LigatureArray; /* ligature array table */\r
+};\r
+\r
+typedef struct HB_MarkLigPos_ HB_MarkLigPos;\r
+\r
+\r
+/* LookupType 6 */\r
+\r
+struct HB_Mark2Record_\r
+{\r
+ HB_Anchor* Mark2Anchor; /* array of mark glyph anchor\r
+ tables */\r
+};\r
+\r
+typedef struct HB_Mark2Record_ HB_Mark2Record;\r
+\r
+\r
+struct HB_Mark2Array_\r
+{\r
+ HB_UShort Mark2Count; /* number of Mark2Record tables */\r
+ HB_Mark2Record* Mark2Record; /* array of Mark2Record tables */\r
+};\r
+\r
+typedef struct HB_Mark2Array_ HB_Mark2Array;\r
+\r
+\r
+struct HB_MarkMarkPos_\r
+{\r
+ HB_UShort PosFormat; /* always 1 */\r
+ HB_Coverage Mark1Coverage; /* first mark glyph coverage table */\r
+ HB_Coverage Mark2Coverage; /* second mark glyph coverave table */\r
+ HB_UShort ClassCount; /* number of combining mark classes */\r
+ HB_MarkArray Mark1Array; /* MarkArray table for first mark */\r
+ HB_Mark2Array Mark2Array; /* MarkArray table for second mark */\r
+};\r
+\r
+typedef struct HB_MarkMarkPos_ HB_MarkMarkPos;\r
+\r
+\r
+/* needed by both lookup type 7 and 8 */\r
+\r
+struct HB_PosLookupRecord_\r
+{\r
+ HB_UShort SequenceIndex; /* index into current\r
+ glyph sequence */\r
+ HB_UShort LookupListIndex; /* Lookup to apply to that pos. */\r
+};\r
+\r
+typedef struct HB_PosLookupRecord_ HB_PosLookupRecord;\r
+\r
+\r
+/* LookupType 7 */\r
+\r
+struct HB_PosRule_\r
+{\r
+ HB_UShort GlyphCount; /* total number of input glyphs */\r
+ HB_UShort PosCount; /* number of PosLookupRecord tables */\r
+ HB_UShort* Input; /* array of input glyph IDs */\r
+ HB_PosLookupRecord* PosLookupRecord;\r
+ /* array of PosLookupRecord tables */\r
+};\r
+\r
+typedef struct HB_PosRule_ HB_PosRule;\r
+\r
+\r
+struct HB_PosRuleSet_\r
+{\r
+ HB_UShort PosRuleCount; /* number of PosRule tables */\r
+ HB_PosRule* PosRule; /* array of PosRule tables */\r
+};\r
+\r
+typedef struct HB_PosRuleSet_ HB_PosRuleSet;\r
+\r
+\r
+struct HB_ContextPosFormat1_\r
+{\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort PosRuleSetCount; /* number of PosRuleSet tables */\r
+ HB_PosRuleSet* PosRuleSet; /* array of PosRuleSet tables */\r
+};\r
+\r
+typedef struct HB_ContextPosFormat1_ HB_ContextPosFormat1;\r
+\r
+\r
+struct HB_PosClassRule_\r
+{\r
+ HB_UShort GlyphCount; /* total number of context classes */\r
+ HB_UShort PosCount; /* number of PosLookupRecord tables */\r
+ HB_UShort* Class; /* array of classes */\r
+ HB_PosLookupRecord* PosLookupRecord;\r
+ /* array of PosLookupRecord tables */\r
+};\r
+\r
+typedef struct HB_PosClassRule_ HB_PosClassRule;\r
+\r
+\r
+struct HB_PosClassSet_\r
+{\r
+ HB_UShort PosClassRuleCount;\r
+ /* number of PosClassRule tables */\r
+ HB_PosClassRule* PosClassRule; /* array of PosClassRule tables */\r
+};\r
+\r
+typedef struct HB_PosClassSet_ HB_PosClassSet;\r
+\r
+\r
+/* The `MaxContextLength' field is not defined in the TTO specification\r
+ but simplifies the implementation of this format. It holds the\r
+ maximal context length used in the context rules. */\r
+\r
+struct HB_ContextPosFormat2_\r
+{\r
+ HB_UShort MaxContextLength;\r
+ /* maximal context length */\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_ClassDefinition ClassDef; /* ClassDef table */\r
+ HB_UShort PosClassSetCount;\r
+ /* number of PosClassSet tables */\r
+ HB_PosClassSet* PosClassSet; /* array of PosClassSet tables */\r
+};\r
+\r
+typedef struct HB_ContextPosFormat2_ HB_ContextPosFormat2;\r
+\r
+\r
+struct HB_ContextPosFormat3_\r
+{\r
+ HB_UShort GlyphCount; /* number of input glyphs */\r
+ HB_UShort PosCount; /* number of PosLookupRecord tables */\r
+ HB_Coverage* Coverage; /* array of Coverage tables */\r
+ HB_PosLookupRecord* PosLookupRecord;\r
+ /* array of PosLookupRecord tables */\r
+};\r
+\r
+typedef struct HB_ContextPosFormat3_ HB_ContextPosFormat3;\r
+\r
+\r
+struct HB_ContextPos_\r
+{\r
+ HB_UShort PosFormat; /* 1, 2, or 3 */\r
+\r
+ union\r
+ {\r
+ HB_ContextPosFormat1 cpf1;\r
+ HB_ContextPosFormat2 cpf2;\r
+ HB_ContextPosFormat3 cpf3;\r
+ } cpf;\r
+};\r
+\r
+typedef struct HB_ContextPos_ HB_ContextPos;\r
+\r
+\r
+/* LookupType 8 */\r
+\r
+struct HB_ChainPosRule_\r
+{\r
+ HB_UShort BacktrackGlyphCount;\r
+ /* total number of backtrack glyphs */\r
+ HB_UShort* Backtrack; /* array of backtrack glyph IDs */\r
+ HB_UShort InputGlyphCount;\r
+ /* total number of input glyphs */\r
+ HB_UShort* Input; /* array of input glyph IDs */\r
+ HB_UShort LookaheadGlyphCount;\r
+ /* total number of lookahead glyphs */\r
+ HB_UShort* Lookahead; /* array of lookahead glyph IDs */\r
+ HB_UShort PosCount; /* number of PosLookupRecords */\r
+ HB_PosLookupRecord* PosLookupRecord;\r
+ /* array of PosLookupRecords */\r
+};\r
+\r
+typedef struct HB_ChainPosRule_ HB_ChainPosRule;\r
+\r
+\r
+struct HB_ChainPosRuleSet_\r
+{\r
+ HB_UShort ChainPosRuleCount;\r
+ /* number of ChainPosRule tables */\r
+ HB_ChainPosRule* ChainPosRule; /* array of ChainPosRule tables */\r
+};\r
+\r
+typedef struct HB_ChainPosRuleSet_ HB_ChainPosRuleSet;\r
+\r
+\r
+struct HB_ChainContextPosFormat1_\r
+{\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort ChainPosRuleSetCount;\r
+ /* number of ChainPosRuleSet tables */\r
+ HB_ChainPosRuleSet* ChainPosRuleSet;\r
+ /* array of ChainPosRuleSet tables */\r
+};\r
+\r
+typedef struct HB_ChainContextPosFormat1_ HB_ChainContextPosFormat1;\r
+\r
+\r
+struct HB_ChainPosClassRule_\r
+{\r
+ HB_UShort BacktrackGlyphCount;\r
+ /* total number of backtrack\r
+ classes */\r
+ HB_UShort* Backtrack; /* array of backtrack classes */\r
+ HB_UShort InputGlyphCount;\r
+ /* total number of context classes */\r
+ HB_UShort* Input; /* array of context classes */\r
+ HB_UShort LookaheadGlyphCount;\r
+ /* total number of lookahead\r
+ classes */\r
+ HB_UShort* Lookahead; /* array of lookahead classes */\r
+ HB_UShort PosCount; /* number of PosLookupRecords */\r
+ HB_PosLookupRecord* PosLookupRecord;\r
+ /* array of substitution lookups */\r
+};\r
+\r
+typedef struct HB_ChainPosClassRule_ HB_ChainPosClassRule;\r
+\r
+\r
+struct HB_ChainPosClassSet_\r
+{\r
+ HB_UShort ChainPosClassRuleCount;\r
+ /* number of ChainPosClassRule\r
+ tables */\r
+ HB_ChainPosClassRule* ChainPosClassRule;\r
+ /* array of ChainPosClassRule\r
+ tables */\r
+};\r
+\r
+typedef struct HB_ChainPosClassSet_ HB_ChainPosClassSet;\r
+\r
+\r
+/* The `MaxXXXLength' fields are not defined in the TTO specification\r
+ but simplifies the implementation of this format. It holds the\r
+ maximal context length used in the specific context rules. */\r
+\r
+struct HB_ChainContextPosFormat2_\r
+{\r
+ HB_Coverage Coverage; /* Coverage table */\r
+\r
+ HB_UShort MaxBacktrackLength;\r
+ /* maximal backtrack length */\r
+ HB_ClassDefinition BacktrackClassDef;\r
+ /* BacktrackClassDef table */\r
+ HB_UShort MaxInputLength;\r
+ /* maximal input length */\r
+ HB_ClassDefinition InputClassDef;\r
+ /* InputClassDef table */\r
+ HB_UShort MaxLookaheadLength;\r
+ /* maximal lookahead length */\r
+ HB_ClassDefinition LookaheadClassDef;\r
+ /* LookaheadClassDef table */\r
+\r
+ HB_UShort ChainPosClassSetCount;\r
+ /* number of ChainPosClassSet\r
+ tables */\r
+ HB_ChainPosClassSet* ChainPosClassSet;\r
+ /* array of ChainPosClassSet\r
+ tables */\r
+};\r
+\r
+typedef struct HB_ChainContextPosFormat2_ HB_ChainContextPosFormat2;\r
+\r
+\r
+struct HB_ChainContextPosFormat3_\r
+{\r
+ HB_UShort BacktrackGlyphCount;\r
+ /* number of backtrack glyphs */\r
+ HB_Coverage* BacktrackCoverage;\r
+ /* array of backtrack Coverage\r
+ tables */\r
+ HB_UShort InputGlyphCount;\r
+ /* number of input glyphs */\r
+ HB_Coverage* InputCoverage;\r
+ /* array of input coverage\r
+ tables */\r
+ HB_UShort LookaheadGlyphCount;\r
+ /* number of lookahead glyphs */\r
+ HB_Coverage* LookaheadCoverage;\r
+ /* array of lookahead coverage\r
+ tables */\r
+ HB_UShort PosCount; /* number of PosLookupRecords */\r
+ HB_PosLookupRecord* PosLookupRecord;\r
+ /* array of substitution lookups */\r
+};\r
+\r
+typedef struct HB_ChainContextPosFormat3_ HB_ChainContextPosFormat3;\r
+\r
+\r
+struct HB_ChainContextPos_\r
+{\r
+ HB_UShort PosFormat; /* 1, 2, or 3 */\r
+\r
+ union\r
+ {\r
+ HB_ChainContextPosFormat1 ccpf1;\r
+ HB_ChainContextPosFormat2 ccpf2;\r
+ HB_ChainContextPosFormat3 ccpf3;\r
+ } ccpf;\r
+};\r
+\r
+typedef struct HB_ChainContextPos_ HB_ChainContextPos;\r
+\r
+\r
+#if 0\r
+/* LookupType 10 */\r
+struct HB_ExtensionPos_\r
+{\r
+ HB_UShort PosFormat; /* always 1 */\r
+ HB_UShort LookuptType; /* lookup-type of referenced subtable */\r
+ HB_GPOS_SubTable *subtable; /* referenced subtable */\r
+};\r
+\r
+typedef struct HB_ExtensionPos_ HB_ExtensionPos;\r
+#endif\r
+\r
+\r
+union HB_GPOS_SubTable_\r
+{\r
+ HB_SinglePos single;\r
+ HB_PairPos pair;\r
+ HB_CursivePos cursive;\r
+ HB_MarkBasePos markbase;\r
+ HB_MarkLigPos marklig;\r
+ HB_MarkMarkPos markmark;\r
+ HB_ContextPos context;\r
+ HB_ChainContextPos chain;\r
+};\r
+\r
+typedef union HB_GPOS_SubTable_ HB_GPOS_SubTable;\r
+\r
+\r
+\r
+HB_INTERNAL HB_Error\r
+_HB_GPOS_Load_SubTable( HB_GPOS_SubTable* st,\r
+ HB_Stream stream,\r
+ HB_UShort lookup_type );\r
+\r
+HB_INTERNAL void\r
+_HB_GPOS_Free_SubTable( HB_GPOS_SubTable* st,\r
+ HB_UShort lookup_type );\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_GPOS_PRIVATE_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_GPOS_H\r
+#define HARFBUZZ_GPOS_H\r
+\r
+#include "harfbuzz-gdef.h"\r
+#include "harfbuzz-buffer.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+\r
+/* Lookup types for glyph positioning */\r
+\r
+#define HB_GPOS_LOOKUP_SINGLE 1\r
+#define HB_GPOS_LOOKUP_PAIR 2\r
+#define HB_GPOS_LOOKUP_CURSIVE 3\r
+#define HB_GPOS_LOOKUP_MARKBASE 4\r
+#define HB_GPOS_LOOKUP_MARKLIG 5\r
+#define HB_GPOS_LOOKUP_MARKMARK 6\r
+#define HB_GPOS_LOOKUP_CONTEXT 7\r
+#define HB_GPOS_LOOKUP_CHAIN 8\r
+#define HB_GPOS_LOOKUP_EXTENSION 9\r
+\r
+/* A pointer to a function which accesses the PostScript interpreter.\r
+ Multiple Master fonts need this interface to convert a metric ID\r
+ (as stored in an OpenType font version 1.2 or higher) `metric_id'\r
+ into a metric value (returned in `metric_value').\r
+\r
+ `data' points to the user-defined structure specified during a\r
+ call to HB_GPOS_Register_MM_Function().\r
+\r
+ `metric_value' must be returned as a scaled value (but shouldn't\r
+ be rounded). */\r
+\r
+typedef HB_Error (*HB_MMFunction)(HB_Font font,\r
+ HB_UShort metric_id,\r
+ HB_Fixed* metric_value,\r
+ void* data );\r
+\r
+\r
+struct HB_GPOSHeader_\r
+{\r
+ HB_16Dot16 Version;\r
+\r
+ HB_ScriptList ScriptList;\r
+ HB_FeatureList FeatureList;\r
+ HB_LookupList LookupList;\r
+\r
+ HB_GDEFHeader* gdef;\r
+\r
+ /* this is OpenType 1.2 -- Multiple Master fonts need this\r
+ callback function to get various metric values from the\r
+ PostScript interpreter. */\r
+\r
+ HB_MMFunction mmfunc;\r
+ void* data;\r
+};\r
+\r
+typedef struct HB_GPOSHeader_ HB_GPOSHeader;\r
+typedef HB_GPOSHeader* HB_GPOS;\r
+\r
+\r
+HB_Error HB_Load_GPOS_Table( HB_Stream stream, \r
+ HB_GPOSHeader** gpos,\r
+ HB_GDEFHeader* gdef,\r
+ HB_Stream gdefStream );\r
+\r
+\r
+HB_Error HB_Done_GPOS_Table( HB_GPOSHeader* gpos );\r
+\r
+\r
+HB_Error HB_GPOS_Select_Script( HB_GPOSHeader* gpos,\r
+ HB_UInt script_tag,\r
+ HB_UShort* script_index );\r
+\r
+HB_Error HB_GPOS_Select_Language( HB_GPOSHeader* gpos,\r
+ HB_UInt language_tag,\r
+ HB_UShort script_index,\r
+ HB_UShort* language_index,\r
+ HB_UShort* req_feature_index );\r
+\r
+HB_Error HB_GPOS_Select_Feature( HB_GPOSHeader* gpos,\r
+ HB_UInt feature_tag,\r
+ HB_UShort script_index,\r
+ HB_UShort language_index,\r
+ HB_UShort* feature_index );\r
+\r
+\r
+HB_Error HB_GPOS_Query_Scripts( HB_GPOSHeader* gpos,\r
+ HB_UInt** script_tag_list );\r
+\r
+HB_Error HB_GPOS_Query_Languages( HB_GPOSHeader* gpos,\r
+ HB_UShort script_index,\r
+ HB_UInt** language_tag_list );\r
+\r
+HB_Error HB_GPOS_Query_Features( HB_GPOSHeader* gpos,\r
+ HB_UShort script_index,\r
+ HB_UShort language_index,\r
+ HB_UInt** feature_tag_list );\r
+\r
+\r
+HB_Error HB_GPOS_Add_Feature( HB_GPOSHeader* gpos,\r
+ HB_UShort feature_index,\r
+ HB_UInt property );\r
+\r
+HB_Error HB_GPOS_Clear_Features( HB_GPOSHeader* gpos );\r
+\r
+\r
+HB_Error HB_GPOS_Register_MM_Function( HB_GPOSHeader* gpos,\r
+ HB_MMFunction mmfunc,\r
+ void* data );\r
+\r
+/* If `dvi' is TRUE, glyph contour points for anchor points and device\r
+ tables are ignored -- you will get device independent values. */\r
+\r
+\r
+HB_Error HB_GPOS_Apply_String( HB_Font font,\r
+ HB_GPOSHeader* gpos,\r
+ HB_UShort load_flags,\r
+ HB_Buffer buffer,\r
+ HB_Bool dvi,\r
+ HB_Bool r2l );\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_GPOS_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_GSUB_PRIVATE_H\r
+#define HARFBUZZ_GSUB_PRIVATE_H\r
+\r
+#include "harfbuzz-impl.h"\r
+#include "harfbuzz-stream-private.h"\r
+#include "harfbuzz-gsub.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+\r
+typedef union HB_GSUB_SubTable_ HB_GSUB_SubTable;\r
+\r
+/* LookupType 1 */\r
+\r
+struct HB_SingleSubstFormat1_\r
+{\r
+ HB_Short DeltaGlyphID; /* constant added to get\r
+ substitution glyph index */\r
+};\r
+\r
+typedef struct HB_SingleSubstFormat1_ HB_SingleSubstFormat1;\r
+\r
+\r
+struct HB_SingleSubstFormat2_\r
+{\r
+ HB_UShort GlyphCount; /* number of glyph IDs in\r
+ Substitute array */\r
+ HB_UShort* Substitute; /* array of substitute glyph IDs */\r
+};\r
+\r
+typedef struct HB_SingleSubstFormat2_ HB_SingleSubstFormat2;\r
+\r
+\r
+struct HB_SingleSubst_\r
+{\r
+ HB_UShort SubstFormat; /* 1 or 2 */\r
+ HB_Coverage Coverage; /* Coverage table */\r
+\r
+ union\r
+ {\r
+ HB_SingleSubstFormat1 ssf1;\r
+ HB_SingleSubstFormat2 ssf2;\r
+ } ssf;\r
+};\r
+\r
+typedef struct HB_SingleSubst_ HB_SingleSubst;\r
+\r
+\r
+/* LookupType 2 */\r
+\r
+struct HB_Sequence_\r
+{\r
+ HB_UShort GlyphCount; /* number of glyph IDs in the\r
+ Substitute array */\r
+ HB_UShort* Substitute; /* string of glyph IDs to\r
+ substitute */\r
+};\r
+\r
+typedef struct HB_Sequence_ HB_Sequence;\r
+\r
+\r
+struct HB_MultipleSubst_\r
+{\r
+ HB_UShort SubstFormat; /* always 1 */\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort SequenceCount; /* number of Sequence tables */\r
+ HB_Sequence* Sequence; /* array of Sequence tables */\r
+};\r
+\r
+typedef struct HB_MultipleSubst_ HB_MultipleSubst;\r
+\r
+\r
+/* LookupType 3 */\r
+\r
+struct HB_AlternateSet_\r
+{\r
+ HB_UShort GlyphCount; /* number of glyph IDs in the\r
+ Alternate array */\r
+ HB_UShort* Alternate; /* array of alternate glyph IDs */\r
+};\r
+\r
+typedef struct HB_AlternateSet_ HB_AlternateSet;\r
+\r
+\r
+struct HB_AlternateSubst_\r
+{\r
+ HB_UShort SubstFormat; /* always 1 */\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort AlternateSetCount;\r
+ /* number of AlternateSet tables */\r
+ HB_AlternateSet* AlternateSet; /* array of AlternateSet tables */\r
+};\r
+\r
+typedef struct HB_AlternateSubst_ HB_AlternateSubst;\r
+\r
+\r
+/* LookupType 4 */\r
+\r
+struct HB_Ligature_\r
+{\r
+ HB_UShort LigGlyph; /* glyphID of ligature\r
+ to substitute */\r
+ HB_UShort ComponentCount; /* number of components in ligature */\r
+ HB_UShort* Component; /* array of component glyph IDs */\r
+};\r
+\r
+typedef struct HB_Ligature_ HB_Ligature;\r
+\r
+\r
+struct HB_LigatureSet_\r
+{\r
+ HB_UShort LigatureCount; /* number of Ligature tables */\r
+ HB_Ligature* Ligature; /* array of Ligature tables */\r
+};\r
+\r
+typedef struct HB_LigatureSet_ HB_LigatureSet;\r
+\r
+\r
+struct HB_LigatureSubst_\r
+{\r
+ HB_UShort SubstFormat; /* always 1 */\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort LigatureSetCount; /* number of LigatureSet tables */\r
+ HB_LigatureSet* LigatureSet; /* array of LigatureSet tables */\r
+};\r
+\r
+typedef struct HB_LigatureSubst_ HB_LigatureSubst;\r
+\r
+\r
+/* needed by both lookup type 5 and 6 */\r
+\r
+struct HB_SubstLookupRecord_\r
+{\r
+ HB_UShort SequenceIndex; /* index into current\r
+ glyph sequence */\r
+ HB_UShort LookupListIndex; /* Lookup to apply to that pos. */\r
+};\r
+\r
+typedef struct HB_SubstLookupRecord_ HB_SubstLookupRecord;\r
+\r
+\r
+/* LookupType 5 */\r
+\r
+struct HB_SubRule_\r
+{\r
+ HB_UShort GlyphCount; /* total number of input glyphs */\r
+ HB_UShort SubstCount; /* number of SubstLookupRecord\r
+ tables */\r
+ HB_UShort* Input; /* array of input glyph IDs */\r
+ HB_SubstLookupRecord* SubstLookupRecord;\r
+ /* array of SubstLookupRecord\r
+ tables */\r
+};\r
+\r
+typedef struct HB_SubRule_ HB_SubRule;\r
+\r
+\r
+struct HB_SubRuleSet_\r
+{\r
+ HB_UShort SubRuleCount; /* number of SubRule tables */\r
+ HB_SubRule* SubRule; /* array of SubRule tables */\r
+};\r
+\r
+typedef struct HB_SubRuleSet_ HB_SubRuleSet;\r
+\r
+\r
+struct HB_ContextSubstFormat1_\r
+{\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort SubRuleSetCount; /* number of SubRuleSet tables */\r
+ HB_SubRuleSet* SubRuleSet; /* array of SubRuleSet tables */\r
+};\r
+\r
+typedef struct HB_ContextSubstFormat1_ HB_ContextSubstFormat1;\r
+\r
+\r
+struct HB_SubClassRule_\r
+{\r
+ HB_UShort GlyphCount; /* total number of context classes */\r
+ HB_UShort SubstCount; /* number of SubstLookupRecord\r
+ tables */\r
+ HB_UShort* Class; /* array of classes */\r
+ HB_SubstLookupRecord* SubstLookupRecord;\r
+ /* array of SubstLookupRecord\r
+ tables */\r
+};\r
+\r
+typedef struct HB_SubClassRule_ HB_SubClassRule;\r
+\r
+\r
+struct HB_SubClassSet_\r
+{\r
+ HB_UShort SubClassRuleCount;\r
+ /* number of SubClassRule tables */\r
+ HB_SubClassRule* SubClassRule; /* array of SubClassRule tables */\r
+};\r
+\r
+typedef struct HB_SubClassSet_ HB_SubClassSet;\r
+\r
+\r
+/* The `MaxContextLength' field is not defined in the TTO specification\r
+ but simplifies the implementation of this format. It holds the\r
+ maximal context length used in the context rules. */\r
+\r
+struct HB_ContextSubstFormat2_\r
+{\r
+ HB_UShort MaxContextLength;\r
+ /* maximal context length */\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_ClassDefinition ClassDef; /* ClassDef table */\r
+ HB_UShort SubClassSetCount;\r
+ /* number of SubClassSet tables */\r
+ HB_SubClassSet* SubClassSet; /* array of SubClassSet tables */\r
+};\r
+\r
+typedef struct HB_ContextSubstFormat2_ HB_ContextSubstFormat2;\r
+\r
+\r
+struct HB_ContextSubstFormat3_\r
+{\r
+ HB_UShort GlyphCount; /* number of input glyphs */\r
+ HB_UShort SubstCount; /* number of SubstLookupRecords */\r
+ HB_Coverage* Coverage; /* array of Coverage tables */\r
+ HB_SubstLookupRecord* SubstLookupRecord;\r
+ /* array of substitution lookups */\r
+};\r
+\r
+typedef struct HB_ContextSubstFormat3_ HB_ContextSubstFormat3;\r
+\r
+\r
+struct HB_ContextSubst_\r
+{\r
+ HB_UShort SubstFormat; /* 1, 2, or 3 */\r
+\r
+ union\r
+ {\r
+ HB_ContextSubstFormat1 csf1;\r
+ HB_ContextSubstFormat2 csf2;\r
+ HB_ContextSubstFormat3 csf3;\r
+ } csf;\r
+};\r
+\r
+typedef struct HB_ContextSubst_ HB_ContextSubst;\r
+\r
+\r
+/* LookupType 6 */\r
+\r
+struct HB_ChainSubRule_\r
+{\r
+ HB_UShort BacktrackGlyphCount;\r
+ /* total number of backtrack glyphs */\r
+ HB_UShort* Backtrack; /* array of backtrack glyph IDs */\r
+ HB_UShort InputGlyphCount;\r
+ /* total number of input glyphs */\r
+ HB_UShort* Input; /* array of input glyph IDs */\r
+ HB_UShort LookaheadGlyphCount;\r
+ /* total number of lookahead glyphs */\r
+ HB_UShort* Lookahead; /* array of lookahead glyph IDs */\r
+ HB_UShort SubstCount; /* number of SubstLookupRecords */\r
+ HB_SubstLookupRecord* SubstLookupRecord;\r
+ /* array of SubstLookupRecords */\r
+};\r
+\r
+typedef struct HB_ChainSubRule_ HB_ChainSubRule;\r
+\r
+\r
+struct HB_ChainSubRuleSet_\r
+{\r
+ HB_UShort ChainSubRuleCount;\r
+ /* number of ChainSubRule tables */\r
+ HB_ChainSubRule* ChainSubRule; /* array of ChainSubRule tables */\r
+};\r
+\r
+typedef struct HB_ChainSubRuleSet_ HB_ChainSubRuleSet;\r
+\r
+\r
+struct HB_ChainContextSubstFormat1_\r
+{\r
+ HB_Coverage Coverage; /* Coverage table */\r
+ HB_UShort ChainSubRuleSetCount;\r
+ /* number of ChainSubRuleSet tables */\r
+ HB_ChainSubRuleSet* ChainSubRuleSet;\r
+ /* array of ChainSubRuleSet tables */\r
+};\r
+\r
+typedef struct HB_ChainContextSubstFormat1_ HB_ChainContextSubstFormat1;\r
+\r
+\r
+struct HB_ChainSubClassRule_\r
+{\r
+ HB_UShort BacktrackGlyphCount;\r
+ /* total number of backtrack\r
+ classes */\r
+ HB_UShort* Backtrack; /* array of backtrack classes */\r
+ HB_UShort InputGlyphCount;\r
+ /* total number of context classes */\r
+ HB_UShort* Input; /* array of context classes */\r
+ HB_UShort LookaheadGlyphCount;\r
+ /* total number of lookahead\r
+ classes */\r
+ HB_UShort* Lookahead; /* array of lookahead classes */\r
+ HB_UShort SubstCount; /* number of SubstLookupRecords */\r
+ HB_SubstLookupRecord* SubstLookupRecord;\r
+ /* array of substitution lookups */\r
+};\r
+\r
+typedef struct HB_ChainSubClassRule_ HB_ChainSubClassRule;\r
+\r
+\r
+struct HB_ChainSubClassSet_\r
+{\r
+ HB_UShort ChainSubClassRuleCount;\r
+ /* number of ChainSubClassRule\r
+ tables */\r
+ HB_ChainSubClassRule* ChainSubClassRule;\r
+ /* array of ChainSubClassRule\r
+ tables */\r
+};\r
+\r
+typedef struct HB_ChainSubClassSet_ HB_ChainSubClassSet;\r
+\r
+\r
+/* The `MaxXXXLength' fields are not defined in the TTO specification\r
+ but simplifies the implementation of this format. It holds the\r
+ maximal context length used in the specific context rules. */\r
+\r
+struct HB_ChainContextSubstFormat2_\r
+{\r
+ HB_Coverage Coverage; /* Coverage table */\r
+\r
+ HB_UShort MaxBacktrackLength;\r
+ /* maximal backtrack length */\r
+ HB_ClassDefinition BacktrackClassDef;\r
+ /* BacktrackClassDef table */\r
+ HB_UShort MaxInputLength;\r
+ /* maximal input length */\r
+ HB_ClassDefinition InputClassDef;\r
+ /* InputClassDef table */\r
+ HB_UShort MaxLookaheadLength;\r
+ /* maximal lookahead length */\r
+ HB_ClassDefinition LookaheadClassDef;\r
+ /* LookaheadClassDef table */\r
+\r
+ HB_UShort ChainSubClassSetCount;\r
+ /* number of ChainSubClassSet\r
+ tables */\r
+ HB_ChainSubClassSet* ChainSubClassSet;\r
+ /* array of ChainSubClassSet\r
+ tables */\r
+};\r
+\r
+typedef struct HB_ChainContextSubstFormat2_ HB_ChainContextSubstFormat2;\r
+\r
+\r
+struct HB_ChainContextSubstFormat3_\r
+{\r
+ HB_UShort BacktrackGlyphCount;\r
+ /* number of backtrack glyphs */\r
+ HB_Coverage* BacktrackCoverage;\r
+ /* array of backtrack Coverage\r
+ tables */\r
+ HB_UShort InputGlyphCount;\r
+ /* number of input glyphs */\r
+ HB_Coverage* InputCoverage;\r
+ /* array of input coverage\r
+ tables */\r
+ HB_UShort LookaheadGlyphCount;\r
+ /* number of lookahead glyphs */\r
+ HB_Coverage* LookaheadCoverage;\r
+ /* array of lookahead coverage\r
+ tables */\r
+ HB_UShort SubstCount; /* number of SubstLookupRecords */\r
+ HB_SubstLookupRecord* SubstLookupRecord;\r
+ /* array of substitution lookups */\r
+};\r
+\r
+typedef struct HB_ChainContextSubstFormat3_ HB_ChainContextSubstFormat3;\r
+\r
+\r
+struct HB_ChainContextSubst_\r
+{\r
+ HB_UShort SubstFormat; /* 1, 2, or 3 */\r
+\r
+ union\r
+ {\r
+ HB_ChainContextSubstFormat1 ccsf1;\r
+ HB_ChainContextSubstFormat2 ccsf2;\r
+ HB_ChainContextSubstFormat3 ccsf3;\r
+ } ccsf;\r
+};\r
+\r
+typedef struct HB_ChainContextSubst_ HB_ChainContextSubst;\r
+\r
+\r
+#if 0\r
+/* LookupType 7 */\r
+struct HB_ExtensionSubst_\r
+{\r
+ HB_UShort SubstFormat; /* always 1 */\r
+ HB_UShort LookuptType; /* lookup-type of referenced subtable */\r
+ HB_GSUB_SubTable *subtable; /* referenced subtable */\r
+};\r
+\r
+typedef struct HB_ExtensionSubst_ HB_ExtensionSubst;\r
+#endif\r
+\r
+\r
+/* LookupType 8 */\r
+struct HB_ReverseChainContextSubst_\r
+{\r
+ HB_UShort SubstFormat; /* always 1 */\r
+ HB_Coverage Coverage; /* coverage table for input glyphs */\r
+ HB_UShort BacktrackGlyphCount; /* number of backtrack glyphs */\r
+ HB_Coverage* BacktrackCoverage; /* array of backtrack Coverage\r
+ tables */\r
+ HB_UShort LookaheadGlyphCount; /* number of lookahead glyphs */\r
+ HB_Coverage* LookaheadCoverage; /* array of lookahead Coverage\r
+ tables */\r
+ HB_UShort GlyphCount; /* number of Glyph IDs */\r
+ HB_UShort* Substitute; /* array of substitute Glyph ID */\r
+};\r
+\r
+typedef struct HB_ReverseChainContextSubst_ HB_ReverseChainContextSubst;\r
+\r
+\r
+union HB_GSUB_SubTable_\r
+{\r
+ HB_SingleSubst single;\r
+ HB_MultipleSubst multiple;\r
+ HB_AlternateSubst alternate;\r
+ HB_LigatureSubst ligature;\r
+ HB_ContextSubst context;\r
+ HB_ChainContextSubst chain;\r
+ HB_ReverseChainContextSubst reverse;\r
+};\r
+\r
+\r
+\r
+\r
+HB_INTERNAL HB_Error\r
+_HB_GSUB_Load_SubTable( HB_GSUB_SubTable* st,\r
+ HB_Stream stream,\r
+ HB_UShort lookup_type );\r
+\r
+HB_INTERNAL void\r
+_HB_GSUB_Free_SubTable( HB_GSUB_SubTable* st,\r
+ HB_UShort lookup_type );\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_GSUB_PRIVATE_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_GSUB_H\r
+#define HARFBUZZ_GSUB_H\r
+\r
+#include "harfbuzz-gdef.h"\r
+#include "harfbuzz-buffer.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+\r
+/* Lookup types for glyph substitution */\r
+\r
+#define HB_GSUB_LOOKUP_SINGLE 1\r
+#define HB_GSUB_LOOKUP_MULTIPLE 2\r
+#define HB_GSUB_LOOKUP_ALTERNATE 3\r
+#define HB_GSUB_LOOKUP_LIGATURE 4\r
+#define HB_GSUB_LOOKUP_CONTEXT 5\r
+#define HB_GSUB_LOOKUP_CHAIN 6\r
+#define HB_GSUB_LOOKUP_EXTENSION 7\r
+#define HB_GSUB_LOOKUP_REVERSE_CHAIN 8\r
+\r
+\r
+/* A pointer to a function which selects the alternate glyph. `pos' is\r
+ the position of the glyph with index `glyphID', `num_alternates'\r
+ gives the number of alternates in the `alternates' array. `data'\r
+ points to the user-defined structure specified during a call to\r
+ HB_GSUB_Register_Alternate_Function(). The function must return an\r
+ index into the `alternates' array. */\r
+\r
+typedef HB_UShort (*HB_AltFunction)(HB_UInt pos,\r
+ HB_UShort glyphID,\r
+ HB_UShort num_alternates,\r
+ HB_UShort* alternates,\r
+ void* data );\r
+\r
+\r
+struct HB_GSUBHeader_\r
+{\r
+ HB_UInt offset;\r
+\r
+ HB_16Dot16 Version;\r
+\r
+ HB_ScriptList ScriptList;\r
+ HB_FeatureList FeatureList;\r
+ HB_LookupList LookupList;\r
+\r
+ HB_GDEFHeader* gdef;\r
+\r
+ /* the next two fields are used for an alternate substitution callback\r
+ function to select the proper alternate glyph. */\r
+\r
+ HB_AltFunction altfunc;\r
+ void* data;\r
+};\r
+\r
+typedef struct HB_GSUBHeader_ HB_GSUBHeader;\r
+typedef HB_GSUBHeader* HB_GSUB;\r
+\r
+\r
+HB_Error HB_Load_GSUB_Table( HB_Stream stream,\r
+ HB_GSUBHeader** gsub,\r
+ HB_GDEFHeader* gdef,\r
+ HB_Stream gdefStream );\r
+\r
+\r
+HB_Error HB_Done_GSUB_Table( HB_GSUBHeader* gsub );\r
+\r
+\r
+HB_Error HB_GSUB_Select_Script( HB_GSUBHeader* gsub,\r
+ HB_UInt script_tag,\r
+ HB_UShort* script_index );\r
+\r
+HB_Error HB_GSUB_Select_Language( HB_GSUBHeader* gsub,\r
+ HB_UInt language_tag,\r
+ HB_UShort script_index,\r
+ HB_UShort* language_index,\r
+ HB_UShort* req_feature_index );\r
+\r
+HB_Error HB_GSUB_Select_Feature( HB_GSUBHeader* gsub,\r
+ HB_UInt feature_tag,\r
+ HB_UShort script_index,\r
+ HB_UShort language_index,\r
+ HB_UShort* feature_index );\r
+\r
+\r
+HB_Error HB_GSUB_Query_Scripts( HB_GSUBHeader* gsub,\r
+ HB_UInt** script_tag_list );\r
+\r
+HB_Error HB_GSUB_Query_Languages( HB_GSUBHeader* gsub,\r
+ HB_UShort script_index,\r
+ HB_UInt** language_tag_list );\r
+\r
+HB_Error HB_GSUB_Query_Features( HB_GSUBHeader* gsub,\r
+ HB_UShort script_index,\r
+ HB_UShort language_index,\r
+ HB_UInt** feature_tag_list );\r
+\r
+\r
+HB_Error HB_GSUB_Add_Feature( HB_GSUBHeader* gsub,\r
+ HB_UShort feature_index,\r
+ HB_UInt property );\r
+\r
+HB_Error HB_GSUB_Clear_Features( HB_GSUBHeader* gsub );\r
+\r
+\r
+HB_Error HB_GSUB_Register_Alternate_Function( HB_GSUBHeader* gsub,\r
+ HB_AltFunction altfunc,\r
+ void* data );\r
+\r
+\r
+HB_Error HB_GSUB_Apply_String( HB_GSUBHeader* gsub,\r
+ HB_Buffer buffer );\r
+\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_GSUB_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_IMPL_H\r
+#define HARFBUZZ_IMPL_H\r
+\r
+#include "harfbuzz-global.h"\r
+\r
+#include <stdlib.h>\r
+\r
+HB_BEGIN_HEADER\r
+\r
+#ifndef HB_INTERNAL\r
+# define HB_INTERNAL\r
+#endif\r
+\r
+#ifndef NULL\r
+# define NULL ((void *)0)\r
+#endif\r
+\r
+#ifndef FALSE\r
+# define FALSE 0\r
+#endif\r
+\r
+#ifndef TRUE\r
+# define TRUE 1\r
+#endif\r
+\r
+#ifndef TTAG_GDEF\r
+# define TTAG_GDEF HB_MAKE_TAG( 'G', 'D', 'E', 'F' )\r
+#endif\r
+#ifndef TTAG_GPOS\r
+# define TTAG_GPOS HB_MAKE_TAG( 'G', 'P', 'O', 'S' )\r
+#endif\r
+#ifndef TTAG_GSUB\r
+# define TTAG_GSUB HB_MAKE_TAG( 'G', 'S', 'U', 'B' )\r
+#endif\r
+\r
+#ifndef HB_UNUSED\r
+# define HB_UNUSED(arg) ((arg) = (arg))\r
+#endif\r
+\r
+#define HB_LIKELY(cond) (cond)\r
+#define HB_UNLIKELY(cond) (cond)\r
+\r
+#define ARRAY_LEN(Array) ((int)(sizeof (Array) / sizeof (Array)[0]))\r
+\r
+\r
+\r
+#define HB_IsHighSurrogate(ucs) \\r
+ (((ucs) & 0xfc00) == 0xd800)\r
+\r
+#define HB_IsLowSurrogate(ucs) \\r
+ (((ucs) & 0xfc00) == 0xdc00)\r
+\r
+#define HB_SurrogateToUcs4(high, low) \\r
+ (((HB_UChar32)(high))<<10) + (low) - 0x35fdc00;\r
+\r
+\r
+\r
+\r
+\r
+#define ALLOC(_ptr,_size,_type) \\r
+ ( (_ptr) = (_type)_hb_alloc( _size, &error ), error != 0 )\r
+\r
+#define REALLOC(_ptr,_newsz,_type) \\r
+ ( (_ptr) = (_type)_hb_realloc( (_ptr), (_newsz), &error ), error != 0 )\r
+\r
+#define FREE(_ptr) \\r
+ do { \\r
+ if ( (_ptr) ) \\r
+ { \\r
+ _hb_free( _ptr ); \\r
+ _ptr = NULL; \\r
+ } \\r
+ } while (0)\r
+\r
+#define ALLOC_ARRAY(_ptr,_count,_type) \\r
+ ALLOC(_ptr,(_count)*sizeof(_type),_type*)\r
+\r
+#define REALLOC_ARRAY(_ptr,_newcnt,_type) \\r
+ REALLOC(_ptr,(_newcnt)*sizeof(_type),_type*)\r
+\r
+#define MEM_Copy(dest,source,count) memcpy( (char*)(dest), (const char*)(source), (size_t)(count) )\r
+\r
+#define ERR_HB(err) _hb_err (err)\r
+\r
+\r
+//HB_INTERNAL\r
+HB_Pointer\r
+_hb_alloc( size_t size,\r
+ HB_Error *perror_ );\r
+\r
+//HB_INTERNAL\r
+ HB_Pointer\r
+_hb_realloc( HB_Pointer block,\r
+ size_t new_size,\r
+ HB_Error *perror_ );\r
+\r
+//HB_INTERNAL \r
+ void\r
+_hb_free( HB_Pointer block );\r
+\r
+\r
+/* helper func to set a breakpoint on */\r
+//HB_INTERNAL \r
+HB_Error\r
+_hb_err(HB_Error code);\r
+\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_IMPL_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_OPEN_PRIVATE_H\r
+#define HARFBUZZ_OPEN_PRIVATE_H\r
+\r
+#include "harfbuzz-impl.h"\r
+#include "harfbuzz-open.h"\r
+#include "harfbuzz-gsub-private.h"\r
+#include "harfbuzz-gpos-private.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+\r
+struct HB_SubTable_\r
+{\r
+ union\r
+ {\r
+ HB_GSUB_SubTable gsub;\r
+ HB_GPOS_SubTable gpos;\r
+ } st;\r
+};\r
+\r
+\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Load_ScriptList( HB_ScriptList* sl,\r
+ HB_Stream input );\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Load_FeatureList( HB_FeatureList* fl,\r
+ HB_Stream input );\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Load_LookupList( HB_LookupList* ll,\r
+ HB_Stream input,\r
+ HB_Type type );\r
+\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Load_Coverage( HB_Coverage* c,\r
+ HB_Stream input );\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Load_ClassDefinition( HB_ClassDefinition* cd,\r
+ HB_UShort limit,\r
+ HB_Stream input );\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Load_EmptyOrClassDefinition( HB_ClassDefinition* cd,\r
+ HB_UShort limit,\r
+ HB_UInt class_offset,\r
+ HB_UInt base_offset,\r
+ HB_Stream input );\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Load_Device( HB_Device* d,\r
+ HB_Stream input );\r
+\r
+HB_INTERNAL void _HB_OPEN_Free_ScriptList( HB_ScriptList* sl );\r
+HB_INTERNAL void _HB_OPEN_Free_FeatureList( HB_FeatureList* fl );\r
+HB_INTERNAL void _HB_OPEN_Free_LookupList( HB_LookupList* ll,\r
+ HB_Type type );\r
+\r
+HB_INTERNAL void _HB_OPEN_Free_Coverage( HB_Coverage* c );\r
+HB_INTERNAL void _HB_OPEN_Free_ClassDefinition( HB_ClassDefinition* cd );\r
+HB_INTERNAL void _HB_OPEN_Free_Device( HB_Device* d );\r
+\r
+\r
+\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Coverage_Index( HB_Coverage* c,\r
+ HB_UShort glyphID,\r
+ HB_UShort* index );\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Get_Class( HB_ClassDefinition* cd,\r
+ HB_UShort glyphID,\r
+ HB_UShort* klass,\r
+ HB_UShort* index );\r
+HB_INTERNAL HB_Error\r
+_HB_OPEN_Get_Device( HB_Device* d,\r
+ HB_UShort size,\r
+ HB_Short* value );\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_OPEN_PRIVATE_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_OPEN_H\r
+#define HARFBUZZ_OPEN_H\r
+\r
+#include "harfbuzz-global.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+/* Use this if a feature applies to all glyphs */\r
+#define HB_ALL_GLYPHS 0xFFFF\r
+\r
+#define HB_DEFAULT_LANGUAGE 0xFFFF\r
+\r
+#define HB_MAX_NESTING_LEVEL 100\r
+\r
+\r
+/* Script list related structures */\r
+\r
+struct HB_LangSys_\r
+{\r
+ HB_UShort LookupOrderOffset; /* always 0 for TT Open 1.0 */\r
+ HB_UShort ReqFeatureIndex; /* required FeatureIndex */\r
+ HB_UShort FeatureCount; /* number of Feature indices */\r
+ HB_UShort* FeatureIndex; /* array of Feature indices */\r
+};\r
+\r
+typedef struct HB_LangSys_ HB_LangSys;\r
+\r
+\r
+struct HB_LangSysRecord_\r
+{\r
+ HB_UInt LangSysTag; /* LangSysTag identifier */\r
+ HB_LangSys LangSys; /* LangSys table */\r
+};\r
+\r
+typedef struct HB_LangSysRecord_ HB_LangSysRecord;\r
+\r
+\r
+struct HB_ScriptTable_\r
+{\r
+ HB_LangSys DefaultLangSys; /* DefaultLangSys table */\r
+ HB_UShort LangSysCount; /* number of LangSysRecords */\r
+ HB_LangSysRecord* LangSysRecord; /* array of LangSysRecords */\r
+};\r
+\r
+typedef struct HB_ScriptTable_ HB_ScriptTable;\r
+\r
+\r
+struct HB_ScriptRecord_\r
+{\r
+ HB_UInt ScriptTag; /* ScriptTag identifier */\r
+ HB_ScriptTable Script; /* Script table */\r
+};\r
+\r
+typedef struct HB_ScriptRecord_ HB_ScriptRecord;\r
+\r
+\r
+struct HB_ScriptList_\r
+{\r
+ HB_UShort ScriptCount; /* number of ScriptRecords */\r
+ HB_ScriptRecord* ScriptRecord; /* array of ScriptRecords */\r
+};\r
+\r
+typedef struct HB_ScriptList_ HB_ScriptList;\r
+\r
+\r
+/* Feature list related structures */\r
+\r
+struct HB_Feature_\r
+{\r
+ HB_UShort FeatureParams; /* always 0 for TT Open 1.0 */\r
+ HB_UShort LookupListCount; /* number of LookupList indices */\r
+ HB_UShort* LookupListIndex; /* array of LookupList indices */\r
+};\r
+\r
+typedef struct HB_Feature_ HB_Feature;\r
+\r
+\r
+struct HB_FeatureRecord_\r
+{\r
+ HB_UInt FeatureTag; /* FeatureTag identifier */\r
+ HB_Feature Feature; /* Feature table */\r
+};\r
+\r
+typedef struct HB_FeatureRecord_ HB_FeatureRecord;\r
+\r
+\r
+struct HB_FeatureList_\r
+{\r
+ HB_UShort FeatureCount; /* number of FeatureRecords */\r
+ HB_FeatureRecord* FeatureRecord; /* array of FeatureRecords */\r
+ HB_UShort* ApplyOrder; /* order to apply features */\r
+ HB_UShort ApplyCount; /* number of elements in ApplyOrder */\r
+};\r
+\r
+typedef struct HB_FeatureList_ HB_FeatureList;\r
+\r
+\r
+/* Lookup list related structures */\r
+\r
+typedef struct HB_SubTable_ HB_SubTable;\r
+\r
+\r
+struct HB_Lookup_\r
+{\r
+ HB_UShort LookupType; /* Lookup type */\r
+ HB_UShort LookupFlag; /* Lookup qualifiers */\r
+ HB_UShort SubTableCount; /* number of SubTables */\r
+ HB_SubTable* SubTable; /* array of SubTables */\r
+};\r
+\r
+typedef struct HB_Lookup_ HB_Lookup;\r
+\r
+\r
+/* The `Properties' field is not defined in the OpenType specification but\r
+ is needed for processing lookups. If properties[n] is > 0, the\r
+ functions HB_GSUB_Apply_String() resp. HB_GPOS_Apply_String() will\r
+ process Lookup[n] for glyphs which have the specific bit not set in\r
+ the `properties' field of the input string object. */\r
+\r
+struct HB_LookupList_\r
+{\r
+ HB_UShort LookupCount; /* number of Lookups */\r
+ HB_Lookup* Lookup; /* array of Lookup records */\r
+ HB_UInt* Properties; /* array of flags */\r
+};\r
+\r
+typedef struct HB_LookupList_ HB_LookupList;\r
+\r
+\r
+/* Possible LookupFlag bit masks. `HB_LOOKUP_FLAG_IGNORE_SPECIAL_MARKS' comes from the\r
+ OpenType 1.2 specification; HB_LOOKUP_FLAG_RIGHT_TO_LEFT has been (re)introduced in\r
+ OpenType 1.3 -- if set, the last glyph in a cursive attachment\r
+ sequence has to be positioned on the baseline -- regardless of the\r
+ writing direction. */\r
+\r
+#define HB_LOOKUP_FLAG_RIGHT_TO_LEFT 0x0001\r
+#define HB_LOOKUP_FLAG_IGNORE_BASE_GLYPHS 0x0002\r
+#define HB_LOOKUP_FLAG_IGNORE_LIGATURES 0x0004\r
+#define HB_LOOKUP_FLAG_IGNORE_MARKS 0x0008\r
+#define HB_LOOKUP_FLAG_IGNORE_SPECIAL_MARKS 0xFF00\r
+\r
+\r
+struct HB_CoverageFormat1_\r
+{\r
+ HB_UShort GlyphCount; /* number of glyphs in GlyphArray */\r
+ HB_UShort* GlyphArray; /* array of glyph IDs */\r
+};\r
+\r
+typedef struct HB_CoverageFormat1_ HB_CoverageFormat1;\r
+\r
+\r
+struct HB_RangeRecord_\r
+{\r
+ HB_UShort Start; /* first glyph ID in the range */\r
+ HB_UShort End; /* last glyph ID in the range */\r
+ HB_UShort StartCoverageIndex; /* coverage index of first\r
+ glyph ID in the range */\r
+};\r
+\r
+typedef struct HB_RangeRecord_ HB_RangeRecord;\r
+\r
+\r
+struct HB_CoverageFormat2_\r
+{\r
+ HB_UShort RangeCount; /* number of RangeRecords */\r
+ HB_RangeRecord* RangeRecord; /* array of RangeRecords */\r
+};\r
+\r
+typedef struct HB_CoverageFormat2_ HB_CoverageFormat2;\r
+\r
+\r
+struct HB_Coverage_\r
+{\r
+ HB_UShort CoverageFormat; /* 1 or 2 */\r
+\r
+ union\r
+ {\r
+ HB_CoverageFormat1 cf1;\r
+ HB_CoverageFormat2 cf2;\r
+ } cf;\r
+};\r
+\r
+typedef struct HB_Coverage_ HB_Coverage;\r
+\r
+\r
+struct HB_ClassDefFormat1_\r
+{\r
+ HB_UShort StartGlyph; /* first glyph ID of the\r
+ ClassValueArray */\r
+ HB_UShort GlyphCount; /* size of the ClassValueArray */\r
+ HB_UShort* ClassValueArray; /* array of class values */\r
+};\r
+\r
+typedef struct HB_ClassDefFormat1_ HB_ClassDefFormat1;\r
+\r
+\r
+struct HB_ClassRangeRecord_\r
+{\r
+ HB_UShort Start; /* first glyph ID in the range */\r
+ HB_UShort End; /* last glyph ID in the range */\r
+ HB_UShort Class; /* applied to all glyphs in range */\r
+};\r
+\r
+typedef struct HB_ClassRangeRecord_ HB_ClassRangeRecord;\r
+\r
+\r
+struct HB_ClassDefFormat2_\r
+{\r
+ HB_UShort ClassRangeCount;\r
+ /* number of ClassRangeRecords */\r
+ HB_ClassRangeRecord* ClassRangeRecord;\r
+ /* array of ClassRangeRecords */\r
+};\r
+\r
+typedef struct HB_ClassDefFormat2_ HB_ClassDefFormat2;\r
+\r
+\r
+struct HB_ClassDefinition_\r
+{\r
+ HB_Bool loaded;\r
+\r
+ HB_UShort ClassFormat; /* 1 or 2 */\r
+\r
+ union\r
+ {\r
+ HB_ClassDefFormat1 cd1;\r
+ HB_ClassDefFormat2 cd2;\r
+ } cd;\r
+};\r
+\r
+typedef struct HB_ClassDefinition_ HB_ClassDefinition;\r
+\r
+\r
+struct HB_Device_\r
+{\r
+ HB_UShort StartSize; /* smallest size to correct */\r
+ HB_UShort EndSize; /* largest size to correct */\r
+ HB_UShort DeltaFormat; /* DeltaValue array data format:\r
+ 1, 2, or 3 */\r
+ HB_UShort* DeltaValue; /* array of compressed data */\r
+};\r
+\r
+typedef struct HB_Device_ HB_Device;\r
+\r
+\r
+enum HB_Type_\r
+{\r
+ HB_Type_GSUB,\r
+ HB_Type_GPOS\r
+};\r
+\r
+typedef enum HB_Type_ HB_Type;\r
+\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_OPEN_H */\r
--- /dev/null
+/*\r
+ * Copyright (C) 2006 Red Hat, Inc.\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ *\r
+ * Red Hat Author(s): Owen Taylor\r
+ */\r
+\r
+#include <stdint.h>\r
+\r
+/* Base Types */\r
+\r
+typedef hb_uint16 HB_CodePoint; /* UTF-16 codepoint (not character ) */\r
+typedef char HB_Boolean;\r
+typedef hb_uint32 HB_Fixed; /* 26.6 */\r
+typedef hb_uint32 HB_Glyph;\r
+typedef hb_uint32 HB_Unichar;\r
+\r
+/* Metrics reported by the font backend for use of the shaper */\r
+typedef struct _HB_GlyphMetrics HB_GlyphMetrics;\r
+struct _HB_GlyphMetrics\r
+{\r
+ HB_Fixed advance;\r
+ \r
+ /* Do we need ink/logical extents for the glyph here? */\r
+};\r
+\r
+/*\r
+ * HB_Font: Abstract font interface.\r
+ * First pass of this might just have FT_Face *getFace();\r
+ */\r
+typedef struct _HB_Font HB_Font;\r
+typedef struct _HB_FontClass HB_FontClass;\r
+\r
+struct HB_FontClass {\r
+ HB_Glyph (*charToGlyph)(HB_Font *font, HB_Unichar chr);\r
+ void (*getMetrics)(HB_Font *font, HB_Glyph glyph, HB_GlyphMetrics *metrics);\r
+ HB_Boolean (*getSFontTable)(HB_Font *font, void **cookie, char **start, int *len);\r
+ HB_Boolean (*freeSFontTable)(void **cookie);\r
+};\r
+\r
+struct _HB_Font {\r
+ HB_FontClass *clazz;\r
+};\r
+\r
+/*\r
+ * Language tags, of the form en-us; represented as interned, canonicalized\r
+ * strings. hb_language_from_string("en_US"), hb_language_from_string("en-us")\r
+ * both return the same (pointer-comparable) HB_Language).\r
+ */\r
+typedef struct HB_Language_ *HB_Language;\r
+\r
+HB_Language hb_language_from_string(const char *str);\r
+const char *hb_language_to_string(HB_Language language);\r
+\r
+/* Special treatment for the edges of runs.\r
+ */\r
+typedef enum {\r
+ HB_RUN_EDGE_LINE_VISUAL_EDGE = 1 << 0,\r
+ HB_RUN_EDGE_LINE_LOGICAL_EDGE = 1 << 1,\r
+ HB_RUN_EDGE_LINE_ADD_HYPHEN = 1 << 2 /* ???? */\r
+} HB_RunEdge;\r
+\r
+/* Defines optional informaiton in HB_ShapeInput; this allows extension\r
+ * of HB_ShapeInput while keeping binary compatibility\r
+ */\r
+typedef enum {\r
+ HB_SHAPE_START_TYPE = 1 << 0,\r
+ HB_SHAPE_END_TYPE = 1 << 1\r
+} HB_ShapeFlags;\r
+\r
+/* Attributes types are described by "interned strings"; this is a little\r
+ * annoying if you want to write a switch statement, but keeps things\r
+ * simple.\r
+ */\r
+typedef struct _HB_AttributeType *HB_AttributeType;\r
+\r
+HB_AttributeType hb_attribute_type_from_string(const char *str);\r
+const char *hb_attribute_type_to_string(HB_AttributeType attribute_type);\r
+\r
+struct HB_Attribute {\r
+ HB_AttributeType type;\r
+ int start; \r
+ int end;\r
+};\r
+\r
+\r
+/**\r
+ * You could handle this like HB_Language, but an enum seems a little nicer;\r
+ * another approach would be to use OpenType script tags.\r
+ */\r
+typedef enum {\r
+ HB_SCRIPT_LATIN\r
+ /* ... */\r
+} HB_ShapeScript;\r
+\r
+/* This is just the subset of direction information needed by the shaper */\r
+typedef enum {\r
+ HB_DIRECTION_LTR,\r
+ HB_DIRECTION_RTL,\r
+ HB_DIRECTION_TTB\r
+} HB_Direction;\r
+\r
+typedef struct _HB_ShapeInput HB_ShapeInput;\r
+struct _HB_ShapeInput {\r
+ /* Defines what fields the caller has initialized - fields not in\r
+ * the enum are mandatory.\r
+ */\r
+ HB_ShapeFlags flags;\r
+ \r
+ HB_CodePoint *text;\r
+ int length; /* total length of text to shape */\r
+ int shape_offset; /* start of section to shape */\r
+ int shape_length; /* number of code points to shape */\r
+\r
+ HB_Direction direction;\r
+ HB_ShapeScript script;\r
+ HB_Language language;\r
+\r
+ HB_AttributeType *attributes;\r
+ int n_attributes;\r
+\r
+ HB_RunEdge start_type;\r
+ HB_RunEdge end_type;\r
+};\r
+\r
+struct HB_GlyphItem {\r
+ HB_Glyph glyph;\r
+ \r
+ HB_Fixed x_offset;\r
+ HB_Fixed y_offset;\r
+ HB_Fixed advance;\r
+\r
+ /* Add kashida information, etc, here */\r
+};\r
+\r
+typedef enum {\r
+ HB_RESULT_SUCCESS,\r
+ HB_RESULT_NO_MEMORY,\r
+ HB_SHAPE_RESULT_FAILED\r
+} HB_Result;\r
+\r
+/*\r
+ * Buffer for output \r
+ */\r
+typedef struct _HB_GlyphBuffer HB_GlyphBuffer;\r
+struct _HB_GlyphBuffer {\r
+ int glyph_item_size;\r
+ int total_glyphs;\r
+ \r
+ int *log_clusters; /* Uniscribe style */\r
+ int cluster_space;\r
+ \r
+ int glyph_space;\r
+ void *glyph_buffer;\r
+};\r
+\r
+/* Making this self-allocating simplifies writing shapers and\r
+ * also keeps things easier for caller. item_size passed in\r
+ * must be at least sizeof(HB_GlyphItem) but can be bigger,\r
+ * to accomodate application structures that extend HB_GlyphItem.\r
+ * The allocated items will be zero-initialized.\r
+ *\r
+ * (Hack: Harfbuzz could choose to use even a *bigger* item size\r
+ * and stick internal information before the public item structure.\r
+ * This hack could possibly be used to unify this with HB_Buffer)\r
+ */\r
+HB_GlyphBuffer *hb_glyph_buffer_new (size_t item_size);\r
+void hb_glyph_buffer_clear (HB_GlyphBuffer *buf);\r
+HB_Result hb_glyph_buffer_extend_glyphs (HB_GlyphBuffer *buf, int n_items);\r
+HB_Result hb_glyph_buffer_extend_clusters (HB_GlyphBuffer *buf, int n_clusters);\r
+void hb_glyph_buffer_free (HB_GlyphBuffer *buf);\r
+\r
+\r
+/* Accessor for a particular glyph */\r
+#define HB_GLYPH_BUFFER_ITEM(buffer, index)\r
+\r
+/*\r
+ * Main shaping function\r
+ */\r
+HB_Result hb_shape(HB_ShapeInput *input, HB_GlyphBuffer *output);\r
--- /dev/null
+/*\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_SHAPER_PRIVATE_H\r
+#define HARFBUZZ_SHAPER_PRIVATE_H\r
+\r
+HB_BEGIN_HEADER\r
+enum {\r
+ C_DOTTED_CIRCLE = 0x25CC\r
+};\r
+\r
+typedef enum \r
+{\r
+ HB_Combining_BelowLeftAttached = 200,\r
+ HB_Combining_BelowAttached = 202,\r
+ HB_Combining_BelowRightAttached = 204,\r
+ HB_Combining_LeftAttached = 208,\r
+ HB_Combining_RightAttached = 210,\r
+ HB_Combining_AboveLeftAttached = 212,\r
+ HB_Combining_AboveAttached = 214,\r
+ HB_Combining_AboveRightAttached = 216,\r
+\r
+ HB_Combining_BelowLeft = 218,\r
+ HB_Combining_Below = 220,\r
+ HB_Combining_BelowRight = 222,\r
+ HB_Combining_Left = 224,\r
+ HB_Combining_Right = 226,\r
+ HB_Combining_AboveLeft = 228,\r
+ HB_Combining_Above = 230,\r
+ HB_Combining_AboveRight = 232,\r
+\r
+ HB_Combining_DoubleBelow = 233,\r
+ HB_Combining_DoubleAbove = 234,\r
+ HB_Combining_IotaSubscript = 240\r
+} HB_CombiningClass;\r
+\r
+typedef enum {\r
+ CcmpProperty = 0x1,\r
+ InitProperty = 0x2,\r
+ IsolProperty = 0x4,\r
+ FinaProperty = 0x8,\r
+ MediProperty = 0x10,\r
+ RligProperty = 0x20,\r
+ CaltProperty = 0x40,\r
+ LigaProperty = 0x80,\r
+ DligProperty = 0x100,\r
+ CswhProperty = 0x200,\r
+ MsetProperty = 0x400,\r
+\r
+ /* used by indic and myanmar shaper */\r
+ NuktaProperty = 0x4,\r
+ AkhantProperty = 0x8,\r
+ RephProperty = 0x10,\r
+ PreFormProperty = 0x20,\r
+ BelowFormProperty = 0x40,\r
+ AboveFormProperty = 0x80,\r
+ HalfFormProperty = 0x100,\r
+ PostFormProperty = 0x200,\r
+ VattuProperty = 0x400,\r
+ PreSubstProperty = 0x800,\r
+ BelowSubstProperty = 0x1000,\r
+ AboveSubstProperty = 0x2000,\r
+ PostSubstProperty = 0x4000,\r
+ HalantProperty = 0x8000,\r
+ CligProperty = 0x10000\r
+\r
+} HB_OpenTypeProperty;\r
+\r
+/* return true if ok. */\r
+typedef HB_Bool (*HB_ShapeFunction)(HB_ShaperItem *shaper_item);\r
+typedef void (*HB_AttributeFunction)(HB_Script script, const HB_UChar16 *string, hb_uint32 from, hb_uint32 len, HB_CharAttributes *attributes);\r
+\r
+typedef struct {\r
+ HB_ShapeFunction shape;\r
+ HB_AttributeFunction charAttributes;\r
+} HB_ScriptEngine;\r
+\r
+extern const HB_ScriptEngine HB_ScriptEngines[];\r
+\r
+extern HB_Bool HB_BasicShape(HB_ShaperItem *shaper_item);\r
+extern HB_Bool HB_TibetanShape(HB_ShaperItem *shaper_item);\r
+extern HB_Bool HB_HebrewShape(HB_ShaperItem *shaper_item);\r
+extern HB_Bool HB_ArabicShape(HB_ShaperItem *shaper_item);\r
+extern HB_Bool HB_HangulShape(HB_ShaperItem *shaper_item);\r
+extern HB_Bool HB_MyanmarShape(HB_ShaperItem *shaper_item);\r
+extern HB_Bool HB_KhmerShape(HB_ShaperItem *shaper_item);\r
+extern HB_Bool HB_IndicShape(HB_ShaperItem *shaper_item);\r
+\r
+extern void HB_TibetanAttributes(HB_Script script, const HB_UChar16 *string, hb_uint32 from, hb_uint32 len, HB_CharAttributes *attributes);\r
+\r
+extern void HB_MyanmarAttributes(HB_Script script, const HB_UChar16 *string, hb_uint32 from, hb_uint32 len, HB_CharAttributes *attributes);\r
+\r
+extern void HB_KhmerAttributes(HB_Script script, const HB_UChar16 *string, hb_uint32 from, hb_uint32 len, HB_CharAttributes *attributes);\r
+\r
+extern void HB_IndicAttributes(HB_Script script, const HB_UChar16 *string, hb_uint32 from, hb_uint32 len, HB_CharAttributes *attributes);\r
+\r
+extern void HB_ThaiAttributes(HB_Script script, const HB_UChar16 *string, hb_uint32 from, hb_uint32 len, HB_CharAttributes *attributes);\r
+\r
+typedef struct {\r
+ hb_uint32 tag;\r
+ hb_uint32 property;\r
+} HB_OpenTypeFeature;\r
+\r
+#define PositioningProperties 0x80000000\r
+\r
+HB_Bool HB_SelectScript(HB_ShaperItem *item, const HB_OpenTypeFeature *features);\r
+\r
+HB_Bool HB_OpenTypeShape(HB_ShaperItem *item, const hb_uint32 *properties);\r
+HB_Bool HB_OpenTypePosition(HB_ShaperItem *item, int availableGlyphs, HB_Bool doLogClusters);\r
+\r
+void HB_HeuristicPosition(HB_ShaperItem *item);\r
+void HB_HeuristicSetGlyphAttributes(HB_ShaperItem *item);\r
+\r
+#define HB_IsControlChar(uc) \\r
+ ((uc >= 0x200b && uc <= 0x200f /* ZW Space, ZWNJ, ZWJ, LRM and RLM */) \\r
+ || (uc >= 0x2028 && uc <= 0x202f /* LS, PS, LRE, RLE, PDF, LRO, RLO, NNBSP */) \\r
+ || (uc >= 0x206a && uc <= 0x206f /* ISS, ASS, IAFS, AFS, NADS, NODS */))\r
+\r
+HB_Bool HB_ConvertStringToGlyphIndices(HB_ShaperItem *shaper_item);\r
+\r
+#define HB_GetGlyphAdvances(shaper_item) \\r
+ shaper_item->font->klass->getGlyphAdvances(shaper_item->font, \\r
+ shaper_item->glyphs, shaper_item->num_glyphs, \\r
+ shaper_item->advances, \\r
+ shaper_item->face->current_flags);\r
+\r
+#define HB_DECLARE_STACKARRAY(Type, Name) \\r
+ Type stack##Name[64]; \ \r
+ Type *Name = stack##Name;\r
+\r
+#define HB_INIT_STACKARRAY(Type, Name, Length) \\r
+ if ((Length) >= 64) \\r
+ Name = (Type *)malloc((Length) * sizeof(Type));\r
+\r
+#define HB_STACKARRAY(Type, Name, Length) \\r
+ HB_DECLARE_STACKARRAY(Type, Name) \\r
+ HB_INIT_STACKARRAY(Type, Name, Length)\r
+\r
+#define HB_FREE_STACKARRAY(Name) \\r
+ if (stack##Name != Name) \\r
+ free(Name);\r
+\r
+HB_END_HEADER\r
+\r
+#endif\r
--- /dev/null
+/*\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_SHAPER_H\r
+#define HARFBUZZ_SHAPER_H\r
+\r
+#include "harfbuzz-global.h"\r
+#include "harfbuzz-gdef.h"\r
+#include "harfbuzz-gpos.h"\r
+#include "harfbuzz-gsub.h"\r
+#include "harfbuzz-external.h" \r
+#include "harfbuzz-stream-private.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+typedef enum {\r
+ HB_Script_Common,\r
+ HB_Script_Greek,\r
+ HB_Script_Cyrillic,\r
+ HB_Script_Armenian,\r
+ HB_Script_Hebrew,\r
+ HB_Script_Arabic,\r
+ HB_Script_Syriac,\r
+ HB_Script_Thaana,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Bengali,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Oriya,\r
+ HB_Script_Tamil,\r
+ HB_Script_Telugu,\r
+ HB_Script_Kannada,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Thai,\r
+ HB_Script_Lao,\r
+ HB_Script_Tibetan,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Georgian,\r
+ HB_Script_Hangul,\r
+ HB_Script_Ogham,\r
+ HB_Script_Runic,\r
+ HB_Script_Khmer,\r
+ HB_Script_Nko,\r
+ HB_Script_Inherited,\r
+ HB_ScriptCount = HB_Script_Inherited\r
+ /*\r
+ HB_Script_Latin = Common,\r
+ HB_Script_Ethiopic = Common,\r
+ HB_Script_Cherokee = Common,\r
+ HB_Script_CanadianAboriginal = Common,\r
+ HB_Script_Mongolian = Common,\r
+ HB_Script_Hiragana = Common,\r
+ HB_Script_Katakana = Common,\r
+ HB_Script_Bopomofo = Common,\r
+ HB_Script_Han = Common,\r
+ HB_Script_Yi = Common,\r
+ HB_Script_OldItalic = Common,\r
+ HB_Script_Gothic = Common,\r
+ HB_Script_Deseret = Common,\r
+ HB_Script_Tagalog = Common,\r
+ HB_Script_Hanunoo = Common,\r
+ HB_Script_Buhid = Common,\r
+ HB_Script_Tagbanwa = Common,\r
+ HB_Script_Limbu = Common,\r
+ HB_Script_TaiLe = Common,\r
+ HB_Script_LinearB = Common,\r
+ HB_Script_Ugaritic = Common,\r
+ HB_Script_Shavian = Common,\r
+ HB_Script_Osmanya = Common,\r
+ HB_Script_Cypriot = Common,\r
+ HB_Script_Braille = Common,\r
+ HB_Script_Buginese = Common,\r
+ HB_Script_Coptic = Common,\r
+ HB_Script_NewTaiLue = Common,\r
+ HB_Script_Glagolitic = Common,\r
+ HB_Script_Tifinagh = Common,\r
+ HB_Script_SylotiNagri = Common,\r
+ HB_Script_OldPersian = Common,\r
+ HB_Script_Kharoshthi = Common,\r
+ HB_Script_Balinese = Common,\r
+ HB_Script_Cuneiform = Common,\r
+ HB_Script_Phoenician = Common,\r
+ HB_Script_PhagsPa = Common,\r
+ */\r
+} HB_Script;\r
+\r
+typedef struct\r
+{\r
+ hb_uint32 pos;\r
+ hb_uint32 length;\r
+ HB_Script script;\r
+ hb_uint8 bidiLevel;\r
+} HB_ScriptItem;\r
+\r
+typedef enum {\r
+ HB_NoBreak,\r
+ HB_SoftHyphen,\r
+ HB_Break,\r
+ HB_ForcedBreak\r
+} HB_LineBreakType;\r
+\r
+\r
+typedef struct {\r
+ /*HB_LineBreakType*/ unsigned lineBreakType :2;\r
+ /*HB_Bool*/ unsigned whiteSpace :1; /* A unicode whitespace character, except NBSP, ZWNBSP */\r
+ /*HB_Bool*/ unsigned charStop :1; /* Valid cursor position (for left/right arrow) */\r
+ /*HB_Bool*/ unsigned wordBoundary :1;\r
+ /*HB_Bool*/ unsigned sentenceBoundary :1;\r
+ unsigned unused :2;\r
+} HB_CharAttributes;\r
+\r
+void HB_GetCharAttributes(const HB_UChar16 *string, hb_uint32 stringLength,\r
+ const HB_ScriptItem *items, hb_uint32 numItems,\r
+ HB_CharAttributes *attributes);\r
+\r
+/* requires HB_GetCharAttributes to be called before */\r
+void HB_GetWordBoundaries(const HB_UChar16 *string, hb_uint32 stringLength,\r
+ const HB_ScriptItem *items, hb_uint32 numItems,\r
+ HB_CharAttributes *attributes);\r
+\r
+/* requires HB_GetCharAttributes to be called before */\r
+void HB_GetSentenceBoundaries(const HB_UChar16 *string, hb_uint32 stringLength,\r
+ const HB_ScriptItem *items, hb_uint32 numItems,\r
+ HB_CharAttributes *attributes);\r
+\r
+\r
+typedef enum {\r
+ HB_LeftToRight = 0,\r
+ HB_RightToLeft = 1\r
+} HB_StringToGlyphsFlags;\r
+\r
+typedef enum {\r
+ HB_ShaperFlag_Default = 0,\r
+ HB_ShaperFlag_NoKerning = 1,\r
+ HB_ShaperFlag_UseDesignMetrics = 2\r
+} HB_ShaperFlag;\r
+\r
+/* \r
+ highest value means highest priority for justification. Justification is done by first inserting kashidas\r
+ starting with the highest priority positions, then stretching spaces, afterwards extending inter char\r
+ spacing, and last spacing between arabic words.\r
+ NoJustification is for example set for arabic where no Kashida can be inserted or for diacritics.\r
+*/\r
+typedef enum {\r
+ HB_NoJustification= 0, /* Justification can't be applied after this glyph */\r
+ HB_Arabic_Space = 1, /* This glyph represents a space inside arabic text */\r
+ HB_Character = 2, /* Inter-character justification point follows this glyph */\r
+ HB_Space = 4, /* This glyph represents a blank outside an Arabic run */\r
+ HB_Arabic_Normal = 7, /* Normal Middle-Of-Word glyph that connects to the right (begin) */\r
+ HB_Arabic_Waw = 8, /* Next character is final form of Waw/Ain/Qaf/Fa */\r
+ HB_Arabic_BaRa = 9, /* Next two chars are Ba + Ra/Ya/AlefMaksura */\r
+ HB_Arabic_Alef = 10, /* Next character is final form of Alef/Tah/Lam/Kaf/Gaf */\r
+ HB_Arabic_HaaDal = 11, /* Next character is final form of Haa/Dal/Taa Marbutah */\r
+ HB_Arabic_Seen = 12, /* Initial or Medial form Of Seen/Sad */\r
+ HB_Arabic_Kashida = 13 /* Kashida(U+640) in middle of word */\r
+} HB_JustificationClass;\r
+\r
+/* This structure is binary compatible with Uniscribe's SCRIPT_VISATTR. Would be nice to keep\r
+ * it like that. If this is a problem please tell Trolltech :)\r
+ */\r
+typedef struct {\r
+ unsigned justification :4; /* Justification class */\r
+ unsigned clusterStart :1; /* First glyph of representation of cluster */\r
+ unsigned mark :1; /* needs to be positioned around base char */\r
+ unsigned zeroWidth :1; /* ZWJ, ZWNJ etc, with no width */\r
+ unsigned dontPrint :1;\r
+ unsigned combiningClass :8;\r
+} HB_GlyphAttributes;\r
+\r
+typedef struct HB_FaceRec_ {\r
+ HB_Bool isSymbolFont;\r
+\r
+ HB_GDEF gdef;\r
+ HB_GSUB gsub;\r
+ HB_GPOS gpos;\r
+ HB_Bool supported_scripts[HB_ScriptCount];\r
+ HB_Buffer buffer;\r
+ HB_Script current_script;\r
+ int current_flags; /* HB_ShaperFlags */\r
+ HB_Bool has_opentype_kerning;\r
+ HB_Bool glyphs_substituted;\r
+ HB_GlyphAttributes *tmpAttributes;\r
+ unsigned int *tmpLogClusters;\r
+ int length;\r
+ int orig_nglyphs;\r
+} HB_FaceRec;\r
+\r
+typedef HB_Error (*HB_GetFontTableFunc)(void *font, HB_Tag tag, HB_Byte *buffer, HB_UInt *length);\r
+\r
+HB_Face HB_NewFace(void *font, HB_GetFontTableFunc tableFunc);\r
+void HB_FreeFace(HB_Face face);\r
+\r
+typedef struct {\r
+ HB_Fixed x, y;\r
+ HB_Fixed width, height;\r
+ HB_Fixed xOffset, yOffset;\r
+} HB_GlyphMetrics;\r
+\r
+typedef enum {\r
+ HB_FontAscent\r
+} HB_FontMetric;\r
+\r
+typedef struct {\r
+ HB_Bool (*convertStringToGlyphIndices)(HB_Font font, const HB_UChar16 *string, hb_uint32 length, HB_Glyph *glyphs, hb_uint32 *numGlyphs, HB_Bool rightToLeft);\r
+ void (*getGlyphAdvances)(HB_Font font, const HB_Glyph *glyphs, hb_uint32 numGlyphs, HB_Fixed *advances, int flags /*HB_ShaperFlag*/);\r
+ HB_Bool (*canRender)(HB_Font font, const HB_UChar16 *string, hb_uint32 length);\r
+ /* implementation needs to make sure to load a scaled glyph, so /no/ FT_LOAD_NO_SCALE */\r
+ HB_Error (*getPointInOutline)(HB_Font font, HB_Glyph glyph, int flags /*HB_ShaperFlag*/, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints);\r
+ void (*getGlyphMetrics)(HB_Font font, HB_Glyph glyph, HB_GlyphMetrics *metrics);\r
+ HB_Fixed (*getFontMetric)(HB_Font font, HB_FontMetric metric);\r
+} HB_FontClass;\r
+\r
+typedef struct HB_Font_ {\r
+ const HB_FontClass *klass;\r
+\r
+ /* Metrics */\r
+ HB_UShort x_ppem, y_ppem;\r
+ HB_16Dot16 x_scale, y_scale;\r
+\r
+ void *userData;\r
+} HB_FontRec;\r
+\r
+typedef struct HB_ShaperItem_ HB_ShaperItem;\r
+\r
+struct HB_ShaperItem_ {\r
+ const HB_UChar16 *string; /* input: the Unicode UTF16 text to be shaped */\r
+ hb_uint32 stringLength; /* input: the length of the input in 16-bit words */\r
+ HB_ScriptItem item; /* input: the current run to be shaped: a run of text all in the same script that is a substring of <string> */\r
+ HB_Font font; /* input: the font: scale, units and function pointers supplying glyph indices and metrics */\r
+ HB_Face face; /* input: the shaper state; current script, access to the OpenType tables , etc. */\r
+ int shaperFlags; /* input (unused) should be set to 0; intended to support flags defined in HB_ShaperFlag */\r
+ HB_Bool glyphIndicesPresent; /* input: true if the <glyphs> array contains glyph indices ready to be shaped */\r
+ hb_uint32 initialGlyphCount; /* input: if glyphIndicesPresent is true, the number of glyph indices in the <glyphs> array */\r
+\r
+ hb_uint32 num_glyphs; /* input: capacity of output arrays <glyphs>, <attributes>, <advances>, <offsets>, and <log_clusters>; */\r
+ /* output: required capacity (may be larger than actual capacity) */\r
+\r
+ HB_Glyph *glyphs; /* output: <num_glyphs> indices of shaped glyphs */\r
+ HB_GlyphAttributes *attributes; /* output: <num_glyphs> glyph attributes */\r
+ HB_Fixed *advances; /* output: <num_glyphs> advances */\r
+ HB_FixedPoint *offsets; /* output: <num_glyphs> offsets */\r
+ unsigned short *log_clusters; /* output: for each output glyph, the index in the input of the start of its logical cluster */\r
+\r
+ /* internal */\r
+ HB_Bool kerning_applied; /* output: true if kerning was applied by the shaper */\r
+};\r
+\r
+HB_Bool HB_ShapeItem(HB_ShaperItem *item);\r
+\r
+\r
+extern int tibetan_nextSyllableBoundary(const HB_UChar16 *s, int start, int end, HB_Bool *invalid) ;\r
+extern int myanmar_nextSyllableBoundary(const HB_UChar16 *s, int start, int end, HB_Bool *invalid) ;\r
+extern int khmer_nextSyllableBoundary(const HB_UChar16 *s, int start, int end, HB_Bool *invalid) ;\r
+//#ifdef __cplusplus\r
+//extern "C" //{ int indic_nextSyllableBoundary(HB_Script script, const HB_UChar16 *s, int start, int end, bool *invalid) ;\r
+//#endif\r
+\r
+extern int indic_nextSyllableBoundary(HB_Script script, const HB_UChar16 *s, int start, int end, HB_Bool *invalid) ;\r
+\r
+\r
+HB_END_HEADER\r
+\r
+#endif\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_STREAM_PRIVATE_H\r
+#define HARFBUZZ_STREAM_PRIVATE_H\r
+\r
+#include "harfbuzz-impl.h"\r
+#include "harfbuzz-stream.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+HB_INTERNAL void\r
+_hb_close_stream( HB_Stream stream );\r
+\r
+HB_INTERNAL HB_Int\r
+_hb_stream_pos( HB_Stream stream );\r
+\r
+HB_INTERNAL HB_Error\r
+_hb_stream_seek( HB_Stream stream,\r
+ HB_UInt pos );\r
+\r
+HB_INTERNAL HB_Error\r
+_hb_stream_frame_enter( HB_Stream stream,\r
+ HB_UInt size );\r
+\r
+HB_INTERNAL void\r
+_hb_stream_frame_exit( HB_Stream stream );\r
+\r
+/* convenience macros */\r
+\r
+#define SET_ERR(c) ( (error = (c)) != 0 )\r
+\r
+#define GOTO_Table(tag) (0)\r
+#define FILE_Pos() _hb_stream_pos( stream )\r
+#define FILE_Seek(pos) SET_ERR( _hb_stream_seek( stream, pos ) )\r
+#define ACCESS_Frame(size) SET_ERR( _hb_stream_frame_enter( stream, size ) )\r
+#define FORGET_Frame() _hb_stream_frame_exit( stream )\r
+\r
+#define GET_Byte() (*stream->cursor++)\r
+#define GET_Short() (stream->cursor += 2, (HB_Short)( \\r
+ (*(((HB_Byte*)stream->cursor)-2) << 8) | \\r
+ *(((HB_Byte*)stream->cursor)-1) \\r
+ ))\r
+#define GET_Long() (stream->cursor += 4, (HB_Int)( \\r
+ (*(((HB_Byte*)stream->cursor)-4) << 24) | \\r
+ (*(((HB_Byte*)stream->cursor)-3) << 16) | \\r
+ (*(((HB_Byte*)stream->cursor)-2) << 8) | \\r
+ *(((HB_Byte*)stream->cursor)-1) \\r
+ ))\r
+\r
+\r
+#define GET_Char() ((HB_Char)GET_Byte())\r
+#define GET_UShort() ((HB_UShort)GET_Short())\r
+#define GET_ULong() ((HB_UInt)GET_Long())\r
+#define GET_Tag4() GET_ULong()\r
+\r
+HB_END_HEADER\r
+\r
+#endif /* HARFBUZZ_STREAM_PRIVATE_H */\r
--- /dev/null
+/*\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_STREAM_H\r
+#define HARFBUZZ_STREAM_H\r
+\r
+#include "harfbuzz-global.h"\r
+\r
+HB_BEGIN_HEADER\r
+\r
+typedef struct HB_StreamRec_\r
+{\r
+ HB_Byte* base;\r
+ HB_UInt size;\r
+ HB_UInt pos;\r
+ \r
+ HB_Byte* cursor;\r
+} HB_StreamRec;\r
+\r
+\r
+HB_END_HEADER\r
+\r
+#endif\r
--- /dev/null
+/*\r
+ * Copyright (C) 1998-2004 David Turner and Werner Lemberg\r
+ * Copyright (C) 2006 Behdad Esfahbod\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef HARFBUZZ_H\r
+#define HARFBUZZ_H\r
+\r
+#include "harfbuzz-external.h"\r
+#include "harfbuzz-impl.h"\r
+#include "harfbuzz-global.h"\r
+#include "harfbuzz-buffer.h"\r
+#include "harfbuzz-gdef.h"\r
+#include "harfbuzz-gsub.h"\r
+#include "harfbuzz-gpos.h"\r
+#include "harfbuzz-open.h"\r
+#include "harfbuzz-shaper.h"\r
+\r
+#define HB_DOTTED_CIRCLE 0x25CC /** DottedCircle used with dependent Matras */\r
+#define HB_ZWJ 0x200D /** Zero Width Joiner */\r
+#define HB_ZWNJ 0x200C /** Zero Width Non-Joiner */\r
+\r
+#define HB_INITIAL_NO_OF_GLYPH 64\r
+\r
+extern HB_Error hb_getScriptID(HB_UShort value, HB_Script *scriptID) ;\r
+extern HB_Error hb_getTextWithScriptID(HB_UShort *text, int textLen, HB_Script *scriptID, int *scriptLen) ;\r
+extern int hb_getSyllableLength(HB_UShort *text, int textLen, HB_Script *scriptID) ;\r
+\r
+#endif /* HARFBUZZ_OPEN_H */\r
--- /dev/null
+\r
+/*\r
+ * Copyright (C) 2010 Samsung India Software Operations Pvt. Ltd.\r
+ *\r
+ * This is part of HarfBuzz, an OpenType Layout engine library.\r
+ *\r
+ * Permission is hereby granted, without written agreement and without\r
+ * license or royalty fees, to use, copy, modify, and distribute this\r
+ * software and its documentation for any purpose, provided that the\r
+ * above copyright notice and the following two paragraphs appear in\r
+ * all copies of this software.\r
+ *\r
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR\r
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES\r
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN\r
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+ * DAMAGE.\r
+ *\r
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,\r
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\r
+ * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS\r
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO\r
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.\r
+ */\r
+\r
+#ifndef __hb_unicode_tables_h__\r
+#define __hb_unicode_tables_h__\r
+\r
+#include "math.h"\r
+#include "harfbuzz-shaper.h"\r
+#include "harfbuzz-shaper-private.h"\r
+\r
+typedef struct\r
+{\r
+ HB_UShort scriptID;//it can be sript id if subtable is null, else size of subtable\r
+ HB_Script *pSubTable;\r
+\r
+}unicodeScriptTableStruct;\r
+\r
+HB_Script subTableThanaSyriac[] = \r
+{\r
+ HB_Script_Syriac,//0x00\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,//0x08\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+\r
+ HB_Script_Syriac,//0x10\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+\r
+ HB_Script_Syriac,//0x18\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+\r
+ HB_Script_Syriac,//0x20\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,//0x28\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+\r
+ HB_Script_Syriac,//0x30\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,//0x38\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,//0x40\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+\r
+ HB_Script_Syriac,//0x48\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,\r
+ HB_Script_Syriac,//0x4f\r
+\r
+ HB_Script_Common,//0x50\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,//0x58\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,//0x60\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,//0x68\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,//0x70\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,//0x78\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+ HB_Script_Common,\r
+\r
+ HB_Script_Thaana,//0x80\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,//0x88\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,//0x90\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,//0x98\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,//0xa0\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,//0xa8\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,//0xb0\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,//0xb8\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,\r
+ HB_Script_Thaana,//0xbf\r
+};\r
+\r
+HB_Script subTableDevaBengali[] = \r
+{\r
+ HB_Script_Devanagari,//0x00\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,//0x08\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+\r
+ HB_Script_Devanagari,//0x10\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+\r
+ HB_Script_Devanagari,//0x18\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+\r
+ HB_Script_Devanagari,//0x20\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,//0x28\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+\r
+ HB_Script_Devanagari,//0x30\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,//0x38\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,//0x40\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+\r
+ HB_Script_Devanagari,//0x48\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,//0x4f\r
+\r
+ HB_Script_Devanagari,//0x50\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,//0x58\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+\r
+ HB_Script_Devanagari,//0x60\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+\r
+ HB_Script_Devanagari,//0x68\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+\r
+ HB_Script_Devanagari,//0x70\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,//0x78\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,\r
+ HB_Script_Devanagari,//0x7f\r
+\r
+\r
+ HB_Script_Bengali,//0x80\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0x88\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0x90\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+\r
+ HB_Script_Bengali,//0x98\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0xa0\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0xa8\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0xb0\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+\r
+ HB_Script_Bengali,//0xb8\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0xc0\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+\r
+ HB_Script_Bengali,//0xc8\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0xd0\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0xd8\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0xe0\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+\r
+ HB_Script_Bengali,//0xe8\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0xf0\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,//0xf8\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,\r
+ HB_Script_Bengali,//0xff\r
+\r
+};\r
+\r
+\r
+HB_Script subTableGuruGuarati[]=\r
+{\r
+ HB_Script_Gurmukhi,//0x00\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,//0x08\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+\r
+ HB_Script_Gurmukhi,//0x10\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+\r
+ HB_Script_Gurmukhi,//0x18\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+\r
+ HB_Script_Gurmukhi,//0x20\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,//0x28\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+\r
+ HB_Script_Gurmukhi,//0x30\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,//0x38\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,//0x40\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+\r
+ HB_Script_Gurmukhi,//0x48\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,//0x4f\r
+\r
+ HB_Script_Gurmukhi,//0x50\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,//0x58\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+\r
+ HB_Script_Gurmukhi,//0x60\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+\r
+ HB_Script_Gurmukhi,//0x68\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+\r
+ HB_Script_Gurmukhi,//0x70\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,//0x78\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,\r
+ HB_Script_Gurmukhi,//0x7f\r
+\r
+\r
+ HB_Script_Gujarati,//0x80\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0x88\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0x90\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+\r
+ HB_Script_Gujarati,//0x98\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0xa0\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0xa8\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0xb0\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+\r
+ HB_Script_Gujarati,//0xb8\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0xc0\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+\r
+ HB_Script_Gujarati,//0xc8\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0xd0\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0xd8\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0xe0\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+\r
+ HB_Script_Gujarati,//0xe8\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0xf0\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,//0xf8\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,\r
+ HB_Script_Gujarati,//0xff\r
+\r
+};\r
+\r
+HB_Script subTableOriyaTamil[]=\r
+{\r
+ HB_Script_Oriya,//0x00\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,//0x08\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+\r
+ HB_Script_Oriya,//0x10\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+\r
+ HB_Script_Oriya,//0x18\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+\r
+ HB_Script_Oriya,//0x20\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,//0x28\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+\r
+ HB_Script_Oriya,//0x30\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,//0x38\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,//0x40\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+\r
+ HB_Script_Oriya,//0x48\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,//0x4f\r
+\r
+ HB_Script_Oriya,//0x50\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,//0x58\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+\r
+ HB_Script_Oriya,//0x60\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+\r
+ HB_Script_Oriya,//0x68\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+\r
+ HB_Script_Oriya,//0x70\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,//0x78\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,\r
+ HB_Script_Oriya,//0x7f\r
+\r
+\r
+ HB_Script_Tamil,//0x80\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0x88\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0x90\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+\r
+ HB_Script_Tamil,//0x98\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0xa0\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0xa8\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0xb0\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+\r
+ HB_Script_Tamil,//0xb8\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0xc0\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+\r
+ HB_Script_Tamil,//0xc8\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0xd0\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0xd8\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0xe0\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+\r
+ HB_Script_Tamil,//0xe8\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0xf0\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,//0xf8\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,\r
+ HB_Script_Tamil,//0xff\r
+\r
+};\r
+\r
+\r
+HB_Script subTableTelukannada[]=\r
+{\r
+ HB_Script_Telugu,//0x00\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,//0x08\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+\r
+ HB_Script_Telugu,//0x10\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+\r
+ HB_Script_Telugu,//0x18\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+\r
+ HB_Script_Telugu,//0x20\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,//0x28\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+\r
+ HB_Script_Telugu,//0x30\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,//0x38\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,//0x40\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+\r
+ HB_Script_Telugu,//0x48\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,//0x4f\r
+\r
+ HB_Script_Telugu,//0x50\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,//0x58\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+\r
+ HB_Script_Telugu,//0x60\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+\r
+ HB_Script_Telugu,//0x68\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+\r
+ HB_Script_Telugu,//0x70\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,//0x78\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,\r
+ HB_Script_Telugu,//0x7f\r
+\r
+\r
+ HB_Script_Kannada,//0x80\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0x88\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0x90\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+\r
+ HB_Script_Kannada,//0x98\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0xa0\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0xa8\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0xb0\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+\r
+ HB_Script_Kannada,//0xb8\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0xc0\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+\r
+ HB_Script_Kannada,//0xc8\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0xd0\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0xd8\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0xe0\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+\r
+ HB_Script_Kannada,//0xe8\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0xf0\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,//0xf8\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,\r
+ HB_Script_Kannada,//0xff\r
+\r
+};\r
+\r
+HB_Script subTableMalSinhala[]=\r
+{\r
+ HB_Script_Malayalam,//0x00\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,//0x08\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+\r
+ HB_Script_Malayalam,//0x10\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+\r
+ HB_Script_Malayalam,//0x18\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+\r
+ HB_Script_Malayalam,//0x20\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,//0x28\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+\r
+ HB_Script_Malayalam,//0x30\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,//0x38\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,//0x40\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+\r
+ HB_Script_Malayalam,//0x48\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,//0x4f\r
+\r
+ HB_Script_Malayalam,//0x50\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,//0x58\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+\r
+ HB_Script_Malayalam,//0x60\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+\r
+ HB_Script_Malayalam,//0x68\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+\r
+ HB_Script_Malayalam,//0x70\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,//0x78\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,\r
+ HB_Script_Malayalam,//0x7f\r
+\r
+\r
+ HB_Script_Sinhala,//0x80\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0x88\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0x90\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+\r
+ HB_Script_Sinhala,//0x98\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0xa0\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0xa8\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0xb0\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+\r
+ HB_Script_Sinhala,//0xb8\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0xc0\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+\r
+ HB_Script_Sinhala,//0xc8\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0xd0\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0xd8\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0xe0\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+\r
+ HB_Script_Sinhala,//0xe8\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0xf0\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,//0xf8\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,\r
+ HB_Script_Sinhala,//0xff\r
+\r
+};\r
+\r
+HB_Script subTableThaiLao[]=\r
+{\r
+ HB_Script_Thai,//0x00\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,//0x08\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+\r
+ HB_Script_Thai,//0x10\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+\r
+ HB_Script_Thai,//0x18\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+\r
+ HB_Script_Thai,//0x20\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,//0x28\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+\r
+ HB_Script_Thai,//0x30\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,//0x38\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,//0x40\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+\r
+ HB_Script_Thai,//0x48\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,//0x4f\r
+\r
+ HB_Script_Thai,//0x50\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,//0x58\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+\r
+ HB_Script_Thai,//0x60\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+\r
+ HB_Script_Thai,//0x68\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+\r
+ HB_Script_Thai,//0x70\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,//0x78\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,\r
+ HB_Script_Thai,//0x7f\r
+\r
+\r
+ HB_Script_Lao,//0x80\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0x88\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0x90\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+\r
+ HB_Script_Lao,//0x98\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0xa0\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0xa8\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0xb0\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+\r
+ HB_Script_Lao,//0xb8\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0xc0\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+\r
+ HB_Script_Lao,//0xc8\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0xd0\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0xd8\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0xe0\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+\r
+ HB_Script_Lao,//0xe8\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0xf0\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,//0xf8\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,\r
+ HB_Script_Lao,//0xff\r
+\r
+};\r
+\r
+HB_Script subTableMyanGeorgian[] =\r
+{\r
+ HB_Script_Myanmar,//0x00\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,//0x08\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+\r
+ HB_Script_Myanmar,//0x10\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+\r
+ HB_Script_Myanmar,//0x18\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+\r
+ HB_Script_Myanmar,//0x20\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,//0x28\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+\r
+ HB_Script_Myanmar,//0x30\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,//0x38\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,//0x40\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+\r
+ HB_Script_Myanmar,//0x48\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,//0x4f\r
+\r
+ HB_Script_Myanmar,//0x50\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,//0x58\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+\r
+ HB_Script_Myanmar,//0x60\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+\r
+ HB_Script_Myanmar,//0x68\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+\r
+ HB_Script_Myanmar,//0x70\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,//0x78\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,//0x7f\r
+\r
+\r
+ HB_Script_Myanmar,//0x80\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,//0x88\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,//0x90\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+\r
+ HB_Script_Myanmar,//0x98\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+ HB_Script_Myanmar,\r
+\r
+ HB_Script_Georgian,//0xa0\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,//0xa8\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,//0xb0\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+\r
+ HB_Script_Georgian,//0xb8\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,//0xc0\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+\r
+ HB_Script_Georgian,//0xc8\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,//0xd0\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,//0xd8\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,//0xe0\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+\r
+ HB_Script_Georgian,//0xe8\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,//0xf0\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,//0xf8\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,\r
+ HB_Script_Georgian,//0xff\r
+\r
+};\r
+\r
+HB_Script subTableOghamRunic[] = \r
+{\r
+ HB_Script_Ogham,//0x00\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,//0x08\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+\r
+ HB_Script_Ogham,//0x10\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+\r
+ HB_Script_Ogham,//0x18\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+\r
+ HB_Script_Ogham,//0x20\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,//0x28\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+\r
+ HB_Script_Ogham,//0x30\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,//0x38\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,//0x40\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+\r
+ HB_Script_Ogham,//0x48\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,//0x4f\r
+\r
+ HB_Script_Ogham,//0x50\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,//0x58\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+\r
+ HB_Script_Ogham,//0x60\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+\r
+ HB_Script_Ogham,//0x68\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+\r
+ HB_Script_Ogham,//0x70\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,//0x78\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,//0x7f\r
+\r
+\r
+ HB_Script_Ogham,//0x80\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,//0x88\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,//0x90\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+\r
+ HB_Script_Ogham,//0x98\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+ HB_Script_Ogham,\r
+\r
+ HB_Script_Runic,//0xa0\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,//0xa8\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,//0xb0\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+\r
+ HB_Script_Runic,//0xb8\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,//0xc0\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+\r
+ HB_Script_Runic,//0xc8\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,//0xd0\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,//0xd8\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,//0xe0\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+\r
+ HB_Script_Runic,//0xe8\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,//0xf0\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,//0xf8\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,\r
+ HB_Script_Runic,//0xff\r
+\r
+};\r
+\r
+#define VFE_UNICODE_MAX_SCRIPT 256\r
+\r
+static const unicodeScriptTableStruct scriptTableStruct[VFE_UNICODE_MAX_SCRIPT]=\r
+{\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Greek, 0},\r
+\r
+ {HB_Script_Cyrillic, 0},//0x04\r
+ {HB_Script_Armenian, 0},\r
+ {HB_Script_Arabic, 0},\r
+ {0xc0, subTableThanaSyriac},\r
+\r
+ {HB_Script_Common, 0},//0x08\r
+ {0x100, subTableDevaBengali},\r
+ {0x100, subTableGuruGuarati},\r
+ {0x100, subTableOriyaTamil},\r
+ \r
+ {0x100, subTableTelukannada},//0x0c\r
+ {0x100, subTableMalSinhala},\r
+ {0x100, subTableThaiLao},\r
+ {HB_Script_Tibetan, 0},\r
+\r
+ {0x100, subTableMyanGeorgian},//0x10\r
+ {HB_Script_Hangul, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x14\r
+ {HB_Script_Common, 0},\r
+ {0x100, subTableOghamRunic},\r
+ {HB_Script_Khmer, 0},\r
+\r
+ {HB_Script_Common, 0},//0x18\r
+ {HB_Script_Khmer, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x1c\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x20\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x24\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x28\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x2c\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x30\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x34\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x38\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x3c\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x40\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x44\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x48\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x4c\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x50\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x54\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x58\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x5c\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x60\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x64\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x68\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x6c\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x70\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x74\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x78\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x7c\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x80\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x84\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x88\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x8c\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x40\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x94\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x98\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0x9c\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xa0\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xa4\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xa8\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xac\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xb0\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xb4\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xb8\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xbc\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xc0\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xc4\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xc8\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xcc\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xd0\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xd4\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xd8\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xdc\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xe0\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xe4\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xe8\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xec\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xf0\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xf4\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xf8\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+\r
+ {HB_Script_Common, 0},//0xfc\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},\r
+ {HB_Script_Common, 0},//ff\r
+};\r
+\r
+#endif /* __hb_unicode_tables_h__ */\r
+\r
--- /dev/null
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: harfbuzz
+Description: A free, high-quality, and portable shaping engine.
+Version: 1
+Requires:
+Libs: -L${libdir} -lharfbuzz
+Cflags: -I${includedir}/harfbuzz -I${includedir}