summaryrefslogtreecommitdiff
path: root/Build/source/libs/harfbuzz/harfbuzz-src
diff options
context:
space:
mode:
authorAkira Kakuto <kakuto@fuk.kindai.ac.jp>2016-07-21 23:35:31 +0000
committerAkira Kakuto <kakuto@fuk.kindai.ac.jp>2016-07-21 23:35:31 +0000
commit36343bff25bdcaabfcc4188f3a4ef78d126e2649 (patch)
tree30a3e4758e20989c474e5113216e1b04fbea96b2 /Build/source/libs/harfbuzz/harfbuzz-src
parent18dfb9521bc655a3a1fcc29063fb102522769f5f (diff)
harfbuzz 1.3.0
git-svn-id: svn://tug.org/texlive/trunk@41748 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/harfbuzz/harfbuzz-src')
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/BUILD.md9
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog685
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/NEWS15
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/configure.ac4
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py32
-rwxr-xr-xBuild/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py29
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc10
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h22
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc28
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc568
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.h2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font-private.hh8
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc1
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc39
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-structs.h12
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc50
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh17
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos-private.hh11
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc39
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic-table.hh56
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-machine.hh2026
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-machine.rl3
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-private.hh5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-table.cc612
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc59
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar-machine.hh38
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar.cc5
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-private.hh14
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh588
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.rl19
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-private.hh1
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-table.cc224
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc16
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-private.hh2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape.cc2
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ucdn.cc6
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-private.hh4
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.h15
39 files changed, 2590 insertions, 2691 deletions
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/BUILD.md b/Build/source/libs/harfbuzz/harfbuzz-src/BUILD.md
index 86285c64858..7518c2e42d3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/BUILD.md
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/BUILD.md
@@ -1,5 +1,4 @@
-On Linux, install the development packages for
-[FreeType](http://www.freedesktop.org/wiki/Software/FreeType/),
+On Linux, install the development packages for FreeType,
Cairo, and GLib. For example, on Ubuntu / Debian, you would do:
* sudo apt-get install gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev
@@ -30,4 +29,8 @@ on the Mac, using MacPorts:
* sudo port install autoconf automake libtool pkgconfig ragel gtk-doc
or using Homebrew:
-* brew port install autoconf automake libtool pkgconfig ragel gtk-doc
+* brew install autoconf automake libtool pkgconfig ragel gtk-doc
+
+To build the Python bindings, you also need:
+
+* brew install pygobject3
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog b/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog
index 33749c72c2e..106d1e81cfc 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/ChangeLog
@@ -1,6 +1,579 @@
+commit 08c08af2f9ed683ad20322c3ef1ba0f87ce15426
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jul 21 01:23:33 2016 -0700
+
+ [ucdn] Update to Unicode 9.0.0
+
+ Fixes https://github.com/grigorig/ucdn/issues/12
+
+ src/hb-ucdn.cc | 6 +
+ src/hb-ucdn/README | 1 -
+ src/hb-ucdn/ucdn.c | 80 +-
+ src/hb-ucdn/ucdn.h | 98 +-
+ src/hb-ucdn/unicodedata_db.h | 4750
+ +++++++++++++++++++++++-------------------
+ 5 files changed, 2783 insertions(+), 2152 deletions(-)
+
+commit f3f6c1ccbf89e15cda03e0c3a2df4297e98adf60
+Author: jfkthame <jfkthame@gmail.com>
+Date: Thu Jun 16 00:10:42 2016 +0100
+
+ Blacklist GDEF tables of more fonts
+
+ This is based on bug reports that have been filed against Firefox
+ since it
+ updated to a version of harfbuzz that uses zeroing by GDEF rather
+ than by
+ Unicode. I'm sure there are a bunch more font versions that should
+ also be
+ included; these are just the ones I have on hand and have confirmed
+ as having
+ bad GDEF data.
+
+ Given how the list here is growing, I think we should reconsider
+ the approach,
+ and perhaps revert to zeroing by Unicode instead.
+
+ Fixes https://github.com/behdad/harfbuzz/issues/264
+ Fixes https://github.com/behdad/harfbuzz/pull/266
+
+ src/hb-ot-layout.cc | 39 +++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 39 insertions(+)
+
+commit 34f9aa582c3a03b578c7eae3d2e8860a0bd5cb00
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 20 02:35:54 2016 -0700
+
+ Implement symbol cmap in ft and ot fonts
+
+ Fixes https://github.com/behdad/harfbuzz/issues/236
+ Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=627953
+
+ src/hb-ft.cc | 27 +++++++++++++++++++++++----
+ src/hb-ot-font.cc | 50 ++++++++++++++++++++++++++++++++++++++------------
+ 2 files changed, 61 insertions(+), 16 deletions(-)
+
+commit 6363d7df28dc4307ef1abb9857d14c35e656b85a
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jul 20 01:43:56 2016 -0700
+
+ Clean up buffer area when rewinding
+
+ Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=614647
+ If allocation fails, we might be leaving junk behind. At least
+ clear it up.
+
+ src/hb-buffer.cc | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit f80c34eb556d12c45c961d6742c289baef58899d
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jul 12 11:18:26 2016 -0700
+
+ Whitespace
+
+ src/hb-unicode-private.hh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 874421203e0161db2cbfb27be6c039cba57f7c63
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Tue Jul 12 03:49:21 2016 +0430
+
+ [coretext] Speculative fix for CoreText nullptr access (#288)
+
+ src/hb-coretext.cc | 14 +++++++++-----
+ 1 file changed, 9 insertions(+), 5 deletions(-)
+
+commit 6bf9db4f1e1d51f9acb5e37b89caa8f4d275e7ce
+Author: Birunthan Mohanathas <birunthan@mohanathas.com>
+Date: Mon Jul 11 13:38:23 2016 -0700
+
+ [ft] Fix unsafe cast of FT_Done_Face in
+ hb_ft_{face,font}_create_referenced (#289)
+
+ Prior to this change the function `FT_Error FT_Done_Face(FT_Face
+ *)` was
+ called through a pointer with the signature `void (void *)`
+ resulting in
+ undefined behaviour.
+
+ src/hb-ft.cc | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+commit 0b8f3ab0220ca4731516313828515f26bb480645
+Author: Steve Lhomme <slhomme@matroska.org>
+Date: Mon Jul 11 21:57:26 2016 +0200
+
+ clang in MSVC mode doesn't like when we redefine __attribute__ (#283)
+
+ src/hb-private.hh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 2f522fd485c2e946c9bce9e3828b6ff6247c59e4
+Merge: d3e2a06 e4d451e
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri Jul 1 17:09:28 2016 -0700
+
+ Merge pull request #286 from khaledhosny/gi-tag_from_string
+
+ [introspection] Fix hb_tag_from_string annotation
+
+commit e4d451ee55a57e1231b4076fcd1e87994f6b9528
+Author: Khaled Hosny <khaledhosny@eglug.org>
+Date: Sat Jul 2 00:04:57 2016 +0200
+
+ [introspection] Fix hb_tag_from_string annotation
+
+ src/hb-common.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit d3e2a06b0f2587e913a9c3ff1a20c187f260db80
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 30 11:01:22 2016 -0700
+
+ [python] Use utf-32 / utf-16 based on build of Python
+
+ Fixes https://github.com/behdad/harfbuzz/pull/271
+
+ src/sample.py | 22 +++++++++++++++++++++-
+ 1 file changed, 21 insertions(+), 1 deletion(-)
+
+commit fc9de44a03a97f6e93bd98d804596cb1f9f4b5fd
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 30 09:46:52 2016 -0700
+
+ Comments
+
+ src/hb-coretext.cc | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+commit 46809dee30232d493539519b1bb527fa816c37db
+Merge: 70e72e5 1bea49e
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Thu Jun 30 09:41:03 2016 -0700
+
+ Merge pull request #268 from drott/conflictingFontFix
+
+ Discard reconfigured CTFont if URL changes
+
+commit 1bea49eb4b7a94ab6222f9c3c40320cbdb247b2d
+Merge: 7aa3631 70e72e5
+Author: Dominik Röttsches <d-r@roettsches.de>
+Date: Wed Jun 29 12:10:41 2016 +0200
+
+ Merge branch 'master' into conflictingFontFix
+
+commit 70e72e5f61d73c33d3c8f3bf07f5a9afd0db046a
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jun 28 21:00:37 2016 -0700
+
+ [gobject] Fix a few warnings
+
+ Part of https://github.com/behdad/harfbuzz/issues/277
+
+ src/hb-buffer.cc | 2 +-
+ src/hb-gobject-structs.h | 12 ++++++++++++
+ src/hb-shape.cc | 2 --
+ src/hb-unicode.h | 15 ---------------
+ 4 files changed, 13 insertions(+), 18 deletions(-)
+
+commit d8273aac19771033c5064a2f079c29d09a86e7c0
+Merge: abae93f ae9054c
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jun 28 21:15:28 2016 -0700
+
+ Merge pull request #280 from behdad/revert-271-patch-2
+
+ Revert "use utf32"
+
+commit ae9054c740631e36b7582b44c5afb42ff4509461
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Tue Jun 28 21:14:38 2016 -0700
+
+ Revert "use utf32"
+
+ src/sample.py | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+commit 7aa3631dd06af74a1fa9f0bfaa5f721876be817f
+Merge: f7da048 abae93f
+Author: Dominik Röttsches <d-r@roettsches.de>
+Date: Tue Jun 28 09:52:18 2016 +0200
+
+ Merge branch 'master' into conflictingFontFix
+
+commit abae93faef32562f34a72981d252c848cc4f7565
+Merge: 07461d0 8179ff5
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jun 27 14:33:27 2016 -0400
+
+ Merge pull request #273 from ebraminio/master
+
+ [dwrite] Use stream font loader instead GDI interop
+
+commit 8179ff5d7ba4a140cf6743729a22072800e98a79
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Mon Jun 27 03:54:15 2016 +0430
+
+ [dwrite] Don't allocate more than needed
+
+ Addressing Nikolay Sivov reviews on harfbuzz mailing list
+
+ src/hb-directwrite.cc | 15 ++++++---------
+ 1 file changed, 6 insertions(+), 9 deletions(-)
+
+commit 07b724f3419a28c479cd8a75ae0eecb841a6d2f3
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Fri Jun 24 12:23:25 2016 +0430
+
+ [dwrite] Delete remained objects
+
+ No longer noticeable memory increase on create/destroy iterations,
+ highly better than current state of uniscribe backend
+
+ src/hb-directwrite.cc | 33 ++++++++++++++++++++++++---------
+ 1 file changed, 24 insertions(+), 9 deletions(-)
+
+commit be565d17141818e006aa1e4582f3ae14c726fa85
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Fri Jun 24 11:42:01 2016 +0430
+
+ [dwrite] Release allocated blob on face destroy
+
+ This reduces memory consumption of my iterated font create/destroy
+ cycle test
+ significantly and makes it much better than uniscribe backend even
+
+ src/hb-directwrite.cc | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit f3f0ea980a359343ac0e3d359a95855c2cf7be25
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Thu Jun 23 16:41:37 2016 +0430
+
+ [dwrite] Remove ifdefs without breaking execution on old Windows
+ versions
+
+ src/hb-directwrite.cc | 205
+ +++++++++++++++++++++++++-------------------------
+ 1 file changed, 103 insertions(+), 102 deletions(-)
+
+commit 6b861dbd8b3662d0fa0e51fad1736d72192da868
+Author: Ebrahim Byagowi <ebrahim@gnu.org>
+Date: Tue Jun 21 13:57:26 2016 +0430
+
+ [dwrite] Use stream font loader instead GDI interop
+
+ With help of
+ https://dxr.mozilla.org/mozilla-central/source/gfx/2d/NativeFontResourceDWrite.cpp
+
+ src/hb-directwrite.cc | 350
+ +++++++++++++++++++-------------------------------
+ src/hb-directwrite.h | 2 +-
+ 2 files changed, 135 insertions(+), 217 deletions(-)
+
+commit f7da0486ed8884481d477ce08fcf928c4da9a0a3
+Merge: a022327 07461d0
+Author: Dominik Röttsches <d-r@roettsches.de>
+Date: Mon Jun 20 10:25:43 2016 +0300
+
+ Merge branch 'master' into conflictingFontFix
+
+commit 07461d06d242cd5cfda7ccb891189f074a89b460
+Author: Kelvin <kelvinsthirteen@gmail.com>
+Date: Sat Jun 18 22:46:38 2016 +0000
+
+ Use UTF-32 in Python sample
+
+ src/sample.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit fca0c61d67aa309fc824fb18f247493c2b7701ef
+Merge: 4b8de1e 9883505
+Author: Khaled Hosny <khaledhosny@eglug.org>
+Date: Sun Jun 19 00:08:51 2016 +0300
+
+ Merge pull request #270 from khaledhosny/travis-failure
+
+ Fix make check on Travis
+
+commit 988350586f607c7a46bbb658a2abecfd004f41fb
+Author: Khaled Hosny <khaledhosny@eglug.org>
+Date: Sat Jun 18 21:12:19 2016 +0200
+
+ [tests] Workaround Python 2 “narrow” builds
+
+ The so-called Python 2 “narrow” builds support UCS2 only, this
+ is a
+ workaround to allow unichr to work with any Unicode character in such
+ builds. This fixes Travis-CI failure as it has narrow Python 2 builds.
+
+ Copied from:
+ https://github.com/behdad/fonttools/blob/master/Lib/fontTools/misc/py23.py
+
+ test/shaping/hb_test_tools.py | 38 +++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 37 insertions(+), 1 deletion(-)
+
+commit a0223274b97e82fe02730fd45729172511fec459
+Author: Dominik Röttsches <drott@chromium.org>
+Date: Thu Jun 16 14:19:39 2016 +0200
+
+ Discard reconfigured CTFont if URL changes
+
+ Fixes https://github.com/behdad/harfbuzz/issues/267
+
+ src/hb-coretext.cc | 24 +++++++++++++++++++++---
+ 1 file changed, 21 insertions(+), 3 deletions(-)
+
+commit 4b8de1ea804b225e8357422d0686aad76b05ccf3
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jun 6 23:08:54 2016 -0700
+
+ Round, not truncate, when scaling values
+
+ Fixes https://github.com/behdad/harfbuzz/issues/255
+
+ src/hb-font-private.hh | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+commit a93078a0ece6dcdea8c5b46cabd30854dd7cf593
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jun 6 15:58:41 2016 -0700
+
+ Change bugreport URL to github
+
+ That's where everything is happening these days.
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit bed201d2b839c1b1e727e17efc2e0c8f705b86c5
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon Jun 6 14:14:24 2016 -0700
+
+ Update for latest Unicode 9 data files
+
+ src/hb-ot-shape-complex-indic-table.cc | 10 +++++-----
+ src/hb-ot-shape-complex-indic.cc | 5 -----
+ src/hb-ot-shape-complex-use-table.cc | 4 ++--
+ 3 files changed, 7 insertions(+), 12 deletions(-)
+
+commit aba4b0ca52f490adfc2f3c6ec0accddd6596fdf6
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Wed Jun 1 16:57:29 2016 -0700
+
+ Add TODO
+
+ src/hb-font.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit a2b03de5b30b7e83f7fbf3457e9ba9c00eb88d00
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 6 17:56:07 2016 +0100
+
+ [myanmar] Handle U+AA74..U+AA76
+
+ Fixes https://github.com/behdad/harfbuzz/issues/218
+
+ src/hb-ot-shape-complex-myanmar.cc | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 6c0aa9e92bbd22011c85d98c6db021012f7b4101
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 6 17:50:06 2016 +0100
+
+ Fix build on droid.io
+
+ test/shaping/tests/use.tests | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 9b6312f9451db790db00dc2c2e27a5a1db852e72
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 6 17:41:49 2016 +0100
+
+ [use] Update to draft spec from Andrew Glass from August 2015
+
+ src/gen-use-table.py | 29 +++--
+ src/hb-ot-shape-complex-use-machine.rl | 15 +--
+ src/hb-ot-shape-complex-use-private.hh | 1 -
+ src/hb-ot-shape-complex-use-table.cc | 142
+ ++++++++++-----------
+ src/hb-ot-shape-complex-use.cc | 11 +-
+ .../6ff0fbead4462d9f229167b4e6839eceb8465058.ttf | Bin 0 -> 1148 bytes
+ test/shaping/tests/use.tests | 1 +
+ 7 files changed, 93 insertions(+), 106 deletions(-)
+
+commit 3e4e7616a8ca80a50a438601b84428b4ba4c8694
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 6 17:28:25 2016 +0100
+
+ [use] Add a catch-all clause to the machine
+
+ src/hb-ot-shape-complex-use-machine.rl | 2 ++
+ src/hb-ot-shape-complex-use.cc | 2 ++
+ 2 files changed, 4 insertions(+)
+
+commit d04e461fe3310ccaf8633efcb79b8eb6ca2201c3
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 6 17:17:00 2016 +0100
+
+ [use] Fix 'Number-joiner terminated cluster' to use HN instead of H
+
+ From draft update to USE.
+
+ src/hb-ot-shape-complex-use-machine.rl | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 359dead960c825edeb4587915a511d323f1c1f2a
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 6 16:19:19 2016 +0100
+
+ Allow MultipleSubst to delete glyph
+
+ Fixes https://github.com/behdad/harfbuzz/issues/253
+
+ Hopefully we got the logic right.
+
+ src/hb-ot-layout-gsub-table.hh | 17 +++++++----------
+ src/hb-ot-layout-gsubgpos-private.hh | 11 +++++++----
+ 2 files changed, 14 insertions(+), 14 deletions(-)
+
+commit 3c1666cfb589275de96d54eecb95a13a98e3819e
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 6 16:05:07 2016 +0100
+
+ [indic] Remove more unused logic after Javanese is gone
+
+ src/hb-ot-shape-complex-indic.cc | 50
+ +++++++++++++++-------------------------
+ 1 file changed, 18 insertions(+), 32 deletions(-)
+
+commit 8b5d6e755b271d0d22b31a7726d5bfbf2aae8b2f
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 6 15:59:27 2016 +0100
+
+ [indic] Remove unused Javanese bits
+
+ src/hb-ot-shape-complex-indic-machine.rl | 3 +--
+ src/hb-ot-shape-complex-indic-private.hh | 5 ++---
+ src/hb-ot-shape-complex-indic.cc | 4 ----
+ 3 files changed, 3 insertions(+), 9 deletions(-)
+
+commit 30e6e29f0f0f77eb65bfd1c4576b38c2da555017
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 6 15:52:27 2016 +0100
+
+ [indic/use] Move Javanese from Indic shaper to USE
+
+ Fixes https://github.com/behdad/harfbuzz/issues/243
+
+ With javatext.ttf, the reodering medial Ra gets its advance width
+ zero'ed in Uniscribe implementation, and the font adds the advance
+ back. Our Indic shaper does not do that, but USE does. So, route
+ Javanese through USE. That's what Microsoft does anyway. Test:
+
+ U+A9A5,U+A9BA
+
+ This also seems to fix the following sequence, and variations thereof:
+
+ U+A99F,U+A9C0,U+A9A2,U+A9BF
+
+ src/gen-indic-table.py | 1 -
+ src/hb-ot-shape-complex-indic-table.cc | 23
+ ++++------------------
+ src/hb-ot-shape-complex-private.hh | 5 +----
+ .../south-east-asian/script-javanese/misc.txt | 1 +
+ 4 files changed, 6 insertions(+), 24 deletions(-)
+
+commit c6ee5f5f06a27a6f147f63aaf51186622821f20b
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 6 15:39:02 2016 +0100
+
+ Add Javanese sample text
+
+ .../south-east-asian/script-javanese/misc.txt | 53
+ ++++++++++++++++++++++
+ 1 file changed, 53 insertions(+)
+
+commit e21921a68a959b7e929f71a4260a6cbe055ab4e6
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 6 15:24:39 2016 +0100
+
+ Minor
+
+ BUILD.md | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+commit 01a30a6aa9a5827c93245961e3392a1f361745fe
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 6 11:50:02 2016 +0100
+
+ [indic] Remove data for scripts that don't go thorough this shaper
+
+ src/gen-indic-table.py | 29 +-
+ src/hb-ot-shape-complex-indic-table.cc | 604
+ +--------------------------------
+ 2 files changed, 43 insertions(+), 590 deletions(-)
+
+commit 7cd9269f4eba7b85cd72301a3fc39fab42a4e439
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 6 11:34:46 2016 +0100
+
+ Update tables to Unicode 9.0.0 beta
+
+ Fixes https://github.com/behdad/harfbuzz/issues/251
+
+ src/hb-ot-shape-complex-arabic-table.hh | 56 ++++++++-----
+ src/hb-ot-shape-complex-indic-table.cc | 137
+ +++++++++++++++++++++++---------
+ src/hb-ot-shape-complex-use-table.cc | 86 ++++++++++++++------
+ 3 files changed, 196 insertions(+), 83 deletions(-)
+
+commit f718fe370ea89e8aeb407addaa6cc926d52a4cdb
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 6 11:21:12 2016 +0100
+
+ Minor
+
+ src/gen-indic-table.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 691086f131cb6c9d97e98730c27673484bf93f87
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 6 12:08:18 2016 +0100
+
+ Add Unicode 9 beta scripts
+
+ These are frozen, so good time to add.
+
+ src/hb-common.cc | 3 +++
+ src/hb-common.h | 9 +++++++++
+ src/hb-ot-shape-complex-private.hh | 9 +++++++++
+ src/hb-ot-shape-complex-use.cc | 3 +++
+ 4 files changed, 24 insertions(+)
+
+commit bc5198fe1277d662926a4f616913c085cd4fc8ee
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Fri May 6 11:59:05 2016 +0100
+
+ Whitespace
+
+ src/hb-common.h | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+commit a5b7b0dd4508d8a1e7573b75c4cb8832c9e34e3f
+Author: Behdad Esfahbod <behdad@behdad.org>
+Date: Mon May 2 10:44:13 2016 +0200
+
+ 1.2.7
+
+ NEWS | 12 ++++++++++++
+ configure.ac | 2 +-
+ 2 files changed, 13 insertions(+), 1 deletion(-)
+
commit 9879fc1db3cad684f412c2f3d6b49e0435697d0e
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon May 2 10:29:12 2016 +0200
+Date: Mon May 2 10:29:12 2016 +0200
[ot-font] Remove unused 'post' table include for now
@@ -11,11 +584,11 @@ Date: Mon May 2 10:29:12 2016 +0200
commit f8061ae7972462ad800c23be7cd7b3d7ab94b93b
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon May 2 10:28:24 2016 +0200
+Date: Mon May 2 10:28:24 2016 +0200
[tests] Fix test
- test/shaping/Makefile.am |
+ test/shaping/Makefile.am |
2 +-
.../tests/{fallback-positioning.test => fallback-positioning.tests}
| 0
@@ -23,7 +596,7 @@ Date: Mon May 2 10:28:24 2016 +0200
commit f00ab2a33ab34ba64f38cbbe65830c770a3e071e
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon May 2 10:24:00 2016 +0200
+Date: Mon May 2 10:24:00 2016 +0200
[hb-ot-font] Make 'glyf' table loading lazy
@@ -33,22 +606,22 @@ Date: Mon May 2 10:24:00 2016 +0200
positioning
happens.
- src/hb-ot-font.cc | 45
+ src/hb-ot-font.cc | 45
++++++++++++++++++++-
- test/shaping/Makefile.am | 1 +
+ test/shaping/Makefile.am | 1 +
.../7ef276fc886ea502a03b9b0e5c8b547d5dc2b61c.ttf | Bin 0 -> 784 bytes
- test/shaping/tests/fallback-positioning.test | 2 +
+ test/shaping/tests/fallback-positioning.test | 2 +
4 files changed, 46 insertions(+), 2 deletions(-)
commit 587d46227a56940a7f5bb053cbeda6144394acf7
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sat Apr 30 19:20:56 2016 +0200
+Date: Sat Apr 30 19:20:56 2016 +0200
[ot-font] Start implementing 'post' table, for accessing glyph names
- src/Makefile.sources | 1 +
- src/hb-open-type-private.hh | 12 ++++-
- src/hb-ot-font.cc | 1 +
+ src/Makefile.sources | 1 +
+ src/hb-open-type-private.hh | 12 ++++-
+ src/hb-ot-font.cc | 1 +
src/hb-ot-post-table.hh | 119
++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 132 insertions(+), 1 deletion(-)
@@ -56,13 +629,13 @@ Date: Sat Apr 30 19:20:56 2016 +0200
commit 9abaaac409b8e3a0a9182b67dc384133013f7878
Merge: 2f560ee 264b7a7
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Apr 27 03:38:24 2016 -0700
+Date: Wed Apr 27 03:38:24 2016 -0700
Merge commit '264b7a728a41becfbf23ce258fc2a3af19d0cbbe' into HEAD
commit 2f560ee44b7b08683e8e6955fe3b95187e8bda32
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Apr 27 03:11:41 2016 -0700
+Date: Wed Apr 27 03:11:41 2016 -0700
[tibetan] Reorder marks to better match Uniscribe
@@ -77,20 +650,20 @@ Date: Wed Apr 27 03:11:41 2016 -0700
commit f68390f196216718c22c434e1d8921118e646824
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Wed Apr 27 02:44:35 2016 -0700
+Date: Wed Apr 27 02:44:35 2016 -0700
[test] Add text for Tibetan shorthand contractions
From http://www.babelstone.co.uk/Tibetan/Contractions.html
- .../script-tibetan/misc/contractions.txt | 612
+ .../script-tibetan/misc/contractions.txt | 612
+++++++++++++++++++++
1 file changed, 612 insertions(+)
commit 264b7a728a41becfbf23ce258fc2a3af19d0cbbe
Merge: 7e2da03 adafdcd
Author: Khaled Hosny <khaledhosny@eglug.org>
-Date: Wed Apr 27 03:48:23 2016 +0300
+Date: Wed Apr 27 03:48:23 2016 +0300
Merge pull request #247 from khaledhosny/update-opentype-language-tags
@@ -98,7 +671,7 @@ Date: Wed Apr 27 03:48:23 2016 +0300
commit adafdcddced076da4bfa3114a00e15a387aaf1f7
Author: Arthur Reutenauer <arthur.reutenauer@normalesup.org>
-Date: Sat Nov 7 23:37:21 2015 +0000
+Date: Sat Nov 7 23:37:21 2015 +0000
Mass-added “difficult” tags – to be curated.
@@ -108,7 +681,7 @@ Date: Sat Nov 7 23:37:21 2015 +0000
commit 3d6a2c0d7d9f6c5b3097f78c1123f9e59dcc76e2
Author: Arthur Reutenauer <arthur.reutenauer@normalesup.org>
-Date: Sat Nov 7 22:59:13 2015 +0000
+Date: Sat Nov 7 22:59:13 2015 +0000
Initial import of missing OpenType 1.7 language tags.
@@ -118,7 +691,7 @@ Date: Sat Nov 7 22:59:13 2015 +0000
commit 7e2da035f68e46ce8f4759b67b4ed3a1b211d793
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Apr 26 16:42:25 2016 -0700
+Date: Tue Apr 26 16:42:25 2016 -0700
Undo accidental change
@@ -127,23 +700,23 @@ Date: Tue Apr 26 16:42:25 2016 -0700
commit b20305022a8235b19e6b640bc62651854e1336f1
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Apr 26 16:41:17 2016 -0700
+Date: Tue Apr 26 16:41:17 2016 -0700
Do NOT ignore Mongolian Free Variation Selectors during matching
Fixes https://github.com/behdad/harfbuzz/issues/234
- src/hb-ot-layout-gsubgpos-private.hh | 2 +-
- src/hb-ot-layout-private.hh | 23
+ src/hb-ot-layout-gsubgpos-private.hh | 2 +-
+ src/hb-ot-layout-private.hh | 23
+++++++++++++++++++--
- src/hb-ot-shape-complex-arabic.cc | 2 +-
+ src/hb-ot-shape-complex-arabic.cc | 2 +-
.../a34a7b00f22ffb5fd7eef6933b81c7e71bc2cdfb.ttf | Bin 0 -> 3700 bytes
- .../tests/mongolian-variation-selector.tests | 1 +
+ .../tests/mongolian-variation-selector.tests | 1 +
5 files changed, 24 insertions(+), 4 deletions(-)
commit 21ab5501f5f5267d20cf23256866dd9d82a667ef
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Apr 26 16:02:04 2016 -0700
+Date: Tue Apr 26 16:02:04 2016 -0700
Move ZWJ/ZWNJ bits to top byte of unicode_props()
@@ -155,7 +728,7 @@ Date: Tue Apr 26 16:02:04 2016 -0700
commit de508516cb06ddb064d75bd7be8e843a5ebcf70d
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Apr 26 11:28:37 2016 -0700
+Date: Tue Apr 26 11:28:37 2016 -0700
[util] Print out --debug buffer to stderr
@@ -164,7 +737,7 @@ Date: Tue Apr 26 11:28:37 2016 -0700
commit 29393884b9f045460fb65d6ad10a94461ba93430
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Tue Apr 26 10:35:23 2016 -0700
+Date: Tue Apr 26 10:35:23 2016 -0700
Annotate blacklisted fonts with their sha1sum
@@ -174,7 +747,7 @@ Date: Tue Apr 26 10:35:23 2016 -0700
commit 14bb4a56971fd45063cd6c1288d911627088abb2
Merge: 1c625df 5069062
Author: Sascha Brawer <sascha@brawer.ch>
-Date: Tue Apr 26 11:38:16 2016 +0200
+Date: Tue Apr 26 11:38:16 2016 +0200
Merge pull request #245 from KonstantinRitt/fixes/ce
@@ -182,7 +755,7 @@ Date: Tue Apr 26 11:38:16 2016 +0200
commit 5069062d0a9342bb716eebf3ddc1efad91924caa
Author: Konstantin Ritt <ritt.ks@gmail.com>
-Date: Tue Apr 26 12:02:26 2016 +0400
+Date: Tue Apr 26 12:02:26 2016 +0400
Unbreak build on Windows CE
@@ -194,7 +767,7 @@ Date: Tue Apr 26 12:02:26 2016 +0400
commit 1c625dff2269c54ff429ca45be88893ff1fa6c34
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Sat Apr 9 12:53:23 2016 -0700
+Date: Sat Apr 9 12:53:23 2016 -0700
Minor
@@ -203,7 +776,7 @@ Date: Sat Apr 9 12:53:23 2016 -0700
commit 851b0db36d1b724fc1e0db506445119c78186285
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Apr 8 23:46:55 2016 -0700
+Date: Fri Apr 8 23:46:55 2016 -0700
Minor. We should never get to this branch, but fix it anyway.
@@ -212,17 +785,17 @@ Date: Fri Apr 8 23:46:55 2016 -0700
commit 00ea66f35754a1e6e4d3b7b139d611a9a623a9d1
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Apr 8 13:51:01 2016 -0700
+Date: Fri Apr 8 13:51:01 2016 -0700
1.2.6
- NEWS | 10 ++++++++++
+ NEWS | 10 ++++++++++
configure.ac | 2 +-
2 files changed, 11 insertions(+), 1 deletion(-)
commit 4f3d59a1877dcb94d09da48e9694a6c1b05a86fe
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Apr 8 13:41:20 2016 -0700
+Date: Fri Apr 8 13:41:20 2016 -0700
Blacklist another set of timesi.ttf and timesbi.ttf
@@ -232,7 +805,7 @@ Date: Fri Apr 8 13:41:20 2016 -0700
commit ef476be80d773332e0c768a3465d99381d76edd9
Merge: a0331b5 d3134a6
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Fri Apr 8 13:16:33 2016 -0700
+Date: Fri Apr 8 13:16:33 2016 -0700
Merge pull request #239 from ebraminio/dwfix
@@ -240,7 +813,7 @@ Date: Fri Apr 8 13:16:33 2016 -0700
commit d3134a66ad551ded726db9528d3c25459088f105
Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Tue Apr 5 21:01:05 2016 +0000
+Date: Tue Apr 5 21:01:05 2016 +0000
Fix when no feature is given
@@ -249,29 +822,29 @@ Date: Tue Apr 5 21:01:05 2016 +0000
commit a0331b55f7b45437980e1fc323251f4091bf2c4e
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Apr 4 16:25:32 2016 -0700
+Date: Mon Apr 4 16:25:32 2016 -0700
1.2.5
- NEWS | 7 +++++++
+ NEWS | 7 +++++++
configure.ac | 2 +-
2 files changed, 8 insertions(+), 1 deletion(-)
commit 6e55199b5f097ac93bad38f32e9813e2da14c5a7
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Apr 4 16:24:27 2016 -0700
+Date: Mon Apr 4 16:24:27 2016 -0700
Add test for 6dd80faf0dcb3e8a8915c3a25da44e2a67cb0cd8
- test/shaping/Makefile.am | 1 +
- .../f22416c692720a7d46fadf4af99f4c9e094f00b9.ttf | Bin 0 ->
+ test/shaping/Makefile.am | 1 +
+ .../f22416c692720a7d46fadf4af99f4c9e094f00b9.ttf | Bin 0 ->
16736 bytes
- test/shaping/tests/mark-filtering-sets.tests | 5 +++++
+ test/shaping/tests/mark-filtering-sets.tests | 5 +++++
3 files changed, 6 insertions(+)
commit 59089622dbb8dda783b1639c932123f125c3592d
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Apr 4 14:54:32 2016 -0700
+Date: Mon Apr 4 14:54:32 2016 -0700
[coretext] Clarify comment
@@ -280,7 +853,7 @@ Date: Mon Apr 4 14:54:32 2016 -0700
commit 6dd80faf0dcb3e8a8915c3a25da44e2a67cb0cd8
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Mon Apr 4 14:34:25 2016 -0700
+Date: Mon Apr 4 14:34:25 2016 -0700
Fix FixedVersion::to_int()
@@ -294,7 +867,7 @@ Date: Mon Apr 4 14:34:25 2016 -0700
commit 4a104021697439fd21390a1f4cdc9310348882fa
Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Sat Apr 2 13:47:59 2016 +0000
+Date: Sat Apr 2 13:47:59 2016 +0000
Hide justification behind HB_DIRECTWRITE_EXPERIMENTAL_JUSTIFICATION
@@ -303,7 +876,7 @@ Date: Sat Apr 2 13:47:59 2016 +0000
commit 63ee9ca5d81b53eb035972754ed95572821c393c
Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Fri Apr 1 15:47:07 2016 +0000
+Date: Fri Apr 1 15:47:07 2016 +0000
Use standard types instead Windows favourites ones
@@ -313,7 +886,7 @@ Date: Fri Apr 1 15:47:07 2016 +0000
commit adf20ba0d18d1506e633dcd9b4827a6c93abcadd
Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Fri Apr 1 15:36:40 2016 +0000
+Date: Fri Apr 1 15:36:40 2016 +0000
Limit GetJustifiedGlyphs only to scripts with custom justification
character
@@ -324,7 +897,7 @@ Date: Fri Apr 1 15:36:40 2016 +0000
commit 32ae9d1b3ffbe7e26e654437a56a26a95fe9f5a6
Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Fri Apr 1 06:39:57 2016 +0000
+Date: Fri Apr 1 06:39:57 2016 +0000
Add justification support
@@ -334,7 +907,7 @@ Date: Fri Apr 1 06:39:57 2016 +0000
commit 10c3d9e41520595c88dd2a8321590e03ce8fcf47
Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Thu Mar 31 18:19:44 2016 +0000
+Date: Thu Mar 31 18:19:44 2016 +0000
Basic opentype features support
@@ -344,7 +917,7 @@ Date: Thu Mar 31 18:19:44 2016 +0000
commit d129897120d3ad414220d603557c15a60aa69fa6
Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Thu Mar 31 13:45:37 2016 +0000
+Date: Thu Mar 31 13:45:37 2016 +0000
Refactor and remove dupe getglyphs call
@@ -354,7 +927,7 @@ Date: Thu Mar 31 13:45:37 2016 +0000
commit 5f1a8961008b93f72acc47336109af3a64e248d0
Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Thu Mar 31 12:26:16 2016 +0000
+Date: Thu Mar 31 12:26:16 2016 +0000
Better glyph offset support
@@ -363,7 +936,7 @@ Date: Thu Mar 31 12:26:16 2016 +0000
commit d691ba3f405738c6857450752b8cc0911dfcdb01
Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Wed Mar 30 20:21:40 2016 +0000
+Date: Wed Mar 30 20:21:40 2016 +0000
Don't fail when language is not set
@@ -372,7 +945,7 @@ Date: Wed Mar 30 20:21:40 2016 +0000
commit 1c00a46c7a608ebc0b03c5abfcfe7f2b9881d0df
Author: Ebrahim Byagowi <ebrahim@gnu.org>
-Date: Wed Mar 30 20:15:09 2016 +0000
+Date: Wed Mar 30 20:15:09 2016 +0000
Make DirectWrite backend to work with different font sizes
@@ -383,17 +956,17 @@ Date: Wed Mar 30 20:15:09 2016 +0000
commit 0251b0cc5c39272d2299d4b2ab802faaafe96837
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Mar 17 14:37:11 2016 -0700
+Date: Thu Mar 17 14:37:11 2016 -0700
1.2.4
- NEWS | 15 +++++++++++++++
+ NEWS | 15 +++++++++++++++
configure.ac | 2 +-
2 files changed, 16 insertions(+), 1 deletion(-)
commit 69f9fbc4200442a35484d3c790ae8f4979be5d60
Author: Behdad Esfahbod <behdad@behdad.org>
-Date: Thu Mar 17 11:59:43 2016 -0700
+Date: Thu Mar 17 11:59:43 2016 -0700
Synthesize GDEF glyph class for any glyph that does not have one
in GDEF
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
index e62b1989c5a..6f46119c815 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS
@@ -1,3 +1,18 @@
+Overview of changes leading to 1.3.0
+Thursday, July 21, 2016
+====================================
+
+- Update to Unicode 9.0.0
+- Move Javanese from Indic shaper to Universal Shaping Engine.
+- Allow MultipleSubst to delete a glyph (matching Windows engine).
+- Update Universal Shaping Engine to latest draft from Microsoft.
+- DirectWrite backend improvements. Note: this backend is for testing ONLY.
+- CoreText backend improvements with unreachable fonts.
+- Implement symbol fonts (cmap 3.0.0) in hb-ft and hb-ot-font.
+- Blacklist bad GDEF of more fonts (Tahoma & others).
+- Misc fixes.
+
+
Overview of changes leading to 1.2.7
Monday, May 2, 2016
====================================
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac b/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac
index 5ffd494ad41..e1a28f2d837 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/configure.ac
@@ -1,7 +1,7 @@
AC_PREREQ([2.64])
AC_INIT([HarfBuzz],
- [1.2.7],
- [http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz],
+ [1.3.0],
+ [https://github.com/behdad/harfbuzz/issues/new],
[harfbuzz],
[http://harfbuzz.org/])
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py
index c055163f353..3016cd07b68 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py
@@ -3,10 +3,32 @@
import sys
if len (sys.argv) != 4:
- print >>sys.stderr, "usage: ./gen-indic-table.py IndicSyllabicCategory.txt IndicMatraCategory.txt Blocks.txt"
+ print >>sys.stderr, "usage: ./gen-indic-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt Blocks.txt"
sys.exit (1)
-BLACKLISTED_BLOCKS = ["Thai", "Lao", "Tibetan"]
+ALLOWED_SINGLES = [0x00A0, 0x25CC]
+ALLOWED_BLOCKS = [
+ 'Basic Latin',
+ 'Latin-1 Supplement',
+ 'Devanagari',
+ 'Bengali',
+ 'Gurmukhi',
+ 'Gujarati',
+ 'Oriya',
+ 'Tamil',
+ 'Telugu',
+ 'Kannada',
+ 'Malayalam',
+ 'Sinhala',
+ 'Myanmar',
+ 'Khmer',
+ 'Vedic Extensions',
+ 'General Punctuation',
+ 'Superscripts and Subscripts',
+ 'Devanagari Extended',
+ 'Myanmar Extended-B',
+ 'Myanmar Extended-A',
+]
files = [file (x) for x in sys.argv[1:]]
@@ -50,7 +72,7 @@ for i,d in enumerate (data):
if not u in combined:
combined[u] = list (defaults)
combined[u][i] = v
-combined = {k:v for k,v in combined.items() if v[2] not in BLACKLISTED_BLOCKS}
+combined = {k:v for k,v in combined.items() if k in ALLOWED_SINGLES or v[2] in ALLOWED_BLOCKS}
data = combined
del combined
num = len (data)
@@ -61,7 +83,7 @@ for u in [0x17CD, 0x17CE, 0x17CF, 0x17D0, 0x17D3]:
# Move the outliers NO-BREAK SPACE and DOTTED CIRCLE out
singles = {}
-for u in [0x00A0, 0x25CC]:
+for u in ALLOWED_SINGLES:
singles[u] = data[u]
del data[u]
@@ -69,7 +91,7 @@ print "/* == Start of generated table == */"
print "/*"
print " * The following table is generated by running:"
print " *"
-print " * ./gen-indic-table.py IndicSyllabicCategory.txt IndicMatraCategory.txt Blocks.txt"
+print " * ./gen-indic-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt Blocks.txt"
print " *"
print " * on files with these headers:"
print " *"
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py
index be04e4ba4c5..a922c92faeb 100755
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py
@@ -144,36 +144,38 @@ globals().update(property_values)
def is_BASE(U, UISC, UGC):
return (UISC in [Number, Consonant, Consonant_Head_Letter,
- #SPEC-OUTDATED Consonant_Placeholder,
- Tone_Letter] or
+ #SPEC-DRAFT Consonant_Placeholder,
+ Tone_Letter,
+ Vowel_Independent #SPEC-DRAFT
+ ] or
(UGC == Lo and UISC in [Avagraha, Bindu, Consonant_Final, Consonant_Medial,
Consonant_Subjoined, Vowel, Vowel_Dependent]))
-def is_BASE_VOWEL(U, UISC, UGC):
- return UISC == Vowel_Independent
def is_BASE_IND(U, UISC, UGC):
- #SPEC-BROKEN return (UISC in [Consonant_Dead, Modifying_Letter] or UGC == Po)
+ #SPEC-DRAFT return (UISC in [Consonant_Dead, Modifying_Letter] or UGC == Po)
return (UISC in [Consonant_Dead, Modifying_Letter] or
- (UGC == Po and not is_BASE_OTHER(U, UISC, UGC))) # for 104E
+ (UGC == Po and not U in [0x104E, 0x2022]) or
+ False # SPEC-DRAFT-OUTDATED! U == 0x002D
+ )
def is_BASE_NUM(U, UISC, UGC):
return UISC == Brahmi_Joining_Number
def is_BASE_OTHER(U, UISC, UGC):
- if UISC == Consonant_Placeholder: return True #SPEC-OUTDATED
- return U in [0x00A0, 0x00D7, 0x2015, 0x2022, 0x25CC,
- 0x25FB, 0x25FC, 0x25FD, 0x25FE]
+ if UISC == Consonant_Placeholder: return True #SPEC-DRAFT
+ #SPEC-DRAFT return U in [0x00A0, 0x00D7, 0x2015, 0x2022, 0x25CC, 0x25FB, 0x25FC, 0x25FD, 0x25FE]
+ return U in [0x2015, 0x2022, 0x25FB, 0x25FC, 0x25FD, 0x25FE]
def is_CGJ(U, UISC, UGC):
return U == 0x034F
def is_CONS_FINAL(U, UISC, UGC):
return ((UISC == Consonant_Final and UGC != Lo) or
UISC == Consonant_Succeeding_Repha)
def is_CONS_FINAL_MOD(U, UISC, UGC):
- #SPEC-OUTDATED return UISC in [Consonant_Final_Modifier, Syllable_Modifier]
+ #SPEC-DRAFT return UISC in [Consonant_Final_Modifier, Syllable_Modifier]
return UISC == Syllable_Modifier
def is_CONS_MED(U, UISC, UGC):
return UISC == Consonant_Medial and UGC != Lo
def is_CONS_MOD(U, UISC, UGC):
return UISC in [Nukta, Gemination_Mark, Consonant_Killer]
def is_CONS_SUB(U, UISC, UGC):
- #SPEC-OUTDATED return UISC == Consonant_Subjoined
+ #SPEC-DRAFT return UISC == Consonant_Subjoined
return UISC == Consonant_Subjoined and UGC != Lo
def is_HALANT(U, UISC, UGC):
return UISC in [Virama, Invisible_Stacker]
@@ -200,8 +202,8 @@ def is_REPHA(U, UISC, UGC):
#SPEC-OUTDATED hack to categorize Consonant_With_Stacker and Consonant_Prefixed
return UISC in [Consonant_Preceding_Repha, Consonant_With_Stacker, Consonant_Prefixed]
def is_SYM(U, UISC, UGC):
- if U == 0x25CC: return False #SPEC-OUTDATED
- #SPEC-OUTDATED return UGC in [So, Sc] or UISC == Symbol_Letter
+ if U == 0x25CC: return False #SPEC-DRAFT
+ #SPEC-DRAFT return UGC in [So, Sc] or UISC == Symbol_Letter
return UGC in [So, Sc]
def is_SYM_MOD(U, UISC, UGC):
return U in [0x1B6B, 0x1B6C, 0x1B6D, 0x1B6E, 0x1B6F, 0x1B70, 0x1B71, 0x1B72, 0x1B73]
@@ -216,7 +218,6 @@ def is_VOWEL_MOD(U, UISC, UGC):
use_mapping = {
'B': is_BASE,
- 'IV': is_BASE_VOWEL,
'IND': is_BASE_IND,
'N': is_BASE_NUM,
'GB': is_BASE_OTHER,
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc
index 406db9c84fc..3940a3dbf8e 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc
@@ -52,7 +52,7 @@
*
* Checks the equality of two #hb_segment_properties_t's.
*
- * Return value: (transfer full):
+ * Return value:
* %true if all properties of @a equal those of @b, false otherwise.
*
* Since: 0.9.7
@@ -183,6 +183,12 @@ hb_buffer_t::shift_forward (unsigned int count)
if (unlikely (!ensure (len + count))) return false;
memmove (info + idx + count, info + idx, (len - idx) * sizeof (info[0]));
+ if (idx + count > len)
+ {
+ /* Under memory failure we might expose this area. At least
+ * clean it up. Oh well... */
+ memset (info + len, 0, (idx + count - len) * sizeof (info[0]));
+ }
len += count;
idx += count;
@@ -426,6 +432,8 @@ hb_buffer_t::move_to (unsigned int i)
/* Tricky part: rewinding... */
unsigned int count = out_len - i;
+ /* This will blow in our face if memory allocation fails later
+ * in this same lookup... */
if (unlikely (idx < count && !shift_forward (count + 32))) return false;
assert (idx >= count);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc
index 140ee0a5737..3564e435570 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.cc
@@ -88,7 +88,7 @@ hb_tag_from_string (const char *str, int len)
/**
* hb_tag_to_string:
* @tag:
- * @buf: (array fixed-size=4):
+ * @buf: (out caller-allocates) (array fixed-size=4) (element-type uint8_t):
*
*
*
@@ -507,6 +507,9 @@ hb_script_get_horizontal_direction (hb_script_t script)
/* Unicode-8.0 additions */
case HB_SCRIPT_OLD_HUNGARIAN:
+ /* Unicode-9.0 additions */
+ case HB_SCRIPT_ADLAM:
+
return HB_DIRECTION_RTL;
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h
index 5b0a0b68ccd..2cbee76a8f8 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h
@@ -304,12 +304,22 @@ typedef enum
/*7.0*/ HB_SCRIPT_TIRHUTA = HB_TAG ('T','i','r','h'),
/*7.0*/ HB_SCRIPT_WARANG_CITI = HB_TAG ('W','a','r','a'),
- /*8.0*/ HB_SCRIPT_AHOM = HB_TAG ('A','h','o','m'),
- /*8.0*/ HB_SCRIPT_ANATOLIAN_HIEROGLYPHS = HB_TAG ('H','l','u','w'),
- /*8.0*/ HB_SCRIPT_HATRAN = HB_TAG ('H','a','t','r'),
- /*8.0*/ HB_SCRIPT_MULTANI = HB_TAG ('M','u','l','t'),
- /*8.0*/ HB_SCRIPT_OLD_HUNGARIAN = HB_TAG ('H','u','n','g'),
- /*8.0*/ HB_SCRIPT_SIGNWRITING = HB_TAG ('S','g','n','w'),
+ /*8.0*/ HB_SCRIPT_AHOM = HB_TAG ('A','h','o','m'),
+ /*8.0*/ HB_SCRIPT_ANATOLIAN_HIEROGLYPHS = HB_TAG ('H','l','u','w'),
+ /*8.0*/ HB_SCRIPT_HATRAN = HB_TAG ('H','a','t','r'),
+ /*8.0*/ HB_SCRIPT_MULTANI = HB_TAG ('M','u','l','t'),
+ /*8.0*/ HB_SCRIPT_OLD_HUNGARIAN = HB_TAG ('H','u','n','g'),
+ /*8.0*/ HB_SCRIPT_SIGNWRITING = HB_TAG ('S','g','n','w'),
+
+ /*
+ * Since 1.3.0
+ */
+ /*9.0*/ HB_SCRIPT_ADLAM = HB_TAG ('A','d','l','m'),
+ /*9.0*/ HB_SCRIPT_BHAIKSUKI = HB_TAG ('B','h','k','s'),
+ /*9.0*/ HB_SCRIPT_MARCHEN = HB_TAG ('M','a','r','c'),
+ /*9.0*/ HB_SCRIPT_OSAGE = HB_TAG ('O','s','g','e'),
+ /*9.0*/ HB_SCRIPT_TANGUT = HB_TAG ('T','a','n','g'),
+ /*9.0*/ HB_SCRIPT_NEWA = HB_TAG ('N','e','w','a'),
/* No script set. */
HB_SCRIPT_INVALID = HB_TAG_NONE,
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc
index e64d2651a5e..f4d9716e9e3 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc
@@ -145,6 +145,7 @@ create_ct_font (CGFontRef cg_font, CGFloat font_size)
DEBUG_MSG (CORETEXT, cg_font, "Font CTFontCreateWithGraphicsFont() failed");
return NULL;
}
+ CFURLRef original_url = (CFURLRef)CTFontCopyAttribute(ct_font, kCTFontURLAttribute);
/* Create font copy with cascade list that has LastResort first; this speeds up CoreText
* font fallback which we don't need anyway. */
@@ -154,14 +155,35 @@ create_ct_font (CGFontRef cg_font, CGFloat font_size)
CFRelease (last_resort_font_desc);
if (new_ct_font)
{
- CFRelease (ct_font);
- ct_font = new_ct_font;
+ /* The CTFontCreateCopyWithAttributes call fails to stay on the same font
+ * when reconfiguring the cascade list and may switch to a different font
+ * when there are fonts that go by the same name, since the descriptor is
+ * just name and size.
+ *
+ * Avoid reconfiguring the cascade lists if the new font is outside the
+ * system locations that we cannot access from the sandboxed renderer
+ * process in Blink. This can be detected by the new file URL location
+ * that the newly found font points to. */
+ CFURLRef new_url = (CFURLRef) CTFontCopyAttribute (new_ct_font, kCTFontURLAttribute);
+ // Keep reconfigured font if URL cannot be retrieved (seems to be the case
+ // on Mac OS 10.12 Sierra), speculative fix for crbug.com/625606
+ if (!original_url || !new_url || CFEqual (original_url, new_url)) {
+ CFRelease (ct_font);
+ ct_font = new_ct_font;
+ } else {
+ CFRelease (new_ct_font);
+ DEBUG_MSG (CORETEXT, ct_font, "Discarding reconfigured CTFont, location changed.");
+ }
+ if (new_url)
+ CFRelease (new_url);
}
else
DEBUG_MSG (CORETEXT, ct_font, "Font copy with empty cascade list failed");
}
- return ct_font;
+ if (original_url)
+ CFRelease (original_url);
+ return ct_font;
}
struct hb_coretext_shaper_face_data_t {
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc
index 96d1870a0fb..09889d04ec5 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.cc
@@ -25,11 +25,7 @@
#define HB_SHAPER directwrite
#include "hb-shaper-impl-private.hh"
-#ifndef HB_DIRECTWRITE_EXPERIMENTAL_JUSTIFICATION
- #include <DWrite.h>
-#else
- #include <DWrite_1.h>
-#endif
+#include <DWrite_1.h>
#include "hb-directwrite.h"
@@ -45,176 +41,189 @@
HB_SHAPER_DATA_ENSURE_DECLARE(directwrite, face)
HB_SHAPER_DATA_ENSURE_DECLARE(directwrite, font)
-/*
-* shaper face data
-*/
-struct hb_directwrite_shaper_face_data_t {
- HANDLE fh;
- wchar_t face_name[LF_FACESIZE];
-};
+/*
+ * DirectWrite font stream helpers
+ */
-/* face_name should point to a wchar_t[LF_FACESIZE] object. */
-static void
-_hb_generate_unique_face_name(wchar_t *face_name, unsigned int *plen)
+// This is a font loader which provides only one font (unlike its original design).
+// For a better implementation which was also source of this
+// and DWriteFontFileStream, have a look at to NativeFontResourceDWrite.cpp in Mozilla
+class DWriteFontFileLoader : public IDWriteFontFileLoader
{
- /* We'll create a private name for the font from a UUID using a simple,
- * somewhat base64-like encoding scheme */
- const char *enc = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-";
- UUID id;
- UuidCreate ((UUID*)&id);
- ASSERT_STATIC (2 + 3 * (16 / 2) < LF_FACESIZE);
- unsigned int name_str_len = 0;
- face_name[name_str_len++] = 'F';
- face_name[name_str_len++] = '_';
- unsigned char *p = (unsigned char *)&id;
- for (unsigned int i = 0; i < 16; i += 2)
- {
- /* Spread the 16 bits from two bytes of the UUID across three chars of face_name,
- * using the bits in groups of 5,5,6 to select chars from enc.
- * This will generate 24 characters; with the 'F_' prefix we already provided,
- * the name will be 26 chars (plus the NUL terminator), so will always fit within
- * face_name (LF_FACESIZE = 32). */
- face_name[name_str_len++] = enc[p[i] >> 3];
- face_name[name_str_len++] = enc[((p[i] << 2) | (p[i + 1] >> 6)) & 0x1f];
- face_name[name_str_len++] = enc[p[i + 1] & 0x3f];
- }
- face_name[name_str_len] = 0;
- if (plen)
- *plen = name_str_len;
-}
+private:
+ IDWriteFontFileStream *mFontFileStream;
+public:
+ DWriteFontFileLoader (IDWriteFontFileStream *fontFileStream) {
+ mFontFileStream = fontFileStream;
+ }
-/* Destroys blob. */
-static hb_blob_t *
-_hb_rename_font(hb_blob_t *blob, wchar_t *new_name)
-{
- /* Create a copy of the font data, with the 'name' table replaced by a
- * table that names the font with our private F_* name created above.
- * For simplicity, we just append a new 'name' table and update the
- * sfnt directory; the original table is left in place, but unused.
- *
- * The new table will contain just 5 name IDs: family, style, unique,
- * full, PS. All of them point to the same name data with our unique name.
- */
+ // IUnknown interface
+ IFACEMETHOD(QueryInterface)(IID const& iid, OUT void** ppObject) { return S_OK; }
+ IFACEMETHOD_(ULONG, AddRef)() { return 1; }
+ IFACEMETHOD_(ULONG, Release)() { return 1; }
- blob = OT::Sanitizer<OT::OpenTypeFontFile>::sanitize (blob);
+ // IDWriteFontFileLoader methods
+ virtual HRESULT STDMETHODCALLTYPE CreateStreamFromKey(void const* fontFileReferenceKey,
+ UINT32 fontFileReferenceKeySize,
+ OUT IDWriteFontFileStream** fontFileStream)
+ {
+ *fontFileStream = mFontFileStream;
+ return S_OK;
+ }
+};
- unsigned int length, new_length, name_str_len;
- const char *orig_sfnt_data = hb_blob_get_data (blob, &length);
+class DWriteFontFileStream : public IDWriteFontFileStream
+{
+private:
+ uint8_t *mData;
+ uint32_t mSize;
+public:
+ DWriteFontFileStream(uint8_t *aData, uint32_t aSize)
+ {
+ mData = aData;
+ mSize = aSize;
+ }
- _hb_generate_unique_face_name (new_name, &name_str_len);
+ // IUnknown interface
+ IFACEMETHOD(QueryInterface)(IID const& iid, OUT void** ppObject) { return S_OK; }
+ IFACEMETHOD_(ULONG, AddRef)() { return 1; }
+ IFACEMETHOD_(ULONG, Release)() { return 1; }
- static const uint16_t name_IDs[] = { 1, 2, 3, 4, 6 };
+ // IDWriteFontFileStream methods
+ virtual HRESULT STDMETHODCALLTYPE ReadFileFragment(void const** fragmentStart,
+ UINT64 fileOffset,
+ UINT64 fragmentSize,
+ OUT void** fragmentContext)
+ {
+ // We are required to do bounds checking.
+ if (fileOffset + fragmentSize > mSize) {
+ return E_FAIL;
+ }
- unsigned int name_table_length = OT::name::min_size +
- ARRAY_LENGTH(name_IDs) * OT::NameRecord::static_size +
- name_str_len * 2; /* for name data in UTF16BE form */
- unsigned int name_table_offset = (length + 3) & ~3;
+ // truncate the 64 bit fileOffset to size_t sized index into mData
+ size_t index = static_cast<size_t> (fileOffset);
- new_length = name_table_offset + ((name_table_length + 3) & ~3);
- void *new_sfnt_data = calloc(1, new_length);
- if (!new_sfnt_data)
- {
- hb_blob_destroy (blob);
- return NULL;
+ // We should be alive for the duration of this.
+ *fragmentStart = &mData[index];
+ *fragmentContext = nullptr;
+ return S_OK;
}
- memcpy(new_sfnt_data, orig_sfnt_data, length);
+ virtual void STDMETHODCALLTYPE ReleaseFileFragment(void* fragmentContext) { }
- OT::name &name = OT::StructAtOffset<OT::name> (new_sfnt_data, name_table_offset);
- name.format.set (0);
- name.count.set (ARRAY_LENGTH (name_IDs));
- name.stringOffset.set (name.get_size());
- for (unsigned int i = 0; i < ARRAY_LENGTH (name_IDs); i++)
+ virtual HRESULT STDMETHODCALLTYPE GetFileSize(OUT UINT64* fileSize)
{
- OT::NameRecord &record = name.nameRecord[i];
- record.platformID.set(3);
- record.encodingID.set(1);
- record.languageID.set(0x0409u); /* English */
- record.nameID.set(name_IDs[i]);
- record.length.set(name_str_len * 2);
- record.offset.set(0);
- }
-
- /* Copy string data from new_name, converting wchar_t to UTF16BE. */
- unsigned char *p = &OT::StructAfter<unsigned char>(name);
- for (unsigned int i = 0; i < name_str_len; i++)
- {
- *p++ = new_name[i] >> 8;
- *p++ = new_name[i] & 0xff;
+ *fileSize = mSize;
+ return S_OK;
}
- /* Adjust name table entry to point to new name table */
- const OT::OpenTypeFontFile &file = *(OT::OpenTypeFontFile *) (new_sfnt_data);
- unsigned int face_count = file.get_face_count ();
- for (unsigned int face_index = 0; face_index < face_count; face_index++)
+ virtual HRESULT STDMETHODCALLTYPE GetLastWriteTime(OUT UINT64* lastWriteTime)
{
- /* Note: doing multiple edits (ie. TTC) can be unsafe. There may be
- * toe-stepping. But we don't really care. */
- const OT::OpenTypeFontFace &face = file.get_face (face_index);
- unsigned int index;
- if (face.find_table_index (HB_OT_TAG_name, &index))
- {
- OT::TableRecord &record = const_cast<OT::TableRecord &> (face.get_table (index));
- record.checkSum.set_for_data (&name, name_table_length);
- record.offset.set (name_table_offset);
- record.length.set (name_table_length);
- }
- else if (face_index == 0) /* Fail if first face doesn't have 'name' table. */
- {
- free (new_sfnt_data);
- hb_blob_destroy (blob);
- return NULL;
- }
+ return E_NOTIMPL;
}
+};
- /* The checkSumAdjustment field in the 'head' table is now wrong,
- * but that doesn't actually seem to cause any problems so we don't
- * bother. */
- hb_blob_destroy (blob);
- return hb_blob_create ((const char *)new_sfnt_data, new_length,
- HB_MEMORY_MODE_WRITABLE, NULL, free);
-}
+/*
+* shaper face data
+*/
+
+struct hb_directwrite_shaper_face_data_t {
+ IDWriteFactory *dwriteFactory;
+ IDWriteFontFile *fontFile;
+ IDWriteFontFileStream *fontFileStream;
+ IDWriteFontFileLoader *fontFileLoader;
+ IDWriteFontFace *fontFace;
+ hb_blob_t *faceBlob;
+};
hb_directwrite_shaper_face_data_t *
_hb_directwrite_shaper_face_data_create(hb_face_t *face)
{
hb_directwrite_shaper_face_data_t *data =
- (hb_directwrite_shaper_face_data_t *) calloc (1, sizeof (hb_directwrite_shaper_face_data_t));
+ (hb_directwrite_shaper_face_data_t *) malloc (sizeof (hb_directwrite_shaper_face_data_t));
if (unlikely (!data))
return NULL;
+ // TODO: factory and fontFileLoader should be cached separately
+ IDWriteFactory* dwriteFactory;
+ DWriteCreateFactory (
+ DWRITE_FACTORY_TYPE_SHARED,
+ __uuidof (IDWriteFactory),
+ (IUnknown**) &dwriteFactory
+ );
+
+ HRESULT hr;
hb_blob_t *blob = hb_face_reference_blob (face);
- if (unlikely (!hb_blob_get_length (blob)))
- DEBUG_MSG(DIRECTWRITE, face, "Face has empty blob");
+ IDWriteFontFileStream *fontFileStream = new DWriteFontFileStream (
+ (uint8_t*) hb_blob_get_data (blob, NULL), hb_blob_get_length (blob));
- blob = _hb_rename_font (blob, data->face_name);
- if (unlikely (!blob))
- {
- free(data);
- return NULL;
+ IDWriteFontFileLoader *fontFileLoader = new DWriteFontFileLoader (fontFileStream);
+ dwriteFactory->RegisterFontFileLoader (fontFileLoader);
+
+ IDWriteFontFile *fontFile;
+ uint64_t fontFileKey = 0;
+ hr = dwriteFactory->CreateCustomFontFileReference (&fontFileKey, sizeof (fontFileKey),
+ fontFileLoader, &fontFile);
+
+#define FAIL(...) \
+ HB_STMT_START { \
+ DEBUG_MSG (DIRECTWRITE, NULL, __VA_ARGS__); \
+ return false; \
+ } HB_STMT_END;
+
+ if (FAILED (hr)) {
+ FAIL ("Failed to load font file from data!");
+ return false;
}
- DWORD num_fonts_installed;
- data->fh = AddFontMemResourceEx ((void *)hb_blob_get_data(blob, NULL),
- hb_blob_get_length (blob),
- 0, &num_fonts_installed);
- if (unlikely (!data->fh))
- {
- DEBUG_MSG (DIRECTWRITE, face, "Face AddFontMemResourceEx() failed");
- free (data);
- return NULL;
+ BOOL isSupported;
+ DWRITE_FONT_FILE_TYPE fileType;
+ DWRITE_FONT_FACE_TYPE faceType;
+ UINT32 numberOfFaces;
+ hr = fontFile->Analyze (&isSupported, &fileType, &faceType, &numberOfFaces);
+ if (FAILED (hr) || !isSupported) {
+ FAIL ("Font file is not supported.");
+ return false;
}
+#undef FAIL
+
+ IDWriteFontFace *fontFace;
+ dwriteFactory->CreateFontFace (faceType, 1, &fontFile, 0,
+ DWRITE_FONT_SIMULATIONS_NONE, &fontFace);
+
+ data->dwriteFactory = dwriteFactory;
+ data->fontFile = fontFile;
+ data->fontFileStream = fontFileStream;
+ data->fontFileLoader = fontFileLoader;
+ data->fontFace = fontFace;
+ data->faceBlob = blob;
+
return data;
}
void
_hb_directwrite_shaper_face_data_destroy(hb_directwrite_shaper_face_data_t *data)
{
- RemoveFontMemResourceEx(data->fh);
- free(data);
+ if (data->fontFace)
+ data->fontFace->Release ();
+ if (data->fontFile)
+ data->fontFile->Release ();
+ if (data->dwriteFactory) {
+ if (data->fontFileLoader)
+ data->dwriteFactory->UnregisterFontFileLoader(data->fontFileLoader);
+ data->dwriteFactory->Release();
+ }
+ if (data->fontFileLoader)
+ delete data->fontFileLoader;
+ if (data->fontFileStream)
+ delete data->fontFileStream;
+ if (data->faceBlob)
+ hb_blob_destroy (data->faceBlob);
+ if (data)
+ free (data);
}
@@ -223,90 +232,27 @@ _hb_directwrite_shaper_face_data_destroy(hb_directwrite_shaper_face_data_t *data
*/
struct hb_directwrite_shaper_font_data_t {
- HDC hdc;
- LOGFONTW log_font;
- HFONT hfont;
};
-static bool
-populate_log_font (LOGFONTW *lf,
- hb_font_t *font)
-{
- memset (lf, 0, sizeof (*lf));
- lf->lfHeight = -font->y_scale;
- lf->lfCharSet = DEFAULT_CHARSET;
-
- hb_face_t *face = font->face;
- hb_directwrite_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face);
-
- memcpy (lf->lfFaceName, face_data->face_name, sizeof (lf->lfFaceName));
-
- return true;
-}
-
hb_directwrite_shaper_font_data_t *
_hb_directwrite_shaper_font_data_create (hb_font_t *font)
{
if (unlikely (!hb_directwrite_shaper_face_data_ensure (font->face))) return NULL;
hb_directwrite_shaper_font_data_t *data =
- (hb_directwrite_shaper_font_data_t *) calloc (1, sizeof (hb_directwrite_shaper_font_data_t));
+ (hb_directwrite_shaper_font_data_t *) malloc (sizeof (hb_directwrite_shaper_font_data_t));
if (unlikely (!data))
return NULL;
- data->hdc = GetDC (NULL);
-
- if (unlikely (!populate_log_font (&data->log_font, font)))
- {
- DEBUG_MSG (DIRECTWRITE, font, "Font populate_log_font() failed");
- _hb_directwrite_shaper_font_data_destroy (data);
- return NULL;
- }
-
- data->hfont = CreateFontIndirectW (&data->log_font);
- if (unlikely (!data->hfont))
- {
- DEBUG_MSG (DIRECTWRITE, font, "Font CreateFontIndirectW() failed");
- _hb_directwrite_shaper_font_data_destroy (data);
- return NULL;
- }
-
- if (!SelectObject (data->hdc, data->hfont))
- {
- DEBUG_MSG (DIRECTWRITE, font, "Font SelectObject() failed");
- _hb_directwrite_shaper_font_data_destroy (data);
- return NULL;
- }
-
return data;
}
void
_hb_directwrite_shaper_font_data_destroy (hb_directwrite_shaper_font_data_t *data)
{
- if (data->hdc)
- ReleaseDC (NULL, data->hdc);
- if (data->hfont)
- DeleteObject (data->hfont);
free (data);
}
-LOGFONTW *
-hb_directwrite_font_get_logfontw (hb_font_t *font)
-{
- if (unlikely (!hb_directwrite_shaper_font_data_ensure (font))) return NULL;
- hb_directwrite_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font);
- return &font_data->log_font;
-}
-
-HFONT
-hb_directwrite_font_get_hfont (hb_font_t *font)
-{
- if (unlikely (!hb_directwrite_shaper_font_data_ensure (font))) return NULL;
- hb_directwrite_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font);
- return font_data->hfont;
-}
-
/*
* shaper shape_plan data
@@ -327,7 +273,7 @@ _hb_directwrite_shaper_shape_plan_data_destroy (hb_directwrite_shaper_shape_plan
{
}
-// Most of here TextAnalysis is originally written by Bas Schouten for Mozilla project
+// Most of TextAnalysis is originally written by Bas Schouten for Mozilla project
// but now is relicensed to MIT for HarfBuzz use
class TextAnalysis
: public IDWriteTextAnalysisSource, public IDWriteTextAnalysisSink
@@ -444,7 +390,8 @@ public:
IFACEMETHODIMP GetLocaleName(uint32_t textPosition,
uint32_t* textLength,
- wchar_t const** localeName) {
+ wchar_t const** localeName)
+ {
return S_OK;
}
@@ -469,7 +416,8 @@ public:
{
SetCurrentRun(textPosition);
SplitCurrentRun(textPosition);
- while (textLength > 0) {
+ while (textLength > 0)
+ {
Run *run = FetchNextRun(&textLength);
run->mScript = *scriptAnalysis;
}
@@ -502,10 +450,12 @@ protected:
Run *origRun = mCurrentRun;
// Split the tail if needed (the length remaining is less than the
// current run's size).
- if (*textLength < mCurrentRun->mTextLength) {
- SplitCurrentRun(mCurrentRun->mTextStart + *textLength);
+ if (*textLength < mCurrentRun->mTextLength)
+ {
+ SplitCurrentRun (mCurrentRun->mTextStart + *textLength);
}
- else {
+ else
+ {
// Just advance the current run.
mCurrentRun = mCurrentRun->nextRun;
}
@@ -522,12 +472,14 @@ protected:
// this will usually just return early. If not, find the
// corresponding run for the text position.
- if (mCurrentRun && mCurrentRun->ContainsTextPosition(textPosition)) {
+ if (mCurrentRun && mCurrentRun->ContainsTextPosition (textPosition))
+ {
return;
}
for (Run *run = &mRunHead; run; run = run->nextRun) {
- if (run->ContainsTextPosition(textPosition)) {
+ if (run->ContainsTextPosition (textPosition))
+ {
mCurrentRun = run;
return;
}
@@ -538,13 +490,15 @@ protected:
void SplitCurrentRun(uint32_t splitPosition)
{
- if (!mCurrentRun) {
+ if (!mCurrentRun)
+ {
//NS_ASSERTION(false, "SplitCurrentRun called without current run.");
// Shouldn't be calling this when no current run is set!
return;
}
// Split the current run.
- if (splitPosition <= mCurrentRun->mTextStart) {
+ if (splitPosition <= mCurrentRun->mTextStart)
+ {
// No need to split, already the start of a run
// or before it. Usually the first.
return;
@@ -600,32 +554,11 @@ _hb_directwrite_shape(hb_shape_plan_t *shape_plan,
hb_face_t *face = font->face;
hb_directwrite_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face);
hb_directwrite_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font);
+ IDWriteFactory *dwriteFactory = face_data->dwriteFactory;
+ IDWriteFontFace *fontFace = face_data->fontFace;
- // factory probably should be cached
-#ifndef HB_DIRECTWRITE_EXPERIMENTAL_JUSTIFICATION
- IDWriteFactory* dwriteFactory;
-#else
- IDWriteFactory1* dwriteFactory;
-#endif
- DWriteCreateFactory (
- DWRITE_FACTORY_TYPE_SHARED,
- __uuidof (IDWriteFactory),
- (IUnknown**) &dwriteFactory
- );
-
- IDWriteGdiInterop *gdiInterop;
- dwriteFactory->GetGdiInterop (&gdiInterop);
- IDWriteFontFace* fontFace;
- gdiInterop->CreateFontFaceFromHdc (font_data->hdc, &fontFace);
-
-#ifndef HB_DIRECTWRITE_EXPERIMENTAL_JUSTIFICATION
IDWriteTextAnalyzer* analyzer;
dwriteFactory->CreateTextAnalyzer(&analyzer);
-#else
- IDWriteTextAnalyzer* analyzer0;
- dwriteFactory->CreateTextAnalyzer (&analyzer0);
- IDWriteTextAnalyzer1* analyzer = (IDWriteTextAnalyzer1*) analyzer0;
-#endif
unsigned int scratch_size;
hb_buffer_t::scratch_buffer_t *scratch = buffer->get_scratch_buffer (&scratch_size);
@@ -672,7 +605,6 @@ _hb_directwrite_shape(hb_shape_plan_t *shape_plan,
}
}
- HRESULT hr;
// TODO: Handle TEST_DISABLE_OPTIONAL_LIGATURES
DWRITE_READING_DIRECTION readingDirection = buffer->props.direction ?
@@ -688,6 +620,7 @@ _hb_directwrite_shape(hb_shape_plan_t *shape_plan,
TextAnalysis analysis(textString, textLength, NULL, readingDirection);
TextAnalysis::Run *runHead;
+ HRESULT hr;
hr = analysis.GenerateResults(analyzer, &runHead);
#define FAIL(...) \
@@ -731,11 +664,11 @@ _hb_directwrite_shape(hb_shape_plan_t *shape_plan,
(const DWRITE_TYPOGRAPHIC_FEATURES*) &singleFeatures;
const uint32_t featureRangeLengths[] = { textLength };
+ uint16_t* clusterMap = (uint16_t*) malloc (textLength * sizeof (uint16_t));
+ DWRITE_SHAPING_TEXT_PROPERTIES* textProperties = (DWRITE_SHAPING_TEXT_PROPERTIES*)
+ malloc (textLength * sizeof (DWRITE_SHAPING_TEXT_PROPERTIES));
retry_getglyphs:
- uint16_t* clusterMap = (uint16_t*) malloc (maxGlyphCount * sizeof (uint16_t));
uint16_t* glyphIndices = (uint16_t*) malloc (maxGlyphCount * sizeof (uint16_t));
- DWRITE_SHAPING_TEXT_PROPERTIES* textProperties = (DWRITE_SHAPING_TEXT_PROPERTIES*)
- malloc (maxGlyphCount * sizeof (DWRITE_SHAPING_TEXT_PROPERTIES));
DWRITE_SHAPING_GLYPH_PROPERTIES* glyphProperties = (DWRITE_SHAPING_GLYPH_PROPERTIES*)
malloc (maxGlyphCount * sizeof (DWRITE_SHAPING_GLYPH_PROPERTIES));
@@ -746,9 +679,7 @@ retry_getglyphs:
if (unlikely (hr == HRESULT_FROM_WIN32 (ERROR_INSUFFICIENT_BUFFER)))
{
- free (clusterMap);
free (glyphIndices);
- free (textProperties);
free (glyphProperties);
maxGlyphCount *= 2;
@@ -799,106 +730,109 @@ retry_getglyphs:
return false;
}
-#ifdef HB_DIRECTWRITE_EXPERIMENTAL_JUSTIFICATION
+ // TODO: get lineWith from somewhere
+ float lineWidth = 0;
- DWRITE_JUSTIFICATION_OPPORTUNITY* justificationOpportunities =
- (DWRITE_JUSTIFICATION_OPPORTUNITY*)
- malloc (maxGlyphCount * sizeof (DWRITE_JUSTIFICATION_OPPORTUNITY));
- hr = analyzer->GetJustificationOpportunities (fontFace, fontEmSize,
- runHead->mScript, textLength, glyphCount, textString, clusterMap,
- glyphProperties, justificationOpportunities);
+ IDWriteTextAnalyzer1* analyzer1;
+ analyzer->QueryInterface (&analyzer1);
- if (FAILED (hr))
+ if (analyzer1 && lineWidth)
{
- FAIL ("Analyzer failed to get justification opportunities.");
- return false;
- }
- // TODO: get lineWith from somewhere
- float lineWidth = 60000;
+ DWRITE_JUSTIFICATION_OPPORTUNITY* justificationOpportunities =
+ (DWRITE_JUSTIFICATION_OPPORTUNITY*)
+ malloc (maxGlyphCount * sizeof (DWRITE_JUSTIFICATION_OPPORTUNITY));
+ hr = analyzer1->GetJustificationOpportunities (fontFace, fontEmSize,
+ runHead->mScript, textLength, glyphCount, textString, clusterMap,
+ glyphProperties, justificationOpportunities);
- float* justifiedGlyphAdvances =
- (float*) malloc (maxGlyphCount * sizeof (float));
- DWRITE_GLYPH_OFFSET* justifiedGlyphOffsets = (DWRITE_GLYPH_OFFSET*)
- malloc (glyphCount * sizeof (DWRITE_GLYPH_OFFSET));
- hr = analyzer->JustifyGlyphAdvances (lineWidth, glyphCount, justificationOpportunities,
- glyphAdvances, glyphOffsets, justifiedGlyphAdvances, justifiedGlyphOffsets);
+ if (FAILED (hr))
+ {
+ FAIL ("Analyzer failed to get justification opportunities.");
+ return false;
+ }
- if (FAILED (hr))
- {
- FAIL ("Analyzer failed to get justified glyph advances.");
- return false;
- }
+ float* justifiedGlyphAdvances =
+ (float*) malloc (maxGlyphCount * sizeof (float));
+ DWRITE_GLYPH_OFFSET* justifiedGlyphOffsets = (DWRITE_GLYPH_OFFSET*)
+ malloc (glyphCount * sizeof (DWRITE_GLYPH_OFFSET));
+ hr = analyzer1->JustifyGlyphAdvances (lineWidth, glyphCount, justificationOpportunities,
+ glyphAdvances, glyphOffsets, justifiedGlyphAdvances, justifiedGlyphOffsets);
- DWRITE_SCRIPT_PROPERTIES scriptProperties;
- hr = analyzer->GetScriptProperties (runHead->mScript, &scriptProperties);
- if (FAILED (hr))
- {
- FAIL ("Analyzer failed to get script properties.");
- return false;
- }
- uint32_t justificationCharacter = scriptProperties.justificationCharacter;
+ if (FAILED (hr))
+ {
+ FAIL("Analyzer failed to get justified glyph advances.");
+ return false;
+ }
- // if a script justificationCharacter is not space, it can have GetJustifiedGlyphs
- if (justificationCharacter != 32)
- {
-retry_getjustifiedglyphs:
- uint16_t* modifiedClusterMap = (uint16_t*) malloc (maxGlyphCount * sizeof (uint16_t));
- uint16_t* modifiedGlyphIndices = (uint16_t*) malloc (maxGlyphCount * sizeof (uint16_t));
- float* modifiedGlyphAdvances = (float*) malloc (maxGlyphCount * sizeof (float));
- DWRITE_GLYPH_OFFSET* modifiedGlyphOffsets = (DWRITE_GLYPH_OFFSET*)
- malloc (maxGlyphCount * sizeof (DWRITE_GLYPH_OFFSET));
- uint32_t actualGlyphsCount;
- hr = analyzer->GetJustifiedGlyphs (fontFace, fontEmSize, runHead->mScript,
+ DWRITE_SCRIPT_PROPERTIES scriptProperties;
+ hr = analyzer1->GetScriptProperties (runHead->mScript, &scriptProperties);
+ if (FAILED (hr))
+ {
+ FAIL("Analyzer failed to get script properties.");
+ return false;
+ }
+ uint32_t justificationCharacter = scriptProperties.justificationCharacter;
+
+ // if a script justificationCharacter is not space, it can have GetJustifiedGlyphs
+ if (justificationCharacter != 32)
+ {
+ uint16_t* modifiedClusterMap = (uint16_t*) malloc (textLength * sizeof (uint16_t));
+ retry_getjustifiedglyphs:
+ uint16_t* modifiedGlyphIndices = (uint16_t*) malloc (maxGlyphCount * sizeof (uint16_t));
+ float* modifiedGlyphAdvances = (float*) malloc (maxGlyphCount * sizeof (float));
+ DWRITE_GLYPH_OFFSET* modifiedGlyphOffsets = (DWRITE_GLYPH_OFFSET*)
+ malloc (maxGlyphCount * sizeof (DWRITE_GLYPH_OFFSET));
+ uint32_t actualGlyphsCount;
+ hr = analyzer1->GetJustifiedGlyphs (fontFace, fontEmSize, runHead->mScript,
textLength, glyphCount, maxGlyphCount, clusterMap, glyphIndices,
glyphAdvances, justifiedGlyphAdvances, justifiedGlyphOffsets,
glyphProperties, &actualGlyphsCount, modifiedClusterMap, modifiedGlyphIndices,
modifiedGlyphAdvances, modifiedGlyphOffsets);
- if (hr == HRESULT_FROM_WIN32 (ERROR_INSUFFICIENT_BUFFER))
- {
- maxGlyphCount = actualGlyphsCount;
- free (modifiedClusterMap);
- free (modifiedGlyphIndices);
- free (modifiedGlyphAdvances);
- free (modifiedGlyphOffsets);
+ if (hr == HRESULT_FROM_WIN32 (ERROR_INSUFFICIENT_BUFFER))
+ {
+ maxGlyphCount = actualGlyphsCount;
+ free (modifiedGlyphIndices);
+ free (modifiedGlyphAdvances);
+ free (modifiedGlyphOffsets);
- maxGlyphCount = actualGlyphsCount;
+ maxGlyphCount = actualGlyphsCount;
- goto retry_getjustifiedglyphs;
- }
- if (FAILED (hr))
- {
- FAIL ("Analyzer failed to get justified glyphs.");
- return false;
- }
+ goto retry_getjustifiedglyphs;
+ }
+ if (FAILED (hr))
+ {
+ FAIL ("Analyzer failed to get justified glyphs.");
+ return false;
+ }
- free (clusterMap);
- free (glyphIndices);
- free (glyphAdvances);
- free (glyphOffsets);
+ free (clusterMap);
+ free (glyphIndices);
+ free (glyphAdvances);
+ free (glyphOffsets);
- glyphCount = actualGlyphsCount;
- clusterMap = modifiedClusterMap;
- glyphIndices = modifiedGlyphIndices;
- glyphAdvances = modifiedGlyphAdvances;
- glyphOffsets = modifiedGlyphOffsets;
+ glyphCount = actualGlyphsCount;
+ clusterMap = modifiedClusterMap;
+ glyphIndices = modifiedGlyphIndices;
+ glyphAdvances = modifiedGlyphAdvances;
+ glyphOffsets = modifiedGlyphOffsets;
- free(justifiedGlyphAdvances);
- free(justifiedGlyphOffsets);
- }
- else
- {
- free(glyphAdvances);
- free(glyphOffsets);
+ free (justifiedGlyphAdvances);
+ free (justifiedGlyphOffsets);
+ }
+ else
+ {
+ free (glyphAdvances);
+ free (glyphOffsets);
- glyphAdvances = justifiedGlyphAdvances;
- glyphOffsets = justifiedGlyphOffsets;
- }
+ glyphAdvances = justifiedGlyphAdvances;
+ glyphOffsets = justifiedGlyphOffsets;
+ }
- free(justificationOpportunities);
+ free (justificationOpportunities);
-#endif
+ }
/* Ok, we've got everything we need, now compose output buffer,
* very, *very*, carefully! */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.h
index adf33dfe9f0..0e1b4799dc9 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-directwrite.h
@@ -31,4 +31,4 @@ HB_BEGIN_DECLS
HB_END_DECLS
-#endif /* HB_UNISCRIBE_H */
+#endif /* HB_DIRECTWRITE_H */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font-private.hh
index 8da40a992e9..0b755779490 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font-private.hh
@@ -505,7 +505,13 @@ struct hb_font_t {
}
private:
- inline hb_position_t em_scale (int16_t v, int scale) { return (hb_position_t) (v * (int64_t) scale / face->get_upem ()); }
+ inline hb_position_t em_scale (int16_t v, int scale)
+ {
+ int upem = face->get_upem ();
+ int64_t scaled = v * (int64_t) scale;
+ scaled += scaled >= 0 ? upem/2 : -upem/2; /* Round. */
+ return (hb_position_t) (scaled / upem);
+ }
};
#define HB_SHAPER_DATA_CREATE_FUNC_EXTRA_ARGS
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc
index 6a4823ab5f4..60554b9c786 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-font.cc
@@ -158,6 +158,7 @@ hb_font_get_glyph_v_advance_nil (hb_font_t *font HB_UNUSED,
hb_codepoint_t glyph,
void *user_data HB_UNUSED)
{
+ /* TODO use font_extents.ascender+descender */
return font->y_scale;
}
static hb_position_t
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc
index 2cad8c26495..eaa1311d445 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc
@@ -70,11 +70,12 @@ struct hb_ft_font_t
{
FT_Face ft_face;
int load_flags;
+ bool symbol; /* Whether selected cmap is symbol cmap. */
bool unref; /* Whether to destroy ft_face when done. */
};
static hb_ft_font_t *
-_hb_ft_font_create (FT_Face ft_face, bool unref)
+_hb_ft_font_create (FT_Face ft_face, bool symbol, bool unref)
{
hb_ft_font_t *ft_font = (hb_ft_font_t *) calloc (1, sizeof (hb_ft_font_t));
@@ -82,6 +83,7 @@ _hb_ft_font_create (FT_Face ft_face, bool unref)
return NULL;
ft_font->ft_face = ft_face;
+ ft_font->symbol = symbol;
ft_font->unref = unref;
ft_font->load_flags = FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING;
@@ -90,10 +92,16 @@ _hb_ft_font_create (FT_Face ft_face, bool unref)
}
static void
+_hb_ft_face_destroy (FT_Face ft_face)
+{
+ FT_Done_Face (ft_face);
+}
+
+static void
_hb_ft_font_destroy (hb_ft_font_t *ft_font)
{
if (ft_font->unref)
- FT_Done_Face (ft_font->ft_face);
+ _hb_ft_face_destroy (ft_font->ft_face);
free (ft_font);
}
@@ -165,7 +173,21 @@ hb_ft_get_nominal_glyph (hb_font_t *font HB_UNUSED,
unsigned int g = FT_Get_Char_Index (ft_font->ft_face, unicode);
if (unlikely (!g))
- return false;
+ {
+ if (unlikely (ft_font->symbol) && unicode <= 0x00FFu)
+ {
+ /* For symbol-encoded OpenType fonts, we duplicate the
+ * U+F000..F0FF range at U+0000..U+00FF. That's what
+ * Windows seems to do, and that's hinted about at:
+ * http://www.microsoft.com/typography/otspec/recom.htm
+ * under "Non-Standard (Symbol) Fonts". */
+ g = FT_Get_Char_Index (ft_font->ft_face, 0xF000u + unicode);
+ if (!g)
+ return false;
+ }
+ else
+ return false;
+ }
*glyph = g;
return true;
@@ -444,9 +466,11 @@ retry:
#endif
};
+ bool symbol = ft_face->charmap && ft_face->charmap->encoding == FT_ENCODING_MS_SYMBOL;
+
hb_font_set_funcs (font,
funcs,
- _hb_ft_font_create (ft_face, unref),
+ _hb_ft_font_create (ft_face, symbol, unref),
(hb_destroy_func_t) _hb_ft_font_destroy);
}
@@ -526,7 +550,7 @@ hb_face_t *
hb_ft_face_create_referenced (FT_Face ft_face)
{
FT_Reference_Face (ft_face);
- return hb_ft_face_create (ft_face, (hb_destroy_func_t) FT_Done_Face);
+ return hb_ft_face_create (ft_face, (hb_destroy_func_t) _hb_ft_face_destroy);
}
static void
@@ -606,7 +630,7 @@ hb_font_t *
hb_ft_font_create_referenced (FT_Face ft_face)
{
FT_Reference_Face (ft_face);
- return hb_ft_font_create (ft_face, (hb_destroy_func_t) FT_Done_Face);
+ return hb_ft_font_create (ft_face, (hb_destroy_func_t) _hb_ft_face_destroy);
}
@@ -675,7 +699,8 @@ hb_ft_font_set_funcs (hb_font_t *font)
return;
}
- FT_Select_Charmap (ft_face, FT_ENCODING_UNICODE);
+ if (FT_Select_Charmap (ft_face, FT_ENCODING_UNICODE))
+ FT_Select_Charmap (ft_face, FT_ENCODING_MS_SYMBOL);
FT_Set_Char_Size (ft_face,
abs (font->x_scale), abs (font->y_scale),
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-structs.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-structs.h
index 0ea3b12cf16..1c303219b7c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-structs.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-gobject-structs.h
@@ -41,30 +41,40 @@ HB_BEGIN_DECLS
/* Object types */
/**
+ * hb_gobject_blob_get_type:
+ *
* Since: 0.9.2
**/
HB_EXTERN GType hb_gobject_blob_get_type (void);
#define HB_GOBJECT_TYPE_BLOB (hb_gobject_blob_get_type ())
/**
+ * hb_gobject_buffer_get_type:
+ *
* Since: 0.9.2
**/
HB_EXTERN GType hb_gobject_buffer_get_type (void);
#define HB_GOBJECT_TYPE_BUFFER (hb_gobject_buffer_get_type ())
/**
+ * hb_gobject_face_get_type:
+ *
* Since: 0.9.2
**/
HB_EXTERN GType hb_gobject_face_get_type (void);
#define HB_GOBJECT_TYPE_FACE (hb_gobject_face_get_type ())
/**
+ * hb_gobject_font_get_type:
+ *
* Since: 0.9.2
**/
HB_EXTERN GType hb_gobject_font_get_type (void);
#define HB_GOBJECT_TYPE_FONT (hb_gobject_font_get_type ())
/**
+ * hb_gobject_font_funcs_get_type:
+ *
* Since: 0.9.2
**/
HB_EXTERN GType hb_gobject_font_funcs_get_type (void);
@@ -77,6 +87,8 @@ HB_EXTERN GType hb_gobject_shape_plan_get_type (void);
#define HB_GOBJECT_TYPE_SHAPE_PLAN (hb_gobject_shape_plan_get_type ())
/**
+ * hb_gobject_unicode_funcs_get_type:
+ *
* Since: 0.9.2
**/
HB_EXTERN GType hb_gobject_unicode_funcs_get_type (void);
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc
index 39fc849a9b0..0b7e31b2d34 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-font.cc
@@ -215,6 +215,28 @@ static inline bool get_glyph_from (const void *obj,
return typed_obj->get_glyph (codepoint, glyph);
}
+template <typename Type>
+static inline bool get_glyph_from_symbol (const void *obj,
+ hb_codepoint_t codepoint,
+ hb_codepoint_t *glyph)
+{
+ const Type *typed_obj = (const Type *) obj;
+ if (likely (typed_obj->get_glyph (codepoint, glyph)))
+ return true;
+
+ if (codepoint <= 0x00FFu)
+ {
+ /* For symbol-encoded OpenType fonts, we duplicate the
+ * U+F000..F0FF range at U+0000..U+00FF. That's what
+ * Windows seems to do, and that's hinted about at:
+ * http://www.microsoft.com/typography/otspec/recom.htm
+ * under "Non-Standard (Symbol) Fonts". */
+ return typed_obj->get_glyph (0xF000u + codepoint, glyph);
+ }
+
+ return false;
+}
+
struct hb_ot_face_cmap_accelerator_t
{
hb_cmap_get_glyph_func_t get_glyph_func;
@@ -231,6 +253,7 @@ struct hb_ot_face_cmap_accelerator_t
const OT::CmapSubtable *subtable = NULL;
const OT::CmapSubtableFormat14 *subtable_uvs = NULL;
+ bool symbol = false;
/* 32-bit subtables. */
if (!subtable) subtable = cmap->find_subtable (3, 10);
if (!subtable) subtable = cmap->find_subtable (0, 6);
@@ -241,7 +264,7 @@ struct hb_ot_face_cmap_accelerator_t
if (!subtable) subtable = cmap->find_subtable (0, 2);
if (!subtable) subtable = cmap->find_subtable (0, 1);
if (!subtable) subtable = cmap->find_subtable (0, 0);
- if (!subtable) subtable = cmap->find_subtable (3, 0);
+ if (!subtable)(subtable = cmap->find_subtable (3, 0)) && (symbol = true);
/* Meh. */
if (!subtable) subtable = &OT::Null(OT::CmapSubtable);
@@ -258,18 +281,21 @@ struct hb_ot_face_cmap_accelerator_t
this->uvs_table = subtable_uvs;
this->get_glyph_data = subtable;
- switch (subtable->u.format) {
- /* Accelerate format 4 and format 12. */
- default: this->get_glyph_func = get_glyph_from<OT::CmapSubtable>; break;
- case 12: this->get_glyph_func = get_glyph_from<OT::CmapSubtableFormat12>; break;
- case 4:
- {
- this->format4_accel.init (&subtable->u.format4);
- this->get_glyph_data = &this->format4_accel;
- this->get_glyph_func = this->format4_accel.get_glyph_func;
+ if (unlikely (symbol))
+ this->get_glyph_func = get_glyph_from_symbol<OT::CmapSubtable>;
+ else
+ switch (subtable->u.format) {
+ /* Accelerate format 4 and format 12. */
+ default: this->get_glyph_func = get_glyph_from<OT::CmapSubtable>; break;
+ case 12: this->get_glyph_func = get_glyph_from<OT::CmapSubtableFormat12>; break;
+ case 4:
+ {
+ this->format4_accel.init (&subtable->u.format4);
+ this->get_glyph_data = &this->format4_accel;
+ this->get_glyph_func = this->format4_accel.get_glyph_func;
+ }
+ break;
}
- break;
- }
}
inline void fini (void)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh
index 7de56cf2a2b..22031f43ced 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsub-table.hh
@@ -265,16 +265,6 @@ struct Sequence
TRACE_APPLY (this);
unsigned int count = substitute.len;
- /* TODO:
- * Testing shows that Uniscribe actually allows zero-len susbstitute,
- * which essentially deletes a glyph. We don't allow for now. It
- * can be confusing to the client since the cluster from the deleted
- * glyph won't be merged with any output cluster... Also, currently
- * buffer->move_to() makes assumptions about this too. Perhaps fix
- * in the future after figuring out what to do with the clusters.
- */
- if (unlikely (!count)) return_trace (false);
-
/* Special-case to make it in-place and not consider this
* as a "multiplied" substitution. */
if (unlikely (count == 1))
@@ -282,6 +272,13 @@ struct Sequence
c->replace_glyph (substitute.array[0]);
return_trace (true);
}
+ /* Spec disallows this, but Uniscribe allows it.
+ * https://github.com/behdad/harfbuzz/issues/253 */
+ else if (unlikely (count == 0))
+ {
+ c->buffer->delete_glyph ();
+ return_trace (true);
+ }
unsigned int klass = _hb_glyph_info_is_ligature (&c->buffer->cur()) ?
HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH : 0;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos-private.hh
index 56c501533b2..997d2255054 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos-private.hh
@@ -996,10 +996,13 @@ static inline bool apply_lookup (hb_apply_context_t *c,
/* Recursed lookup changed buffer len. Adjust. */
- /* end can't go back past the current match position.
- * Note: this is only true because we do NOT allow MultipleSubst
- * with zero sequence len. */
- end = MAX (MIN((int) match_positions[idx] + 1, (int) new_len), int (end) + delta);
+ end = int (end) + delta;
+ if (end <= match_positions[idx])
+ {
+ /* There can't be any further changes. */
+ assert (end == match_positions[idx]);
+ break;
+ }
unsigned int next = idx + 1; /* next now is the position after the recursed lookup. */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc
index 29749bce791..b52c5f37e29 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.cc
@@ -93,6 +93,45 @@ _hb_ot_layout_create (hb_face_t *face)
if (3 == layout->gdef->get_glyph_class (5))
layout->gdef = &OT::Null(OT::GDEF);
}
+ else if (0
+ /* sha1sum:96eda93f7d33e79962451c6c39a6b51ee893ce8c tahoma.ttf from Windows 8 */
+ || (898 == gdef_len && 46470 == gpos_len && 12554 == gsub_len)
+ /* sha1sum:20928dc06014e0cd120b6fc942d0c3b1a46ac2bc tahomabd.ttf from Windows 8 */
+ || (910 == gdef_len && 47732 == gpos_len && 12566 == gsub_len)
+ /* sha1sum:4f95b7e4878f60fa3a39ca269618dfde9721a79e tahoma.ttf from Windows 8.1 */
+ || (928 == gdef_len && 59332 == gpos_len && 23298 == gsub_len)
+ /* sha1sum:6d400781948517c3c0441ba42acb309584b73033 tahomabd.ttf from Windows 8.1 */
+ || (940 == gdef_len && 60732 == gpos_len && 23310 == gsub_len)
+ /* sha1sum:e55fa2dfe957a9f7ec26be516a0e30b0c925f846 tahoma.ttf from Windows 10 */
+ || (994 == gdef_len && 60336 == gpos_len && 24474 == gsub_len)
+ /* sha1sum:7199385abb4c2cc81c83a151a7599b6368e92343 tahomabd.ttf from Windows 10 */
+ || (1006 == gdef_len && 61740 == gpos_len && 24470 == gsub_len)
+ /* sha1sum:b0d36cf5a2fbe746a3dd277bffc6756a820807a7 Tahoma.ttf from Mac OS X 10.9 */
+ || (832 == gdef_len && 47162 == gpos_len && 7324 == gsub_len)
+ /* sha1sum:12fc4538e84d461771b30c18b5eb6bd434e30fba Tahoma Bold.ttf from Mac OS X 10.9 */
+ || (844 == gdef_len && 45474 == gpos_len && 7302 == gsub_len)
+ /* sha1sum:73da7f025b238a3f737aa1fde22577a6370f77b0 himalaya.ttf from Windows 8 */
+ || (192 == gdef_len && 7254 == gpos_len && 12638 == gsub_len)
+ /* sha1sum:6e80fd1c0b059bbee49272401583160dc1e6a427 himalaya.ttf from Windows 8.1 */
+ || (192 == gdef_len && 7254 == gpos_len && 12690 == gsub_len)
+ /* 8d9267aea9cd2c852ecfb9f12a6e834bfaeafe44 cantarell-fonts-0.0.21/otf/Cantarell-Regular.otf */
+ /* 983988ff7b47439ab79aeaf9a45bd4a2c5b9d371 cantarell-fonts-0.0.21/otf/Cantarell-Oblique.otf */
+ || (188 == gdef_len && 3852 == gpos_len && 248 == gsub_len)
+ /* 2c0c90c6f6087ffbfea76589c93113a9cbb0e75f cantarell-fonts-0.0.21/otf/Cantarell-Bold.otf */
+ /* 55461f5b853c6da88069ffcdf7f4dd3f8d7e3e6b cantarell-fonts-0.0.21/otf/Cantarell-Bold-Oblique.otf */
+ || (188 == gdef_len && 3426 == gpos_len && 264 == gsub_len)
+ )
+ {
+ /* Many versions of Tahoma have bad GDEF tables that incorrectly classify some spacing marks
+ * such as certain IPA symbols as glyph class 3. So do older versions of Microsoft Himalaya,
+ * and the version of Cantarell shipped by Ubuntu 16.04.
+ * Nuke the GDEF tables of these fonts to avoid unwanted width-zeroing.
+ * See https://bugzilla.mozilla.org/show_bug.cgi?id=1279925
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=1279693
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=1279875
+ */
+ layout->gdef = &OT::Null(OT::GDEF);
+ }
}
layout->gsub_lookup_count = layout->gsub->get_lookup_count ();
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic-table.hh
index 80d50443546..736c7f76b36 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic-table.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-arabic-table.hh
@@ -6,10 +6,10 @@
*
* on files with these headers:
*
- * # ArabicShaping-8.0.0.txt
- * # Date: 2015-02-17, 23:33:00 GMT [RP]
- * # Blocks-8.0.0.txt
- * # Date: 2014-11-10, 23:04:00 GMT [KW]
+ * # ArabicShaping-9.0.0.txt
+ * # Date: 2016-02-24, 22:25:00 GMT [RP]
+ * # Blocks-9.0.0.txt
+ * # Date: 2016-02-05, 23:48:00 GMT [KW]
* UnicodeData.txt does not have a header.
*/
@@ -19,6 +19,7 @@
#define X JOINING_TYPE_X
#define R JOINING_TYPE_R
+#define T JOINING_TYPE_T
#define U JOINING_TYPE_U
#define A JOINING_GROUP_ALAPH
#define DR JOINING_GROUP_DALATH_RISH
@@ -76,9 +77,11 @@ static const uint8_t joining_table[] =
/* Arabic Extended-A */
- /* 08A0 */ D,D,D,D,D,D,D,D,D,D,R,R,R,U,R,D,D,R,R,D,D,
+ /* 08A0 */ D,D,D,D,D,D,D,D,D,D,R,R,R,U,R,D,D,R,R,D,D,X,D,D,D,R,D,D,D,D,X,X,
+ /* 08C0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
+ /* 08E0 */ X,X,U,
-#define joining_offset_0x1806u 693
+#define joining_offset_0x1806u 739
/* Mongolian */
@@ -86,43 +89,48 @@ static const uint8_t joining_table[] =
/* 1820 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,
/* 1840 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,
/* 1860 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,X,X,X,X,X,X,X,X,
- /* 1880 */ U,U,U,U,U,U,U,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,
+ /* 1880 */ U,U,U,U,U,T,T,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,
/* 18A0 */ D,D,D,D,D,D,D,D,D,X,D,
-#define joining_offset_0x200cu 858
+#define joining_offset_0x200cu 904
/* General Punctuation */
- /* 2000 */ U,C,
+ /* 2000 */ U,C,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
+ /* 2020 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,U,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
+ /* 2040 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
+ /* 2060 */ X,X,X,X,X,X,U,U,U,U,
-#define joining_offset_0x2066u 860
-
- /* General Punctuation */
-
- /* 2060 */ U,U,U,U,
-
-#define joining_offset_0xa840u 864
+#define joining_offset_0xa840u 998
/* Phags-pa */
/* A840 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,
/* A860 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,L,U,
-#define joining_offset_0x10ac0u 916
+#define joining_offset_0x10ac0u 1050
/* Manichaean */
/* 10AC0 */ D,D,D,D,D,R,U,R,U,R,R,U,U,L,R,R,R,R,R,D,D,D,D,L,D,D,D,D,D,R,D,D,
/* 10AE0 */ D,R,U,U,R,X,X,X,X,X,X,D,D,D,D,R,
-#define joining_offset_0x10b80u 964
+#define joining_offset_0x10b80u 1098
/* Psalter Pahlavi */
/* 10B80 */ D,R,D,R,R,R,D,D,D,R,D,D,R,D,R,R,D,R,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
/* 10BA0 */ X,X,X,X,X,X,X,X,X,R,R,R,R,D,D,U,
-}; /* Table items: 1012; occupancy: 57% */
+#define joining_offset_0x1e900u 1146
+
+ /* Adlam */
+
+ /* 1E900 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,
+ /* 1E920 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,
+ /* 1E940 */ D,D,D,D,
+
+}; /* Table items: 1214; occupancy: 54% */
static unsigned int
@@ -131,7 +139,7 @@ joining_type (hb_codepoint_t u)
switch (u >> 12)
{
case 0x0u:
- if (hb_in_range (u, 0x0600u, 0x08B4u)) return joining_table[u - 0x0600u + joining_offset_0x0600u];
+ if (hb_in_range (u, 0x0600u, 0x08E2u)) return joining_table[u - 0x0600u + joining_offset_0x0600u];
break;
case 0x1u:
@@ -139,8 +147,7 @@ joining_type (hb_codepoint_t u)
break;
case 0x2u:
- if (hb_in_range (u, 0x200Cu, 0x200Du)) return joining_table[u - 0x200Cu + joining_offset_0x200cu];
- if (hb_in_range (u, 0x2066u, 0x2069u)) return joining_table[u - 0x2066u + joining_offset_0x2066u];
+ if (hb_in_range (u, 0x200Cu, 0x2069u)) return joining_table[u - 0x200Cu + joining_offset_0x200cu];
break;
case 0xAu:
@@ -152,6 +159,10 @@ joining_type (hb_codepoint_t u)
if (hb_in_range (u, 0x10B80u, 0x10BAFu)) return joining_table[u - 0x10B80u + joining_offset_0x10b80u];
break;
+ case 0x1Eu:
+ if (hb_in_range (u, 0x1E900u, 0x1E943u)) return joining_table[u - 0x1E900u + joining_offset_0x1e900u];
+ break;
+
default:
break;
}
@@ -160,6 +171,7 @@ joining_type (hb_codepoint_t u)
#undef X
#undef R
+#undef T
#undef U
#undef A
#undef DR
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-machine.hh
index f652d4fda73..5a7a265c871 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-machine.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-machine.hh
@@ -56,52 +56,52 @@ static const unsigned char _indic_syllable_machine_trans_keys[] = {
5u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u,
5u, 7u, 7u, 7u, 8u, 8u, 1u, 16u, 8u, 13u, 4u, 8u, 6u, 6u, 16u, 16u,
4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u,
- 16u, 16u, 8u, 8u, 1u, 31u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u,
- 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u,
- 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 5u, 14u, 5u, 14u,
+ 16u, 16u, 8u, 8u, 1u, 18u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u,
+ 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u,
+ 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 5u, 14u, 5u, 14u,
5u, 10u, 9u, 10u, 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 13u,
3u, 10u, 5u, 10u, 3u, 10u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u,
- 5u, 14u, 3u, 14u, 1u, 16u, 4u, 31u, 4u, 14u, 3u, 31u, 3u, 31u, 1u, 16u,
- 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u,
- 1u, 16u, 1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u, 1u, 16u,
- 1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
- 1u, 16u, 3u, 31u, 3u, 31u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u,
- 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u,
- 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 5u, 14u, 5u, 14u,
- 5u, 10u, 9u, 10u, 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 13u,
- 3u, 10u, 5u, 10u, 3u, 10u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
- 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u,
- 5u, 14u, 3u, 14u, 1u, 16u, 4u, 31u, 4u, 14u, 3u, 31u, 3u, 31u, 1u, 16u,
- 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u,
- 1u, 16u, 1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u, 1u, 16u,
- 1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
- 4u, 14u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u,
- 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u,
- 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 5u, 14u, 5u, 14u, 5u, 10u,
+ 5u, 14u, 3u, 14u, 1u, 16u, 4u, 14u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u,
+ 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u,
+ 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
+ 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
+ 3u, 17u, 3u, 17u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u,
+ 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u,
+ 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 5u, 14u, 5u, 14u, 5u, 10u,
9u, 10u, 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 13u, 3u, 10u,
5u, 10u, 3u, 10u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
- 3u, 14u, 1u, 16u, 4u, 31u, 4u, 14u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u,
- 1u, 16u, 1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u, 1u, 16u,
- 1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
- 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
- 4u, 14u, 3u, 31u, 4u, 14u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u,
- 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u,
- 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 5u, 14u, 5u, 14u,
- 5u, 10u, 9u, 10u, 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 13u,
- 3u, 10u, 5u, 10u, 3u, 10u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
+ 3u, 14u, 1u, 16u, 4u, 14u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u,
+ 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
+ 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
+ 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, 1u, 16u,
+ 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u,
+ 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u,
+ 3u, 17u, 3u, 17u, 4u, 17u, 5u, 14u, 5u, 14u, 5u, 10u, 9u, 10u, 9u, 9u,
+ 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 13u, 3u, 10u, 5u, 10u, 3u, 10u,
+ 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
+ 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 1u, 16u,
+ 4u, 14u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
+ 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u,
+ 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u,
+ 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, 3u, 17u, 4u, 14u,
+ 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u,
+ 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u,
+ 3u, 17u, 3u, 17u, 4u, 17u, 5u, 14u, 5u, 14u, 5u, 10u, 9u, 10u, 9u, 9u,
+ 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 13u, 3u, 10u, 5u, 10u, 3u, 10u,
+ 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
+ 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 1u, 16u,
+ 4u, 14u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
+ 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u,
+ 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u,
+ 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 1u, 17u, 3u, 17u,
+ 1u, 17u, 4u, 14u, 5u, 10u, 9u, 10u, 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u,
+ 5u, 10u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 3u, 17u, 3u, 17u, 1u, 16u,
3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u,
- 5u, 14u, 3u, 14u, 1u, 16u, 4u, 31u, 4u, 14u, 3u, 31u, 3u, 31u, 1u, 16u,
- 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u,
- 1u, 16u, 1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u, 1u, 16u,
- 1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
- 1u, 16u, 3u, 31u, 1u, 31u, 3u, 31u, 1u, 31u, 4u, 14u, 5u, 10u, 9u, 10u,
- 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 1u, 16u, 3u, 31u, 3u, 31u,
- 4u, 31u, 3u, 31u, 3u, 31u, 1u, 16u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
- 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
- 3u, 13u, 3u, 10u, 5u, 10u, 3u, 10u, 3u, 13u, 1u, 16u, 3u, 10u, 5u, 10u,
- 5u, 10u, 9u, 10u, 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 0
+ 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 13u, 3u, 10u, 5u, 10u, 3u, 10u,
+ 3u, 13u, 1u, 16u, 3u, 10u, 5u, 10u, 5u, 10u, 9u, 10u, 9u, 9u, 9u, 10u,
+ 9u, 10u, 9u, 9u, 5u, 10u, 0
};
static const char _indic_syllable_machine_key_spans[] = {
@@ -127,52 +127,52 @@ static const char _indic_syllable_machine_key_spans[] = {
3, 4, 3, 1, 4, 3, 1, 4,
3, 1, 1, 16, 6, 5, 1, 1,
5, 1, 1, 5, 1, 1, 5, 1,
- 1, 1, 31, 29, 29, 28, 16, 29,
- 29, 28, 16, 29, 29, 28, 16, 29,
- 29, 28, 16, 29, 29, 28, 10, 10,
+ 1, 1, 18, 15, 15, 14, 16, 15,
+ 15, 14, 16, 15, 15, 14, 16, 15,
+ 15, 14, 16, 15, 15, 14, 10, 10,
6, 2, 1, 2, 2, 1, 6, 11,
8, 6, 8, 11, 12, 12, 11, 10,
12, 11, 10, 12, 11, 10, 12, 11,
- 10, 12, 16, 28, 11, 29, 29, 16,
- 16, 16, 16, 16, 29, 29, 16, 16,
- 16, 16, 16, 29, 29, 16, 16, 16,
- 16, 16, 29, 29, 16, 16, 16, 16,
- 16, 29, 29, 29, 29, 28, 16, 29,
- 29, 28, 16, 29, 29, 28, 16, 29,
- 29, 28, 16, 29, 29, 28, 10, 10,
- 6, 2, 1, 2, 2, 1, 6, 11,
- 8, 6, 8, 11, 12, 12, 11, 10,
- 12, 11, 10, 12, 11, 10, 12, 11,
- 10, 12, 16, 28, 11, 29, 29, 16,
- 16, 16, 16, 16, 29, 29, 16, 16,
- 16, 16, 16, 29, 29, 16, 16, 16,
- 16, 16, 29, 29, 16, 16, 16, 16,
- 11, 16, 29, 29, 28, 16, 29, 29,
- 28, 16, 29, 29, 28, 16, 29, 29,
- 28, 16, 29, 29, 28, 10, 10, 6,
+ 10, 12, 16, 11, 15, 15, 16, 16,
+ 16, 16, 16, 15, 15, 16, 16, 16,
+ 16, 16, 15, 15, 16, 16, 16, 16,
+ 16, 15, 15, 16, 16, 16, 16, 16,
+ 15, 15, 15, 15, 14, 16, 15, 15,
+ 14, 16, 15, 15, 14, 16, 15, 15,
+ 14, 16, 15, 15, 14, 10, 10, 6,
2, 1, 2, 2, 1, 6, 11, 8,
6, 8, 11, 12, 12, 11, 10, 12,
11, 10, 12, 11, 10, 12, 11, 10,
- 12, 16, 28, 11, 29, 29, 16, 16,
- 16, 16, 16, 29, 29, 16, 16, 16,
- 16, 16, 29, 29, 16, 16, 16, 16,
- 16, 29, 29, 16, 16, 16, 16, 16,
- 11, 29, 11, 29, 29, 28, 16, 29,
- 29, 28, 16, 29, 29, 28, 16, 29,
- 29, 28, 16, 29, 29, 28, 10, 10,
- 6, 2, 1, 2, 2, 1, 6, 11,
- 8, 6, 8, 11, 12, 12, 11, 10,
+ 12, 16, 11, 15, 15, 16, 16, 16,
+ 16, 16, 15, 15, 16, 16, 16, 16,
+ 16, 15, 15, 16, 16, 16, 16, 16,
+ 15, 15, 16, 16, 16, 16, 11, 16,
+ 15, 15, 14, 16, 15, 15, 14, 16,
+ 15, 15, 14, 16, 15, 15, 14, 16,
+ 15, 15, 14, 10, 10, 6, 2, 1,
+ 2, 2, 1, 6, 11, 8, 6, 8,
+ 11, 12, 12, 11, 10, 12, 11, 10,
+ 12, 11, 10, 12, 11, 10, 12, 16,
+ 11, 15, 15, 16, 16, 16, 16, 16,
+ 15, 15, 16, 16, 16, 16, 16, 15,
+ 15, 16, 16, 16, 16, 16, 15, 15,
+ 16, 16, 16, 16, 16, 11, 15, 11,
+ 15, 15, 14, 16, 15, 15, 14, 16,
+ 15, 15, 14, 16, 15, 15, 14, 16,
+ 15, 15, 14, 10, 10, 6, 2, 1,
+ 2, 2, 1, 6, 11, 8, 6, 8,
+ 11, 12, 12, 11, 10, 12, 11, 10,
+ 12, 11, 10, 12, 11, 10, 12, 16,
+ 11, 15, 15, 16, 16, 16, 16, 16,
+ 15, 15, 16, 16, 16, 16, 16, 15,
+ 15, 16, 16, 16, 16, 16, 15, 15,
+ 16, 16, 16, 16, 16, 15, 17, 15,
+ 17, 11, 6, 2, 1, 2, 2, 1,
+ 6, 16, 15, 15, 14, 15, 15, 16,
12, 11, 10, 12, 11, 10, 12, 11,
- 10, 12, 16, 28, 11, 29, 29, 16,
- 16, 16, 16, 16, 29, 29, 16, 16,
- 16, 16, 16, 29, 29, 16, 16, 16,
- 16, 16, 29, 29, 16, 16, 16, 16,
- 16, 29, 31, 29, 31, 11, 6, 2,
- 1, 2, 2, 1, 6, 16, 29, 29,
- 28, 29, 29, 16, 12, 11, 10, 12,
- 11, 10, 12, 11, 10, 12, 11, 10,
- 11, 8, 6, 8, 11, 16, 8, 6,
- 6, 2, 1, 2, 2, 1, 6
+ 10, 12, 11, 10, 11, 8, 6, 8,
+ 11, 16, 8, 6, 6, 2, 1, 2,
+ 2, 1, 6
};
static const short _indic_syllable_machine_index_offsets[] = {
@@ -198,52 +198,52 @@ static const short _indic_syllable_machine_index_offsets[] = {
954, 958, 963, 967, 969, 974, 978, 980,
985, 989, 991, 993, 1010, 1017, 1023, 1025,
1027, 1033, 1035, 1037, 1043, 1045, 1047, 1053,
- 1055, 1057, 1059, 1091, 1121, 1151, 1180, 1197,
- 1227, 1257, 1286, 1303, 1333, 1363, 1392, 1409,
- 1439, 1469, 1498, 1515, 1545, 1575, 1604, 1615,
- 1626, 1633, 1636, 1638, 1641, 1644, 1646, 1653,
- 1665, 1674, 1681, 1690, 1702, 1715, 1728, 1740,
- 1751, 1764, 1776, 1787, 1800, 1812, 1823, 1836,
- 1848, 1859, 1872, 1889, 1918, 1930, 1960, 1990,
- 2007, 2024, 2041, 2058, 2075, 2105, 2135, 2152,
- 2169, 2186, 2203, 2220, 2250, 2280, 2297, 2314,
- 2331, 2348, 2365, 2395, 2425, 2442, 2459, 2476,
- 2493, 2510, 2540, 2570, 2600, 2630, 2659, 2676,
- 2706, 2736, 2765, 2782, 2812, 2842, 2871, 2888,
- 2918, 2948, 2977, 2994, 3024, 3054, 3083, 3094,
- 3105, 3112, 3115, 3117, 3120, 3123, 3125, 3132,
- 3144, 3153, 3160, 3169, 3181, 3194, 3207, 3219,
- 3230, 3243, 3255, 3266, 3279, 3291, 3302, 3315,
- 3327, 3338, 3351, 3368, 3397, 3409, 3439, 3469,
- 3486, 3503, 3520, 3537, 3554, 3584, 3614, 3631,
- 3648, 3665, 3682, 3699, 3729, 3759, 3776, 3793,
- 3810, 3827, 3844, 3874, 3904, 3921, 3938, 3955,
- 3972, 3984, 4001, 4031, 4061, 4090, 4107, 4137,
- 4167, 4196, 4213, 4243, 4273, 4302, 4319, 4349,
- 4379, 4408, 4425, 4455, 4485, 4514, 4525, 4536,
- 4543, 4546, 4548, 4551, 4554, 4556, 4563, 4575,
- 4584, 4591, 4600, 4612, 4625, 4638, 4650, 4661,
- 4674, 4686, 4697, 4710, 4722, 4733, 4746, 4758,
- 4769, 4782, 4799, 4828, 4840, 4870, 4900, 4917,
- 4934, 4951, 4968, 4985, 5015, 5045, 5062, 5079,
- 5096, 5113, 5130, 5160, 5190, 5207, 5224, 5241,
- 5258, 5275, 5305, 5335, 5352, 5369, 5386, 5403,
- 5420, 5432, 5462, 5474, 5504, 5534, 5563, 5580,
- 5610, 5640, 5669, 5686, 5716, 5746, 5775, 5792,
- 5822, 5852, 5881, 5898, 5928, 5958, 5987, 5998,
- 6009, 6016, 6019, 6021, 6024, 6027, 6029, 6036,
- 6048, 6057, 6064, 6073, 6085, 6098, 6111, 6123,
- 6134, 6147, 6159, 6170, 6183, 6195, 6206, 6219,
- 6231, 6242, 6255, 6272, 6301, 6313, 6343, 6373,
- 6390, 6407, 6424, 6441, 6458, 6488, 6518, 6535,
- 6552, 6569, 6586, 6603, 6633, 6663, 6680, 6697,
- 6714, 6731, 6748, 6778, 6808, 6825, 6842, 6859,
- 6876, 6893, 6923, 6955, 6985, 7017, 7029, 7036,
- 7039, 7041, 7044, 7047, 7049, 7056, 7073, 7103,
- 7133, 7162, 7192, 7222, 7239, 7252, 7264, 7275,
- 7288, 7300, 7311, 7324, 7336, 7347, 7360, 7372,
- 7383, 7395, 7404, 7411, 7420, 7432, 7449, 7458,
- 7465, 7472, 7475, 7477, 7480, 7483, 7485
+ 1055, 1057, 1059, 1078, 1094, 1110, 1125, 1142,
+ 1158, 1174, 1189, 1206, 1222, 1238, 1253, 1270,
+ 1286, 1302, 1317, 1334, 1350, 1366, 1381, 1392,
+ 1403, 1410, 1413, 1415, 1418, 1421, 1423, 1430,
+ 1442, 1451, 1458, 1467, 1479, 1492, 1505, 1517,
+ 1528, 1541, 1553, 1564, 1577, 1589, 1600, 1613,
+ 1625, 1636, 1649, 1666, 1678, 1694, 1710, 1727,
+ 1744, 1761, 1778, 1795, 1811, 1827, 1844, 1861,
+ 1878, 1895, 1912, 1928, 1944, 1961, 1978, 1995,
+ 2012, 2029, 2045, 2061, 2078, 2095, 2112, 2129,
+ 2146, 2162, 2178, 2194, 2210, 2225, 2242, 2258,
+ 2274, 2289, 2306, 2322, 2338, 2353, 2370, 2386,
+ 2402, 2417, 2434, 2450, 2466, 2481, 2492, 2503,
+ 2510, 2513, 2515, 2518, 2521, 2523, 2530, 2542,
+ 2551, 2558, 2567, 2579, 2592, 2605, 2617, 2628,
+ 2641, 2653, 2664, 2677, 2689, 2700, 2713, 2725,
+ 2736, 2749, 2766, 2778, 2794, 2810, 2827, 2844,
+ 2861, 2878, 2895, 2911, 2927, 2944, 2961, 2978,
+ 2995, 3012, 3028, 3044, 3061, 3078, 3095, 3112,
+ 3129, 3145, 3161, 3178, 3195, 3212, 3229, 3241,
+ 3258, 3274, 3290, 3305, 3322, 3338, 3354, 3369,
+ 3386, 3402, 3418, 3433, 3450, 3466, 3482, 3497,
+ 3514, 3530, 3546, 3561, 3572, 3583, 3590, 3593,
+ 3595, 3598, 3601, 3603, 3610, 3622, 3631, 3638,
+ 3647, 3659, 3672, 3685, 3697, 3708, 3721, 3733,
+ 3744, 3757, 3769, 3780, 3793, 3805, 3816, 3829,
+ 3846, 3858, 3874, 3890, 3907, 3924, 3941, 3958,
+ 3975, 3991, 4007, 4024, 4041, 4058, 4075, 4092,
+ 4108, 4124, 4141, 4158, 4175, 4192, 4209, 4225,
+ 4241, 4258, 4275, 4292, 4309, 4326, 4338, 4354,
+ 4366, 4382, 4398, 4413, 4430, 4446, 4462, 4477,
+ 4494, 4510, 4526, 4541, 4558, 4574, 4590, 4605,
+ 4622, 4638, 4654, 4669, 4680, 4691, 4698, 4701,
+ 4703, 4706, 4709, 4711, 4718, 4730, 4739, 4746,
+ 4755, 4767, 4780, 4793, 4805, 4816, 4829, 4841,
+ 4852, 4865, 4877, 4888, 4901, 4913, 4924, 4937,
+ 4954, 4966, 4982, 4998, 5015, 5032, 5049, 5066,
+ 5083, 5099, 5115, 5132, 5149, 5166, 5183, 5200,
+ 5216, 5232, 5249, 5266, 5283, 5300, 5317, 5333,
+ 5349, 5366, 5383, 5400, 5417, 5434, 5450, 5468,
+ 5484, 5502, 5514, 5521, 5524, 5526, 5529, 5532,
+ 5534, 5541, 5558, 5574, 5590, 5605, 5621, 5637,
+ 5654, 5667, 5679, 5690, 5703, 5715, 5726, 5739,
+ 5751, 5762, 5775, 5787, 5798, 5810, 5819, 5826,
+ 5835, 5847, 5864, 5873, 5880, 5887, 5890, 5892,
+ 5895, 5898, 5900
};
static const short _indic_syllable_machine_indicies[] = {
@@ -381,882 +381,684 @@ static const short _indic_syllable_machine_indicies[] = {
161, 161, 162, 157, 0, 183, 0, 184,
0, 186, 185, 188, 189, 190, 191, 192,
193, 84, 79, 194, 195, 196, 196, 156,
- 197, 198, 199, 200, 201, 187, 187, 187,
- 187, 187, 187, 187, 187, 187, 187, 187,
- 187, 202, 187, 204, 205, 206, 207, 6,
- 1, 208, 209, 203, 203, 38, 210, 203,
- 203, 211, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 212,
- 203, 213, 205, 214, 214, 6, 1, 208,
- 209, 203, 203, 203, 210, 203, 203, 211,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 212, 203, 205,
- 214, 214, 6, 1, 208, 209, 203, 203,
- 203, 210, 203, 203, 211, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 212, 203, 215, 203, 203, 203,
- 19, 216, 203, 1, 208, 209, 203, 203,
- 203, 217, 203, 215, 203, 218, 219, 220,
- 221, 6, 1, 208, 209, 203, 203, 36,
- 222, 203, 203, 211, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 212, 203, 223, 219, 224, 224, 6,
- 1, 208, 209, 203, 203, 203, 222, 203,
- 203, 211, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 212,
- 203, 219, 224, 224, 6, 1, 208, 209,
- 203, 203, 203, 222, 203, 203, 211, 203,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 212, 203, 225, 203,
- 203, 203, 19, 226, 203, 1, 208, 209,
- 203, 203, 203, 217, 203, 225, 203, 227,
- 228, 229, 230, 6, 1, 208, 209, 203,
- 203, 34, 231, 203, 203, 211, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 212, 203, 232, 228, 233,
- 233, 6, 1, 208, 209, 203, 203, 203,
- 231, 203, 203, 211, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 212, 203, 228, 233, 233, 6, 1,
- 208, 209, 203, 203, 203, 231, 203, 203,
- 211, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 212, 203,
- 234, 203, 203, 203, 19, 235, 203, 1,
- 208, 209, 203, 203, 203, 217, 203, 234,
- 203, 236, 237, 238, 239, 6, 1, 208,
- 209, 203, 203, 32, 240, 203, 203, 211,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 212, 203, 241,
- 237, 242, 242, 6, 1, 208, 209, 203,
- 203, 203, 240, 203, 203, 211, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 212, 203, 237, 242, 242,
- 6, 1, 208, 209, 203, 203, 203, 240,
- 203, 203, 211, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 212, 203, 243, 203, 203, 203, 19, 244,
- 203, 1, 208, 209, 203, 203, 203, 217,
- 203, 243, 203, 245, 246, 247, 248, 6,
- 1, 208, 209, 203, 203, 30, 249, 203,
- 203, 211, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 212,
- 203, 250, 246, 251, 251, 6, 1, 208,
- 209, 203, 203, 203, 249, 203, 203, 211,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 212, 203, 246,
- 251, 251, 6, 1, 208, 209, 203, 203,
- 203, 249, 203, 203, 211, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 212, 203, 19, 252, 203, 1,
- 208, 209, 203, 203, 203, 217, 203, 253,
- 253, 203, 1, 208, 209, 203, 203, 203,
- 217, 203, 254, 203, 203, 255, 208, 209,
- 203, 208, 209, 203, 256, 203, 208, 257,
- 203, 208, 258, 203, 208, 203, 254, 203,
- 203, 203, 208, 209, 203, 259, 203, 260,
- 261, 203, 1, 208, 209, 203, 203, 4,
- 203, 3, 203, 253, 253, 203, 1, 208,
- 209, 203, 253, 253, 203, 1, 208, 209,
- 203, 259, 203, 253, 253, 203, 1, 208,
- 209, 203, 259, 203, 260, 253, 203, 1,
- 208, 209, 203, 203, 4, 203, 19, 203,
- 262, 262, 6, 1, 208, 209, 203, 203,
- 203, 217, 203, 263, 28, 264, 265, 9,
- 1, 208, 209, 203, 203, 203, 217, 203,
- 28, 264, 265, 9, 1, 208, 209, 203,
- 203, 203, 217, 203, 264, 264, 9, 1,
- 208, 209, 203, 203, 203, 217, 203, 266,
- 25, 267, 268, 12, 1, 208, 209, 203,
- 203, 203, 217, 203, 25, 267, 268, 12,
- 1, 208, 209, 203, 203, 203, 217, 203,
- 267, 267, 12, 1, 208, 209, 203, 203,
- 203, 217, 203, 269, 22, 270, 271, 15,
- 1, 208, 209, 203, 203, 203, 217, 203,
- 22, 270, 271, 15, 1, 208, 209, 203,
- 203, 203, 217, 203, 270, 270, 15, 1,
- 208, 209, 203, 203, 203, 217, 203, 272,
- 19, 253, 273, 203, 1, 208, 209, 203,
- 203, 203, 217, 203, 19, 253, 273, 203,
- 1, 208, 209, 203, 203, 203, 217, 203,
- 253, 274, 203, 1, 208, 209, 203, 203,
- 203, 217, 203, 19, 203, 253, 253, 203,
- 1, 208, 209, 203, 203, 203, 217, 203,
- 2, 3, 203, 203, 19, 252, 203, 1,
- 208, 209, 203, 203, 203, 217, 203, 2,
- 203, 246, 251, 251, 6, 1, 208, 209,
- 203, 203, 203, 249, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 212, 203, 246, 251,
- 251, 6, 1, 208, 209, 203, 203, 203,
- 249, 203, 245, 246, 251, 251, 6, 1,
- 208, 209, 203, 203, 203, 249, 203, 203,
- 211, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 212, 203,
- 245, 246, 247, 251, 6, 1, 208, 209,
- 203, 203, 30, 249, 203, 203, 211, 203,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 212, 203, 243, 203,
- 275, 203, 262, 262, 6, 1, 208, 209,
- 203, 203, 203, 217, 203, 243, 203, 243,
- 203, 203, 203, 253, 253, 203, 1, 208,
- 209, 203, 203, 203, 217, 203, 243, 203,
- 243, 203, 203, 203, 253, 276, 203, 1,
- 208, 209, 203, 203, 203, 217, 203, 243,
- 203, 243, 203, 275, 203, 253, 253, 203,
- 1, 208, 209, 203, 203, 203, 217, 203,
- 243, 203, 243, 3, 203, 203, 19, 244,
- 203, 1, 208, 209, 203, 203, 203, 217,
- 203, 243, 203, 236, 237, 242, 242, 6,
- 1, 208, 209, 203, 203, 203, 240, 203,
- 203, 211, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 212,
- 203, 236, 237, 238, 242, 6, 1, 208,
- 209, 203, 203, 32, 240, 203, 203, 211,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 212, 203, 234,
- 203, 277, 203, 262, 262, 6, 1, 208,
- 209, 203, 203, 203, 217, 203, 234, 203,
- 234, 203, 203, 203, 253, 253, 203, 1,
- 208, 209, 203, 203, 203, 217, 203, 234,
- 203, 234, 203, 203, 203, 253, 278, 203,
- 1, 208, 209, 203, 203, 203, 217, 203,
- 234, 203, 234, 203, 277, 203, 253, 253,
- 203, 1, 208, 209, 203, 203, 203, 217,
- 203, 234, 203, 234, 3, 203, 203, 19,
- 235, 203, 1, 208, 209, 203, 203, 203,
- 217, 203, 234, 203, 227, 228, 233, 233,
- 6, 1, 208, 209, 203, 203, 203, 231,
- 203, 203, 211, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 212, 203, 227, 228, 229, 233, 6, 1,
- 208, 209, 203, 203, 34, 231, 203, 203,
- 211, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 212, 203,
- 225, 203, 279, 203, 262, 262, 6, 1,
- 208, 209, 203, 203, 203, 217, 203, 225,
- 203, 225, 203, 203, 203, 253, 253, 203,
- 1, 208, 209, 203, 203, 203, 217, 203,
- 225, 203, 225, 203, 203, 203, 253, 280,
- 203, 1, 208, 209, 203, 203, 203, 217,
- 203, 225, 203, 225, 203, 279, 203, 253,
- 253, 203, 1, 208, 209, 203, 203, 203,
- 217, 203, 225, 203, 225, 3, 203, 203,
- 19, 226, 203, 1, 208, 209, 203, 203,
- 203, 217, 203, 225, 203, 218, 219, 224,
- 224, 6, 1, 208, 209, 203, 203, 203,
- 222, 203, 203, 211, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 212, 203, 218, 219, 220, 224, 6,
- 1, 208, 209, 203, 203, 36, 222, 203,
- 203, 211, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 212,
- 203, 215, 203, 281, 203, 262, 262, 6,
- 1, 208, 209, 203, 203, 203, 217, 203,
- 215, 203, 215, 203, 203, 203, 253, 253,
- 203, 1, 208, 209, 203, 203, 203, 217,
- 203, 215, 203, 215, 203, 203, 203, 253,
- 282, 203, 1, 208, 209, 203, 203, 203,
- 217, 203, 215, 203, 215, 203, 281, 203,
- 253, 253, 203, 1, 208, 209, 203, 203,
- 203, 217, 203, 215, 203, 215, 3, 203,
- 203, 19, 216, 203, 1, 208, 209, 203,
- 203, 203, 217, 203, 215, 203, 204, 205,
- 214, 214, 6, 1, 208, 209, 203, 203,
- 203, 210, 203, 203, 211, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 212, 203, 204, 205, 206, 214,
- 6, 1, 208, 209, 203, 203, 38, 210,
- 203, 203, 211, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 212, 203, 284, 285, 286, 287, 45, 40,
- 288, 289, 283, 283, 77, 290, 283, 283,
- 291, 283, 283, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 283, 283, 292, 283,
- 293, 285, 294, 287, 45, 40, 288, 289,
- 283, 283, 283, 290, 283, 283, 291, 283,
- 283, 283, 283, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 292, 283, 285, 294,
- 287, 45, 40, 288, 289, 283, 283, 283,
- 290, 283, 283, 291, 283, 283, 283, 283,
- 283, 283, 283, 283, 283, 283, 283, 283,
- 283, 292, 283, 295, 283, 283, 283, 58,
- 296, 283, 40, 288, 289, 283, 283, 283,
- 297, 283, 295, 283, 298, 299, 300, 301,
- 45, 40, 288, 289, 283, 283, 75, 302,
- 283, 283, 291, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 283, 283, 283, 283,
- 292, 283, 303, 299, 304, 304, 45, 40,
- 288, 289, 283, 283, 283, 302, 283, 283,
- 291, 283, 283, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 283, 283, 292, 283,
- 299, 304, 304, 45, 40, 288, 289, 283,
- 283, 283, 302, 283, 283, 291, 283, 283,
- 283, 283, 283, 283, 283, 283, 283, 283,
- 283, 283, 283, 292, 283, 305, 283, 283,
- 283, 58, 306, 283, 40, 288, 289, 283,
- 283, 283, 297, 283, 305, 283, 307, 308,
- 309, 310, 45, 40, 288, 289, 283, 283,
- 73, 311, 283, 283, 291, 283, 283, 283,
- 283, 283, 283, 283, 283, 283, 283, 283,
- 283, 283, 292, 283, 312, 308, 313, 313,
- 45, 40, 288, 289, 283, 283, 283, 311,
- 283, 283, 291, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 283, 283, 283, 283,
- 292, 283, 308, 313, 313, 45, 40, 288,
- 289, 283, 283, 283, 311, 283, 283, 291,
- 283, 283, 283, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 283, 292, 283, 314,
- 283, 283, 283, 58, 315, 283, 40, 288,
- 289, 283, 283, 283, 297, 283, 314, 283,
- 316, 317, 318, 319, 45, 40, 288, 289,
- 283, 283, 71, 320, 283, 283, 291, 283,
- 283, 283, 283, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 292, 283, 321, 317,
- 322, 322, 45, 40, 288, 289, 283, 283,
- 283, 320, 283, 283, 291, 283, 283, 283,
- 283, 283, 283, 283, 283, 283, 283, 283,
- 283, 283, 292, 283, 317, 322, 322, 45,
- 40, 288, 289, 283, 283, 283, 320, 283,
- 283, 291, 283, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 283, 283, 283, 292,
- 283, 323, 283, 283, 283, 58, 324, 283,
- 40, 288, 289, 283, 283, 283, 297, 283,
- 323, 283, 325, 326, 327, 328, 45, 40,
- 288, 289, 283, 283, 69, 329, 283, 283,
- 291, 283, 283, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 283, 283, 292, 283,
- 330, 326, 331, 331, 45, 40, 288, 289,
- 283, 283, 283, 329, 283, 283, 291, 283,
- 283, 283, 283, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 292, 283, 326, 331,
- 331, 45, 40, 288, 289, 283, 283, 283,
- 329, 283, 283, 291, 283, 283, 283, 283,
- 283, 283, 283, 283, 283, 283, 283, 283,
- 283, 292, 283, 58, 332, 283, 40, 288,
- 289, 283, 283, 283, 297, 283, 333, 333,
- 283, 40, 288, 289, 283, 283, 283, 297,
- 283, 334, 283, 283, 335, 288, 289, 283,
- 288, 289, 283, 336, 283, 288, 337, 283,
- 288, 338, 283, 288, 283, 334, 283, 283,
- 283, 288, 289, 283, 339, 283, 340, 341,
- 283, 40, 288, 289, 283, 283, 43, 283,
- 42, 283, 333, 333, 283, 40, 288, 289,
- 283, 333, 333, 283, 40, 288, 289, 283,
- 339, 283, 333, 333, 283, 40, 288, 289,
- 283, 339, 283, 340, 333, 283, 40, 288,
- 289, 283, 283, 43, 283, 58, 283, 342,
- 342, 45, 40, 288, 289, 283, 283, 283,
- 297, 283, 343, 67, 344, 345, 48, 40,
- 288, 289, 283, 283, 283, 297, 283, 67,
- 344, 345, 48, 40, 288, 289, 283, 283,
- 283, 297, 283, 344, 344, 48, 40, 288,
- 289, 283, 283, 283, 297, 283, 346, 64,
- 347, 348, 51, 40, 288, 289, 283, 283,
- 283, 297, 283, 64, 347, 348, 51, 40,
- 288, 289, 283, 283, 283, 297, 283, 347,
- 347, 51, 40, 288, 289, 283, 283, 283,
- 297, 283, 349, 61, 350, 351, 54, 40,
- 288, 289, 283, 283, 283, 297, 283, 61,
- 350, 351, 54, 40, 288, 289, 283, 283,
- 283, 297, 283, 350, 350, 54, 40, 288,
- 289, 283, 283, 283, 297, 283, 352, 58,
- 333, 353, 283, 40, 288, 289, 283, 283,
- 283, 297, 283, 58, 333, 353, 283, 40,
- 288, 289, 283, 283, 283, 297, 283, 333,
- 354, 283, 40, 288, 289, 283, 283, 283,
- 297, 283, 58, 283, 333, 333, 283, 40,
- 288, 289, 283, 283, 283, 297, 283, 41,
- 42, 283, 283, 58, 332, 283, 40, 288,
- 289, 283, 283, 283, 297, 283, 41, 283,
- 326, 331, 331, 45, 40, 288, 289, 283,
- 283, 283, 329, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 283, 283, 283, 283,
- 283, 283, 283, 292, 283, 326, 331, 331,
- 45, 40, 288, 289, 283, 283, 283, 329,
- 283, 325, 326, 331, 331, 45, 40, 288,
- 289, 283, 283, 283, 329, 283, 283, 291,
- 283, 283, 283, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 283, 292, 283, 325,
- 326, 327, 331, 45, 40, 288, 289, 283,
- 283, 69, 329, 283, 283, 291, 283, 283,
- 283, 283, 283, 283, 283, 283, 283, 283,
- 283, 283, 283, 292, 283, 323, 283, 355,
- 283, 342, 342, 45, 40, 288, 289, 283,
- 283, 283, 297, 283, 323, 283, 323, 283,
- 283, 283, 333, 333, 283, 40, 288, 289,
- 283, 283, 283, 297, 283, 323, 283, 323,
- 283, 283, 283, 333, 356, 283, 40, 288,
- 289, 283, 283, 283, 297, 283, 323, 283,
- 323, 283, 355, 283, 333, 333, 283, 40,
- 288, 289, 283, 283, 283, 297, 283, 323,
- 283, 323, 42, 283, 283, 58, 324, 283,
- 40, 288, 289, 283, 283, 283, 297, 283,
- 323, 283, 316, 317, 322, 322, 45, 40,
- 288, 289, 283, 283, 283, 320, 283, 283,
- 291, 283, 283, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 283, 283, 292, 283,
- 316, 317, 318, 322, 45, 40, 288, 289,
- 283, 283, 71, 320, 283, 283, 291, 283,
- 283, 283, 283, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 292, 283, 314, 283,
- 357, 283, 342, 342, 45, 40, 288, 289,
- 283, 283, 283, 297, 283, 314, 283, 314,
- 283, 283, 283, 333, 333, 283, 40, 288,
- 289, 283, 283, 283, 297, 283, 314, 283,
- 314, 283, 283, 283, 333, 358, 283, 40,
- 288, 289, 283, 283, 283, 297, 283, 314,
- 283, 314, 283, 357, 283, 333, 333, 283,
- 40, 288, 289, 283, 283, 283, 297, 283,
- 314, 283, 314, 42, 283, 283, 58, 315,
- 283, 40, 288, 289, 283, 283, 283, 297,
- 283, 314, 283, 307, 308, 313, 313, 45,
- 40, 288, 289, 283, 283, 283, 311, 283,
- 283, 291, 283, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 283, 283, 283, 292,
- 283, 307, 308, 309, 313, 45, 40, 288,
- 289, 283, 283, 73, 311, 283, 283, 291,
- 283, 283, 283, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 283, 292, 283, 305,
- 283, 359, 283, 342, 342, 45, 40, 288,
- 289, 283, 283, 283, 297, 283, 305, 283,
- 305, 283, 283, 283, 333, 333, 283, 40,
- 288, 289, 283, 283, 283, 297, 283, 305,
- 283, 305, 283, 283, 283, 333, 360, 283,
- 40, 288, 289, 283, 283, 283, 297, 283,
- 305, 283, 305, 283, 359, 283, 333, 333,
- 283, 40, 288, 289, 283, 283, 283, 297,
- 283, 305, 283, 305, 42, 283, 283, 58,
- 306, 283, 40, 288, 289, 283, 283, 283,
- 297, 283, 305, 283, 298, 299, 304, 304,
- 45, 40, 288, 289, 283, 283, 283, 302,
- 283, 283, 291, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 283, 283, 283, 283,
- 292, 283, 298, 299, 300, 304, 45, 40,
- 288, 289, 283, 283, 75, 302, 283, 283,
- 291, 283, 283, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 283, 283, 292, 283,
- 295, 283, 361, 283, 342, 342, 45, 40,
- 288, 289, 283, 283, 283, 297, 283, 295,
- 283, 295, 283, 283, 283, 333, 333, 283,
- 40, 288, 289, 283, 283, 283, 297, 283,
- 295, 283, 295, 283, 283, 283, 333, 362,
- 283, 40, 288, 289, 283, 283, 283, 297,
- 283, 295, 283, 295, 283, 361, 283, 333,
- 333, 283, 40, 288, 289, 283, 283, 283,
- 297, 283, 295, 283, 76, 44, 44, 45,
- 40, 283, 283, 283, 283, 283, 76, 283,
- 295, 42, 283, 283, 58, 296, 283, 40,
- 288, 289, 283, 283, 283, 297, 283, 295,
- 283, 284, 285, 294, 287, 45, 40, 288,
- 289, 283, 283, 283, 290, 283, 283, 291,
- 283, 283, 283, 283, 283, 283, 283, 283,
- 283, 283, 283, 283, 283, 292, 283, 364,
- 191, 365, 365, 84, 79, 194, 195, 363,
- 363, 363, 197, 363, 363, 200, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 202, 363, 191, 365, 365,
- 84, 79, 194, 195, 363, 363, 363, 197,
- 363, 363, 200, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 202, 363, 366, 363, 363, 363, 98, 367,
- 363, 79, 194, 195, 363, 363, 363, 368,
- 363, 366, 363, 369, 370, 371, 372, 84,
- 79, 194, 195, 363, 363, 115, 373, 363,
- 363, 200, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 202,
- 363, 374, 370, 375, 375, 84, 79, 194,
- 195, 363, 363, 363, 373, 363, 363, 200,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 363, 202, 363, 370,
- 375, 375, 84, 79, 194, 195, 363, 363,
- 363, 373, 363, 363, 200, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 202, 363, 376, 363, 363, 363,
- 98, 377, 363, 79, 194, 195, 363, 363,
- 363, 368, 363, 376, 363, 378, 379, 380,
- 381, 84, 79, 194, 195, 363, 363, 113,
- 382, 363, 363, 200, 363, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 202, 363, 383, 379, 384, 384, 84,
- 79, 194, 195, 363, 363, 363, 382, 363,
- 363, 200, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 202,
- 363, 379, 384, 384, 84, 79, 194, 195,
- 363, 363, 363, 382, 363, 363, 200, 363,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 202, 363, 385, 363,
- 363, 363, 98, 386, 363, 79, 194, 195,
- 363, 363, 363, 368, 363, 385, 363, 387,
- 388, 389, 390, 84, 79, 194, 195, 363,
- 363, 111, 391, 363, 363, 200, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 202, 363, 392, 388, 393,
- 393, 84, 79, 194, 195, 363, 363, 363,
- 391, 363, 363, 200, 363, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 202, 363, 388, 393, 393, 84, 79,
- 194, 195, 363, 363, 363, 391, 363, 363,
- 200, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 202, 363,
- 394, 363, 363, 363, 98, 395, 363, 79,
- 194, 195, 363, 363, 363, 368, 363, 394,
- 363, 396, 397, 398, 399, 84, 79, 194,
- 195, 363, 363, 109, 400, 363, 363, 200,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 363, 202, 363, 401,
- 397, 402, 402, 84, 79, 194, 195, 363,
- 363, 363, 400, 363, 363, 200, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 202, 363, 397, 402, 402,
- 84, 79, 194, 195, 363, 363, 363, 400,
- 363, 363, 200, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 202, 363, 98, 403, 363, 79, 194, 195,
- 363, 363, 363, 368, 363, 404, 404, 363,
- 79, 194, 195, 363, 363, 363, 368, 363,
- 405, 363, 363, 406, 194, 195, 363, 194,
- 195, 363, 407, 363, 194, 408, 363, 194,
- 409, 363, 194, 363, 405, 363, 363, 363,
- 194, 195, 363, 410, 363, 411, 412, 363,
- 79, 194, 195, 363, 363, 82, 363, 81,
- 363, 404, 404, 363, 79, 194, 195, 363,
- 404, 404, 363, 79, 194, 195, 363, 410,
- 363, 404, 404, 363, 79, 194, 195, 363,
- 410, 363, 411, 404, 363, 79, 194, 195,
- 363, 363, 82, 363, 98, 363, 413, 413,
- 84, 79, 194, 195, 363, 363, 363, 368,
- 363, 414, 107, 415, 416, 88, 79, 194,
- 195, 363, 363, 363, 368, 363, 107, 415,
- 416, 88, 79, 194, 195, 363, 363, 363,
- 368, 363, 415, 415, 88, 79, 194, 195,
- 363, 363, 363, 368, 363, 417, 104, 418,
- 419, 91, 79, 194, 195, 363, 363, 363,
- 368, 363, 104, 418, 419, 91, 79, 194,
- 195, 363, 363, 363, 368, 363, 418, 418,
- 91, 79, 194, 195, 363, 363, 363, 368,
- 363, 420, 101, 421, 422, 94, 79, 194,
- 195, 363, 363, 363, 368, 363, 101, 421,
- 422, 94, 79, 194, 195, 363, 363, 363,
- 368, 363, 421, 421, 94, 79, 194, 195,
- 363, 363, 363, 368, 363, 423, 98, 404,
- 424, 363, 79, 194, 195, 363, 363, 363,
- 368, 363, 98, 404, 424, 363, 79, 194,
- 195, 363, 363, 363, 368, 363, 404, 425,
- 363, 79, 194, 195, 363, 363, 363, 368,
- 363, 98, 363, 404, 404, 363, 79, 194,
- 195, 363, 363, 363, 368, 363, 80, 81,
- 363, 363, 98, 403, 363, 79, 194, 195,
- 363, 363, 363, 368, 363, 80, 363, 397,
- 402, 402, 84, 79, 194, 195, 363, 363,
- 363, 400, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 202, 363, 397, 402, 402, 84,
- 79, 194, 195, 363, 363, 363, 400, 363,
- 396, 397, 402, 402, 84, 79, 194, 195,
- 363, 363, 363, 400, 363, 363, 200, 363,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 202, 363, 396, 397,
- 398, 402, 84, 79, 194, 195, 363, 363,
- 109, 400, 363, 363, 200, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 202, 363, 394, 363, 426, 363,
- 413, 413, 84, 79, 194, 195, 363, 363,
- 363, 368, 363, 394, 363, 394, 363, 363,
- 363, 404, 404, 363, 79, 194, 195, 363,
- 363, 363, 368, 363, 394, 363, 394, 363,
- 363, 363, 404, 427, 363, 79, 194, 195,
- 363, 363, 363, 368, 363, 394, 363, 394,
- 363, 426, 363, 404, 404, 363, 79, 194,
- 195, 363, 363, 363, 368, 363, 394, 363,
- 394, 81, 363, 363, 98, 395, 363, 79,
- 194, 195, 363, 363, 363, 368, 363, 394,
- 363, 387, 388, 393, 393, 84, 79, 194,
- 195, 363, 363, 363, 391, 363, 363, 200,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 363, 202, 363, 387,
- 388, 389, 393, 84, 79, 194, 195, 363,
- 363, 111, 391, 363, 363, 200, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 202, 363, 385, 363, 428,
- 363, 413, 413, 84, 79, 194, 195, 363,
- 363, 363, 368, 363, 385, 363, 385, 363,
- 363, 363, 404, 404, 363, 79, 194, 195,
- 363, 363, 363, 368, 363, 385, 363, 385,
- 363, 363, 363, 404, 429, 363, 79, 194,
- 195, 363, 363, 363, 368, 363, 385, 363,
- 385, 363, 428, 363, 404, 404, 363, 79,
- 194, 195, 363, 363, 363, 368, 363, 385,
- 363, 385, 81, 363, 363, 98, 386, 363,
- 79, 194, 195, 363, 363, 363, 368, 363,
- 385, 363, 378, 379, 384, 384, 84, 79,
- 194, 195, 363, 363, 363, 382, 363, 363,
- 200, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 202, 363,
- 378, 379, 380, 384, 84, 79, 194, 195,
- 363, 363, 113, 382, 363, 363, 200, 363,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 202, 363, 376, 363,
- 430, 363, 413, 413, 84, 79, 194, 195,
- 363, 363, 363, 368, 363, 376, 363, 376,
- 363, 363, 363, 404, 404, 363, 79, 194,
- 195, 363, 363, 363, 368, 363, 376, 363,
- 376, 363, 363, 363, 404, 431, 363, 79,
- 194, 195, 363, 363, 363, 368, 363, 376,
- 363, 376, 363, 430, 363, 404, 404, 363,
- 79, 194, 195, 363, 363, 363, 368, 363,
- 376, 363, 376, 81, 363, 363, 98, 377,
- 363, 79, 194, 195, 363, 363, 363, 368,
- 363, 376, 363, 369, 370, 375, 375, 84,
- 79, 194, 195, 363, 363, 363, 373, 363,
- 363, 200, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 202,
- 363, 369, 370, 371, 375, 84, 79, 194,
- 195, 363, 363, 115, 373, 363, 363, 200,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 363, 202, 363, 366,
- 363, 432, 363, 413, 413, 84, 79, 194,
- 195, 363, 363, 363, 368, 363, 366, 363,
- 366, 363, 363, 363, 404, 404, 363, 79,
- 194, 195, 363, 363, 363, 368, 363, 366,
- 363, 366, 363, 363, 363, 404, 433, 363,
- 79, 194, 195, 363, 363, 363, 368, 363,
- 366, 363, 366, 363, 432, 363, 404, 404,
- 363, 79, 194, 195, 363, 363, 363, 368,
- 363, 366, 363, 366, 81, 363, 363, 98,
- 367, 363, 79, 194, 195, 363, 363, 363,
- 368, 363, 366, 363, 116, 83, 83, 84,
- 79, 434, 434, 434, 434, 156, 116, 434,
- 190, 191, 365, 365, 84, 79, 194, 195,
- 363, 363, 363, 197, 363, 363, 200, 363,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 363, 363, 363, 202, 363, 116, 83,
- 83, 84, 79, 434, 434, 434, 434, 434,
- 116, 434, 436, 437, 438, 439, 123, 118,
- 440, 441, 435, 435, 155, 442, 435, 435,
- 443, 435, 435, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 435, 435, 444, 435,
- 445, 437, 439, 439, 123, 118, 440, 441,
- 435, 435, 435, 442, 435, 435, 443, 435,
- 435, 435, 435, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 444, 435, 437, 439,
- 439, 123, 118, 440, 441, 435, 435, 435,
- 442, 435, 435, 443, 435, 435, 435, 435,
- 435, 435, 435, 435, 435, 435, 435, 435,
- 435, 444, 435, 446, 435, 435, 435, 136,
- 447, 435, 118, 440, 441, 435, 435, 435,
- 448, 435, 446, 435, 449, 450, 451, 452,
- 123, 118, 440, 441, 435, 435, 153, 453,
- 435, 435, 443, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 435, 435, 435, 435,
- 444, 435, 454, 450, 455, 455, 123, 118,
- 440, 441, 435, 435, 435, 453, 435, 435,
- 443, 435, 435, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 435, 435, 444, 435,
- 450, 455, 455, 123, 118, 440, 441, 435,
- 435, 435, 453, 435, 435, 443, 435, 435,
- 435, 435, 435, 435, 435, 435, 435, 435,
- 435, 435, 435, 444, 435, 456, 435, 435,
- 435, 136, 457, 435, 118, 440, 441, 435,
- 435, 435, 448, 435, 456, 435, 458, 459,
- 460, 461, 123, 118, 440, 441, 435, 435,
- 151, 462, 435, 435, 443, 435, 435, 435,
- 435, 435, 435, 435, 435, 435, 435, 435,
- 435, 435, 444, 435, 463, 459, 464, 464,
- 123, 118, 440, 441, 435, 435, 435, 462,
- 435, 435, 443, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 435, 435, 435, 435,
- 444, 435, 459, 464, 464, 123, 118, 440,
- 441, 435, 435, 435, 462, 435, 435, 443,
- 435, 435, 435, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 435, 444, 435, 465,
- 435, 435, 435, 136, 466, 435, 118, 440,
- 441, 435, 435, 435, 448, 435, 465, 435,
- 467, 468, 469, 470, 123, 118, 440, 441,
- 435, 435, 149, 471, 435, 435, 443, 435,
- 435, 435, 435, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 444, 435, 472, 468,
- 473, 473, 123, 118, 440, 441, 435, 435,
- 435, 471, 435, 435, 443, 435, 435, 435,
- 435, 435, 435, 435, 435, 435, 435, 435,
- 435, 435, 444, 435, 468, 473, 473, 123,
- 118, 440, 441, 435, 435, 435, 471, 435,
- 435, 443, 435, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 435, 435, 435, 444,
- 435, 474, 435, 435, 435, 136, 475, 435,
- 118, 440, 441, 435, 435, 435, 448, 435,
- 474, 435, 476, 477, 478, 479, 123, 118,
- 440, 441, 435, 435, 147, 480, 435, 435,
- 443, 435, 435, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 435, 435, 444, 435,
- 481, 477, 482, 482, 123, 118, 440, 441,
- 435, 435, 435, 480, 435, 435, 443, 435,
- 435, 435, 435, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 444, 435, 477, 482,
- 482, 123, 118, 440, 441, 435, 435, 435,
- 480, 435, 435, 443, 435, 435, 435, 435,
- 435, 435, 435, 435, 435, 435, 435, 435,
- 435, 444, 435, 136, 483, 435, 118, 440,
- 441, 435, 435, 435, 448, 435, 484, 484,
- 435, 118, 440, 441, 435, 435, 435, 448,
- 435, 485, 435, 435, 486, 440, 441, 435,
- 440, 441, 435, 487, 435, 440, 488, 435,
- 440, 489, 435, 440, 435, 485, 435, 435,
- 435, 440, 441, 435, 490, 435, 491, 492,
- 435, 118, 440, 441, 435, 435, 121, 435,
- 120, 435, 484, 484, 435, 118, 440, 441,
- 435, 484, 484, 435, 118, 440, 441, 435,
- 490, 435, 484, 484, 435, 118, 440, 441,
- 435, 490, 435, 491, 484, 435, 118, 440,
- 441, 435, 435, 121, 435, 136, 435, 493,
- 493, 123, 118, 440, 441, 435, 435, 435,
- 448, 435, 494, 145, 495, 496, 126, 118,
- 440, 441, 435, 435, 435, 448, 435, 145,
- 495, 496, 126, 118, 440, 441, 435, 435,
- 435, 448, 435, 495, 495, 126, 118, 440,
- 441, 435, 435, 435, 448, 435, 497, 142,
- 498, 499, 129, 118, 440, 441, 435, 435,
- 435, 448, 435, 142, 498, 499, 129, 118,
- 440, 441, 435, 435, 435, 448, 435, 498,
- 498, 129, 118, 440, 441, 435, 435, 435,
- 448, 435, 500, 139, 501, 502, 132, 118,
- 440, 441, 435, 435, 435, 448, 435, 139,
- 501, 502, 132, 118, 440, 441, 435, 435,
- 435, 448, 435, 501, 501, 132, 118, 440,
- 441, 435, 435, 435, 448, 435, 503, 136,
- 484, 504, 435, 118, 440, 441, 435, 435,
- 435, 448, 435, 136, 484, 504, 435, 118,
- 440, 441, 435, 435, 435, 448, 435, 484,
- 505, 435, 118, 440, 441, 435, 435, 435,
- 448, 435, 136, 435, 484, 484, 435, 118,
- 440, 441, 435, 435, 435, 448, 435, 119,
- 120, 435, 435, 136, 483, 435, 118, 440,
- 441, 435, 435, 435, 448, 435, 119, 435,
- 477, 482, 482, 123, 118, 440, 441, 435,
- 435, 435, 480, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 435, 435, 435, 435,
- 435, 435, 435, 444, 435, 477, 482, 482,
- 123, 118, 440, 441, 435, 435, 435, 480,
- 435, 476, 477, 482, 482, 123, 118, 440,
- 441, 435, 435, 435, 480, 435, 435, 443,
- 435, 435, 435, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 435, 444, 435, 476,
- 477, 478, 482, 123, 118, 440, 441, 435,
- 435, 147, 480, 435, 435, 443, 435, 435,
- 435, 435, 435, 435, 435, 435, 435, 435,
- 435, 435, 435, 444, 435, 474, 435, 506,
- 435, 493, 493, 123, 118, 440, 441, 435,
- 435, 435, 448, 435, 474, 435, 474, 435,
- 435, 435, 484, 484, 435, 118, 440, 441,
- 435, 435, 435, 448, 435, 474, 435, 474,
- 435, 435, 435, 484, 507, 435, 118, 440,
- 441, 435, 435, 435, 448, 435, 474, 435,
- 474, 435, 506, 435, 484, 484, 435, 118,
- 440, 441, 435, 435, 435, 448, 435, 474,
- 435, 474, 120, 435, 435, 136, 475, 435,
- 118, 440, 441, 435, 435, 435, 448, 435,
- 474, 435, 467, 468, 473, 473, 123, 118,
- 440, 441, 435, 435, 435, 471, 435, 435,
- 443, 435, 435, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 435, 435, 444, 435,
- 467, 468, 469, 473, 123, 118, 440, 441,
- 435, 435, 149, 471, 435, 435, 443, 435,
- 435, 435, 435, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 444, 435, 465, 435,
- 508, 435, 493, 493, 123, 118, 440, 441,
- 435, 435, 435, 448, 435, 465, 435, 465,
- 435, 435, 435, 484, 484, 435, 118, 440,
- 441, 435, 435, 435, 448, 435, 465, 435,
- 465, 435, 435, 435, 484, 509, 435, 118,
- 440, 441, 435, 435, 435, 448, 435, 465,
- 435, 465, 435, 508, 435, 484, 484, 435,
- 118, 440, 441, 435, 435, 435, 448, 435,
- 465, 435, 465, 120, 435, 435, 136, 466,
- 435, 118, 440, 441, 435, 435, 435, 448,
- 435, 465, 435, 458, 459, 464, 464, 123,
- 118, 440, 441, 435, 435, 435, 462, 435,
- 435, 443, 435, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 435, 435, 435, 444,
- 435, 458, 459, 460, 464, 123, 118, 440,
- 441, 435, 435, 151, 462, 435, 435, 443,
- 435, 435, 435, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 435, 444, 435, 456,
- 435, 510, 435, 493, 493, 123, 118, 440,
- 441, 435, 435, 435, 448, 435, 456, 435,
- 456, 435, 435, 435, 484, 484, 435, 118,
- 440, 441, 435, 435, 435, 448, 435, 456,
- 435, 456, 435, 435, 435, 484, 511, 435,
- 118, 440, 441, 435, 435, 435, 448, 435,
- 456, 435, 456, 435, 510, 435, 484, 484,
- 435, 118, 440, 441, 435, 435, 435, 448,
- 435, 456, 435, 456, 120, 435, 435, 136,
- 457, 435, 118, 440, 441, 435, 435, 435,
- 448, 435, 456, 435, 449, 450, 455, 455,
- 123, 118, 440, 441, 435, 435, 435, 453,
- 435, 435, 443, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 435, 435, 435, 435,
- 444, 435, 449, 450, 451, 455, 123, 118,
- 440, 441, 435, 435, 153, 453, 435, 435,
- 443, 435, 435, 435, 435, 435, 435, 435,
- 435, 435, 435, 435, 435, 435, 444, 435,
- 446, 435, 512, 435, 493, 493, 123, 118,
- 440, 441, 435, 435, 435, 448, 435, 446,
- 435, 446, 435, 435, 435, 484, 484, 435,
- 118, 440, 441, 435, 435, 435, 448, 435,
- 446, 435, 446, 435, 435, 435, 484, 513,
- 435, 118, 440, 441, 435, 435, 435, 448,
- 435, 446, 435, 446, 435, 512, 435, 484,
- 484, 435, 118, 440, 441, 435, 435, 435,
- 448, 435, 446, 435, 446, 120, 435, 435,
- 136, 447, 435, 118, 440, 441, 435, 435,
- 435, 448, 435, 446, 435, 436, 437, 439,
- 439, 123, 118, 440, 441, 435, 435, 435,
- 442, 435, 435, 443, 435, 435, 435, 435,
- 435, 435, 435, 435, 435, 435, 435, 435,
- 435, 444, 435, 188, 189, 190, 191, 514,
- 365, 84, 79, 194, 195, 196, 196, 156,
- 197, 363, 188, 200, 363, 363, 363, 363,
- 363, 363, 363, 363, 363, 363, 363, 363,
- 363, 202, 363, 204, 515, 206, 207, 6,
- 1, 208, 209, 203, 203, 38, 210, 203,
- 203, 211, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 212,
- 203, 215, 189, 190, 191, 516, 517, 84,
- 157, 518, 519, 203, 196, 156, 520, 203,
- 215, 200, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 202,
- 203, 116, 521, 521, 84, 157, 208, 209,
- 203, 203, 156, 522, 203, 523, 203, 203,
- 524, 518, 519, 203, 518, 519, 203, 256,
- 203, 518, 525, 203, 518, 526, 203, 518,
- 203, 523, 203, 203, 203, 518, 519, 203,
- 527, 3, 363, 363, 404, 433, 363, 79,
- 194, 195, 363, 363, 363, 368, 363, 527,
- 363, 528, 370, 529, 530, 84, 157, 518,
- 519, 203, 203, 158, 373, 203, 203, 200,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 202, 203, 531,
- 370, 532, 532, 84, 157, 518, 519, 203,
- 203, 203, 373, 203, 203, 200, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 202, 203, 370, 532, 532,
- 84, 157, 518, 519, 203, 203, 203, 373,
- 203, 203, 200, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 202, 203, 528, 370, 532, 532, 84, 157,
- 518, 519, 203, 203, 203, 373, 203, 203,
- 200, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 203, 203, 202, 203,
- 528, 370, 529, 532, 84, 157, 518, 519,
- 203, 203, 158, 373, 203, 203, 200, 203,
- 203, 203, 203, 203, 203, 203, 203, 203,
- 203, 203, 203, 203, 202, 203, 215, 203,
- 281, 116, 533, 533, 160, 157, 208, 209,
- 203, 203, 203, 522, 203, 215, 203, 534,
- 184, 535, 536, 162, 157, 518, 519, 203,
- 203, 203, 537, 203, 184, 535, 536, 162,
- 157, 518, 519, 203, 203, 203, 537, 203,
- 535, 535, 162, 157, 518, 519, 203, 203,
- 203, 537, 203, 538, 181, 539, 540, 165,
- 157, 518, 519, 203, 203, 203, 537, 203,
- 181, 539, 540, 165, 157, 518, 519, 203,
- 203, 203, 537, 203, 539, 539, 165, 157,
- 518, 519, 203, 203, 203, 537, 203, 541,
- 178, 542, 543, 168, 157, 518, 519, 203,
- 203, 203, 537, 203, 178, 542, 543, 168,
- 157, 518, 519, 203, 203, 203, 537, 203,
- 542, 542, 168, 157, 518, 519, 203, 203,
- 203, 537, 203, 544, 175, 545, 546, 203,
- 157, 518, 519, 203, 203, 203, 537, 203,
- 175, 545, 546, 203, 157, 518, 519, 203,
- 203, 203, 537, 203, 545, 545, 203, 157,
- 518, 519, 203, 203, 203, 537, 203, 547,
- 203, 548, 549, 203, 157, 518, 519, 203,
- 203, 172, 203, 171, 203, 545, 545, 203,
- 157, 518, 519, 203, 545, 545, 203, 157,
- 518, 519, 203, 547, 203, 545, 545, 203,
- 157, 518, 519, 203, 547, 203, 548, 545,
- 203, 157, 518, 519, 203, 203, 172, 203,
- 527, 171, 363, 363, 98, 367, 363, 79,
- 194, 195, 363, 363, 363, 368, 363, 527,
- 363, 551, 550, 552, 552, 550, 186, 553,
- 554, 550, 552, 552, 550, 186, 553, 554,
- 550, 555, 550, 550, 556, 553, 554, 550,
- 553, 554, 550, 557, 550, 553, 558, 550,
- 553, 559, 550, 553, 550, 555, 550, 550,
- 550, 553, 554, 550, 0
+ 197, 198, 199, 200, 201, 187, 203, 204,
+ 205, 206, 6, 1, 207, 208, 202, 202,
+ 38, 209, 202, 202, 210, 202, 211, 204,
+ 212, 212, 6, 1, 207, 208, 202, 202,
+ 202, 209, 202, 202, 210, 202, 204, 212,
+ 212, 6, 1, 207, 208, 202, 202, 202,
+ 209, 202, 202, 210, 202, 213, 202, 202,
+ 202, 19, 214, 202, 1, 207, 208, 202,
+ 202, 202, 215, 202, 213, 202, 216, 217,
+ 218, 219, 6, 1, 207, 208, 202, 202,
+ 36, 220, 202, 202, 210, 202, 221, 217,
+ 222, 222, 6, 1, 207, 208, 202, 202,
+ 202, 220, 202, 202, 210, 202, 217, 222,
+ 222, 6, 1, 207, 208, 202, 202, 202,
+ 220, 202, 202, 210, 202, 223, 202, 202,
+ 202, 19, 224, 202, 1, 207, 208, 202,
+ 202, 202, 215, 202, 223, 202, 225, 226,
+ 227, 228, 6, 1, 207, 208, 202, 202,
+ 34, 229, 202, 202, 210, 202, 230, 226,
+ 231, 231, 6, 1, 207, 208, 202, 202,
+ 202, 229, 202, 202, 210, 202, 226, 231,
+ 231, 6, 1, 207, 208, 202, 202, 202,
+ 229, 202, 202, 210, 202, 232, 202, 202,
+ 202, 19, 233, 202, 1, 207, 208, 202,
+ 202, 202, 215, 202, 232, 202, 234, 235,
+ 236, 237, 6, 1, 207, 208, 202, 202,
+ 32, 238, 202, 202, 210, 202, 239, 235,
+ 240, 240, 6, 1, 207, 208, 202, 202,
+ 202, 238, 202, 202, 210, 202, 235, 240,
+ 240, 6, 1, 207, 208, 202, 202, 202,
+ 238, 202, 202, 210, 202, 241, 202, 202,
+ 202, 19, 242, 202, 1, 207, 208, 202,
+ 202, 202, 215, 202, 241, 202, 243, 244,
+ 245, 246, 6, 1, 207, 208, 202, 202,
+ 30, 247, 202, 202, 210, 202, 248, 244,
+ 249, 249, 6, 1, 207, 208, 202, 202,
+ 202, 247, 202, 202, 210, 202, 244, 249,
+ 249, 6, 1, 207, 208, 202, 202, 202,
+ 247, 202, 202, 210, 202, 19, 250, 202,
+ 1, 207, 208, 202, 202, 202, 215, 202,
+ 251, 251, 202, 1, 207, 208, 202, 202,
+ 202, 215, 202, 252, 202, 202, 253, 207,
+ 208, 202, 207, 208, 202, 254, 202, 207,
+ 255, 202, 207, 256, 202, 207, 202, 252,
+ 202, 202, 202, 207, 208, 202, 257, 202,
+ 258, 259, 202, 1, 207, 208, 202, 202,
+ 4, 202, 3, 202, 251, 251, 202, 1,
+ 207, 208, 202, 251, 251, 202, 1, 207,
+ 208, 202, 257, 202, 251, 251, 202, 1,
+ 207, 208, 202, 257, 202, 258, 251, 202,
+ 1, 207, 208, 202, 202, 4, 202, 19,
+ 202, 260, 260, 6, 1, 207, 208, 202,
+ 202, 202, 215, 202, 261, 28, 262, 263,
+ 9, 1, 207, 208, 202, 202, 202, 215,
+ 202, 28, 262, 263, 9, 1, 207, 208,
+ 202, 202, 202, 215, 202, 262, 262, 9,
+ 1, 207, 208, 202, 202, 202, 215, 202,
+ 264, 25, 265, 266, 12, 1, 207, 208,
+ 202, 202, 202, 215, 202, 25, 265, 266,
+ 12, 1, 207, 208, 202, 202, 202, 215,
+ 202, 265, 265, 12, 1, 207, 208, 202,
+ 202, 202, 215, 202, 267, 22, 268, 269,
+ 15, 1, 207, 208, 202, 202, 202, 215,
+ 202, 22, 268, 269, 15, 1, 207, 208,
+ 202, 202, 202, 215, 202, 268, 268, 15,
+ 1, 207, 208, 202, 202, 202, 215, 202,
+ 270, 19, 251, 271, 202, 1, 207, 208,
+ 202, 202, 202, 215, 202, 19, 251, 271,
+ 202, 1, 207, 208, 202, 202, 202, 215,
+ 202, 251, 272, 202, 1, 207, 208, 202,
+ 202, 202, 215, 202, 19, 202, 251, 251,
+ 202, 1, 207, 208, 202, 202, 202, 215,
+ 202, 2, 3, 202, 202, 19, 250, 202,
+ 1, 207, 208, 202, 202, 202, 215, 202,
+ 2, 202, 244, 249, 249, 6, 1, 207,
+ 208, 202, 202, 202, 247, 202, 243, 244,
+ 249, 249, 6, 1, 207, 208, 202, 202,
+ 202, 247, 202, 202, 210, 202, 243, 244,
+ 245, 249, 6, 1, 207, 208, 202, 202,
+ 30, 247, 202, 202, 210, 202, 241, 202,
+ 273, 202, 260, 260, 6, 1, 207, 208,
+ 202, 202, 202, 215, 202, 241, 202, 241,
+ 202, 202, 202, 251, 251, 202, 1, 207,
+ 208, 202, 202, 202, 215, 202, 241, 202,
+ 241, 202, 202, 202, 251, 274, 202, 1,
+ 207, 208, 202, 202, 202, 215, 202, 241,
+ 202, 241, 202, 273, 202, 251, 251, 202,
+ 1, 207, 208, 202, 202, 202, 215, 202,
+ 241, 202, 241, 3, 202, 202, 19, 242,
+ 202, 1, 207, 208, 202, 202, 202, 215,
+ 202, 241, 202, 234, 235, 240, 240, 6,
+ 1, 207, 208, 202, 202, 202, 238, 202,
+ 202, 210, 202, 234, 235, 236, 240, 6,
+ 1, 207, 208, 202, 202, 32, 238, 202,
+ 202, 210, 202, 232, 202, 275, 202, 260,
+ 260, 6, 1, 207, 208, 202, 202, 202,
+ 215, 202, 232, 202, 232, 202, 202, 202,
+ 251, 251, 202, 1, 207, 208, 202, 202,
+ 202, 215, 202, 232, 202, 232, 202, 202,
+ 202, 251, 276, 202, 1, 207, 208, 202,
+ 202, 202, 215, 202, 232, 202, 232, 202,
+ 275, 202, 251, 251, 202, 1, 207, 208,
+ 202, 202, 202, 215, 202, 232, 202, 232,
+ 3, 202, 202, 19, 233, 202, 1, 207,
+ 208, 202, 202, 202, 215, 202, 232, 202,
+ 225, 226, 231, 231, 6, 1, 207, 208,
+ 202, 202, 202, 229, 202, 202, 210, 202,
+ 225, 226, 227, 231, 6, 1, 207, 208,
+ 202, 202, 34, 229, 202, 202, 210, 202,
+ 223, 202, 277, 202, 260, 260, 6, 1,
+ 207, 208, 202, 202, 202, 215, 202, 223,
+ 202, 223, 202, 202, 202, 251, 251, 202,
+ 1, 207, 208, 202, 202, 202, 215, 202,
+ 223, 202, 223, 202, 202, 202, 251, 278,
+ 202, 1, 207, 208, 202, 202, 202, 215,
+ 202, 223, 202, 223, 202, 277, 202, 251,
+ 251, 202, 1, 207, 208, 202, 202, 202,
+ 215, 202, 223, 202, 223, 3, 202, 202,
+ 19, 224, 202, 1, 207, 208, 202, 202,
+ 202, 215, 202, 223, 202, 216, 217, 222,
+ 222, 6, 1, 207, 208, 202, 202, 202,
+ 220, 202, 202, 210, 202, 216, 217, 218,
+ 222, 6, 1, 207, 208, 202, 202, 36,
+ 220, 202, 202, 210, 202, 213, 202, 279,
+ 202, 260, 260, 6, 1, 207, 208, 202,
+ 202, 202, 215, 202, 213, 202, 213, 202,
+ 202, 202, 251, 251, 202, 1, 207, 208,
+ 202, 202, 202, 215, 202, 213, 202, 213,
+ 202, 202, 202, 251, 280, 202, 1, 207,
+ 208, 202, 202, 202, 215, 202, 213, 202,
+ 213, 202, 279, 202, 251, 251, 202, 1,
+ 207, 208, 202, 202, 202, 215, 202, 213,
+ 202, 213, 3, 202, 202, 19, 214, 202,
+ 1, 207, 208, 202, 202, 202, 215, 202,
+ 213, 202, 203, 204, 212, 212, 6, 1,
+ 207, 208, 202, 202, 202, 209, 202, 202,
+ 210, 202, 203, 204, 205, 212, 6, 1,
+ 207, 208, 202, 202, 38, 209, 202, 202,
+ 210, 202, 282, 283, 284, 285, 45, 40,
+ 286, 287, 281, 281, 77, 288, 281, 281,
+ 289, 281, 290, 283, 291, 285, 45, 40,
+ 286, 287, 281, 281, 281, 288, 281, 281,
+ 289, 281, 283, 291, 285, 45, 40, 286,
+ 287, 281, 281, 281, 288, 281, 281, 289,
+ 281, 292, 281, 281, 281, 58, 293, 281,
+ 40, 286, 287, 281, 281, 281, 294, 281,
+ 292, 281, 295, 296, 297, 298, 45, 40,
+ 286, 287, 281, 281, 75, 299, 281, 281,
+ 289, 281, 300, 296, 301, 301, 45, 40,
+ 286, 287, 281, 281, 281, 299, 281, 281,
+ 289, 281, 296, 301, 301, 45, 40, 286,
+ 287, 281, 281, 281, 299, 281, 281, 289,
+ 281, 302, 281, 281, 281, 58, 303, 281,
+ 40, 286, 287, 281, 281, 281, 294, 281,
+ 302, 281, 304, 305, 306, 307, 45, 40,
+ 286, 287, 281, 281, 73, 308, 281, 281,
+ 289, 281, 309, 305, 310, 310, 45, 40,
+ 286, 287, 281, 281, 281, 308, 281, 281,
+ 289, 281, 305, 310, 310, 45, 40, 286,
+ 287, 281, 281, 281, 308, 281, 281, 289,
+ 281, 311, 281, 281, 281, 58, 312, 281,
+ 40, 286, 287, 281, 281, 281, 294, 281,
+ 311, 281, 313, 314, 315, 316, 45, 40,
+ 286, 287, 281, 281, 71, 317, 281, 281,
+ 289, 281, 318, 314, 319, 319, 45, 40,
+ 286, 287, 281, 281, 281, 317, 281, 281,
+ 289, 281, 314, 319, 319, 45, 40, 286,
+ 287, 281, 281, 281, 317, 281, 281, 289,
+ 281, 320, 281, 281, 281, 58, 321, 281,
+ 40, 286, 287, 281, 281, 281, 294, 281,
+ 320, 281, 322, 323, 324, 325, 45, 40,
+ 286, 287, 281, 281, 69, 326, 281, 281,
+ 289, 281, 327, 323, 328, 328, 45, 40,
+ 286, 287, 281, 281, 281, 326, 281, 281,
+ 289, 281, 323, 328, 328, 45, 40, 286,
+ 287, 281, 281, 281, 326, 281, 281, 289,
+ 281, 58, 329, 281, 40, 286, 287, 281,
+ 281, 281, 294, 281, 330, 330, 281, 40,
+ 286, 287, 281, 281, 281, 294, 281, 331,
+ 281, 281, 332, 286, 287, 281, 286, 287,
+ 281, 333, 281, 286, 334, 281, 286, 335,
+ 281, 286, 281, 331, 281, 281, 281, 286,
+ 287, 281, 336, 281, 337, 338, 281, 40,
+ 286, 287, 281, 281, 43, 281, 42, 281,
+ 330, 330, 281, 40, 286, 287, 281, 330,
+ 330, 281, 40, 286, 287, 281, 336, 281,
+ 330, 330, 281, 40, 286, 287, 281, 336,
+ 281, 337, 330, 281, 40, 286, 287, 281,
+ 281, 43, 281, 58, 281, 339, 339, 45,
+ 40, 286, 287, 281, 281, 281, 294, 281,
+ 340, 67, 341, 342, 48, 40, 286, 287,
+ 281, 281, 281, 294, 281, 67, 341, 342,
+ 48, 40, 286, 287, 281, 281, 281, 294,
+ 281, 341, 341, 48, 40, 286, 287, 281,
+ 281, 281, 294, 281, 343, 64, 344, 345,
+ 51, 40, 286, 287, 281, 281, 281, 294,
+ 281, 64, 344, 345, 51, 40, 286, 287,
+ 281, 281, 281, 294, 281, 344, 344, 51,
+ 40, 286, 287, 281, 281, 281, 294, 281,
+ 346, 61, 347, 348, 54, 40, 286, 287,
+ 281, 281, 281, 294, 281, 61, 347, 348,
+ 54, 40, 286, 287, 281, 281, 281, 294,
+ 281, 347, 347, 54, 40, 286, 287, 281,
+ 281, 281, 294, 281, 349, 58, 330, 350,
+ 281, 40, 286, 287, 281, 281, 281, 294,
+ 281, 58, 330, 350, 281, 40, 286, 287,
+ 281, 281, 281, 294, 281, 330, 351, 281,
+ 40, 286, 287, 281, 281, 281, 294, 281,
+ 58, 281, 330, 330, 281, 40, 286, 287,
+ 281, 281, 281, 294, 281, 41, 42, 281,
+ 281, 58, 329, 281, 40, 286, 287, 281,
+ 281, 281, 294, 281, 41, 281, 323, 328,
+ 328, 45, 40, 286, 287, 281, 281, 281,
+ 326, 281, 322, 323, 328, 328, 45, 40,
+ 286, 287, 281, 281, 281, 326, 281, 281,
+ 289, 281, 322, 323, 324, 328, 45, 40,
+ 286, 287, 281, 281, 69, 326, 281, 281,
+ 289, 281, 320, 281, 352, 281, 339, 339,
+ 45, 40, 286, 287, 281, 281, 281, 294,
+ 281, 320, 281, 320, 281, 281, 281, 330,
+ 330, 281, 40, 286, 287, 281, 281, 281,
+ 294, 281, 320, 281, 320, 281, 281, 281,
+ 330, 353, 281, 40, 286, 287, 281, 281,
+ 281, 294, 281, 320, 281, 320, 281, 352,
+ 281, 330, 330, 281, 40, 286, 287, 281,
+ 281, 281, 294, 281, 320, 281, 320, 42,
+ 281, 281, 58, 321, 281, 40, 286, 287,
+ 281, 281, 281, 294, 281, 320, 281, 313,
+ 314, 319, 319, 45, 40, 286, 287, 281,
+ 281, 281, 317, 281, 281, 289, 281, 313,
+ 314, 315, 319, 45, 40, 286, 287, 281,
+ 281, 71, 317, 281, 281, 289, 281, 311,
+ 281, 354, 281, 339, 339, 45, 40, 286,
+ 287, 281, 281, 281, 294, 281, 311, 281,
+ 311, 281, 281, 281, 330, 330, 281, 40,
+ 286, 287, 281, 281, 281, 294, 281, 311,
+ 281, 311, 281, 281, 281, 330, 355, 281,
+ 40, 286, 287, 281, 281, 281, 294, 281,
+ 311, 281, 311, 281, 354, 281, 330, 330,
+ 281, 40, 286, 287, 281, 281, 281, 294,
+ 281, 311, 281, 311, 42, 281, 281, 58,
+ 312, 281, 40, 286, 287, 281, 281, 281,
+ 294, 281, 311, 281, 304, 305, 310, 310,
+ 45, 40, 286, 287, 281, 281, 281, 308,
+ 281, 281, 289, 281, 304, 305, 306, 310,
+ 45, 40, 286, 287, 281, 281, 73, 308,
+ 281, 281, 289, 281, 302, 281, 356, 281,
+ 339, 339, 45, 40, 286, 287, 281, 281,
+ 281, 294, 281, 302, 281, 302, 281, 281,
+ 281, 330, 330, 281, 40, 286, 287, 281,
+ 281, 281, 294, 281, 302, 281, 302, 281,
+ 281, 281, 330, 357, 281, 40, 286, 287,
+ 281, 281, 281, 294, 281, 302, 281, 302,
+ 281, 356, 281, 330, 330, 281, 40, 286,
+ 287, 281, 281, 281, 294, 281, 302, 281,
+ 302, 42, 281, 281, 58, 303, 281, 40,
+ 286, 287, 281, 281, 281, 294, 281, 302,
+ 281, 295, 296, 301, 301, 45, 40, 286,
+ 287, 281, 281, 281, 299, 281, 281, 289,
+ 281, 295, 296, 297, 301, 45, 40, 286,
+ 287, 281, 281, 75, 299, 281, 281, 289,
+ 281, 292, 281, 358, 281, 339, 339, 45,
+ 40, 286, 287, 281, 281, 281, 294, 281,
+ 292, 281, 292, 281, 281, 281, 330, 330,
+ 281, 40, 286, 287, 281, 281, 281, 294,
+ 281, 292, 281, 292, 281, 281, 281, 330,
+ 359, 281, 40, 286, 287, 281, 281, 281,
+ 294, 281, 292, 281, 292, 281, 358, 281,
+ 330, 330, 281, 40, 286, 287, 281, 281,
+ 281, 294, 281, 292, 281, 76, 44, 44,
+ 45, 40, 281, 281, 281, 281, 281, 76,
+ 281, 292, 42, 281, 281, 58, 293, 281,
+ 40, 286, 287, 281, 281, 281, 294, 281,
+ 292, 281, 282, 283, 291, 285, 45, 40,
+ 286, 287, 281, 281, 281, 288, 281, 281,
+ 289, 281, 361, 191, 362, 362, 84, 79,
+ 194, 195, 360, 360, 360, 197, 360, 360,
+ 200, 360, 191, 362, 362, 84, 79, 194,
+ 195, 360, 360, 360, 197, 360, 360, 200,
+ 360, 363, 360, 360, 360, 98, 364, 360,
+ 79, 194, 195, 360, 360, 360, 365, 360,
+ 363, 360, 366, 367, 368, 369, 84, 79,
+ 194, 195, 360, 360, 115, 370, 360, 360,
+ 200, 360, 371, 367, 372, 372, 84, 79,
+ 194, 195, 360, 360, 360, 370, 360, 360,
+ 200, 360, 367, 372, 372, 84, 79, 194,
+ 195, 360, 360, 360, 370, 360, 360, 200,
+ 360, 373, 360, 360, 360, 98, 374, 360,
+ 79, 194, 195, 360, 360, 360, 365, 360,
+ 373, 360, 375, 376, 377, 378, 84, 79,
+ 194, 195, 360, 360, 113, 379, 360, 360,
+ 200, 360, 380, 376, 381, 381, 84, 79,
+ 194, 195, 360, 360, 360, 379, 360, 360,
+ 200, 360, 376, 381, 381, 84, 79, 194,
+ 195, 360, 360, 360, 379, 360, 360, 200,
+ 360, 382, 360, 360, 360, 98, 383, 360,
+ 79, 194, 195, 360, 360, 360, 365, 360,
+ 382, 360, 384, 385, 386, 387, 84, 79,
+ 194, 195, 360, 360, 111, 388, 360, 360,
+ 200, 360, 389, 385, 390, 390, 84, 79,
+ 194, 195, 360, 360, 360, 388, 360, 360,
+ 200, 360, 385, 390, 390, 84, 79, 194,
+ 195, 360, 360, 360, 388, 360, 360, 200,
+ 360, 391, 360, 360, 360, 98, 392, 360,
+ 79, 194, 195, 360, 360, 360, 365, 360,
+ 391, 360, 393, 394, 395, 396, 84, 79,
+ 194, 195, 360, 360, 109, 397, 360, 360,
+ 200, 360, 398, 394, 399, 399, 84, 79,
+ 194, 195, 360, 360, 360, 397, 360, 360,
+ 200, 360, 394, 399, 399, 84, 79, 194,
+ 195, 360, 360, 360, 397, 360, 360, 200,
+ 360, 98, 400, 360, 79, 194, 195, 360,
+ 360, 360, 365, 360, 401, 401, 360, 79,
+ 194, 195, 360, 360, 360, 365, 360, 402,
+ 360, 360, 403, 194, 195, 360, 194, 195,
+ 360, 404, 360, 194, 405, 360, 194, 406,
+ 360, 194, 360, 402, 360, 360, 360, 194,
+ 195, 360, 407, 360, 408, 409, 360, 79,
+ 194, 195, 360, 360, 82, 360, 81, 360,
+ 401, 401, 360, 79, 194, 195, 360, 401,
+ 401, 360, 79, 194, 195, 360, 407, 360,
+ 401, 401, 360, 79, 194, 195, 360, 407,
+ 360, 408, 401, 360, 79, 194, 195, 360,
+ 360, 82, 360, 98, 360, 410, 410, 84,
+ 79, 194, 195, 360, 360, 360, 365, 360,
+ 411, 107, 412, 413, 88, 79, 194, 195,
+ 360, 360, 360, 365, 360, 107, 412, 413,
+ 88, 79, 194, 195, 360, 360, 360, 365,
+ 360, 412, 412, 88, 79, 194, 195, 360,
+ 360, 360, 365, 360, 414, 104, 415, 416,
+ 91, 79, 194, 195, 360, 360, 360, 365,
+ 360, 104, 415, 416, 91, 79, 194, 195,
+ 360, 360, 360, 365, 360, 415, 415, 91,
+ 79, 194, 195, 360, 360, 360, 365, 360,
+ 417, 101, 418, 419, 94, 79, 194, 195,
+ 360, 360, 360, 365, 360, 101, 418, 419,
+ 94, 79, 194, 195, 360, 360, 360, 365,
+ 360, 418, 418, 94, 79, 194, 195, 360,
+ 360, 360, 365, 360, 420, 98, 401, 421,
+ 360, 79, 194, 195, 360, 360, 360, 365,
+ 360, 98, 401, 421, 360, 79, 194, 195,
+ 360, 360, 360, 365, 360, 401, 422, 360,
+ 79, 194, 195, 360, 360, 360, 365, 360,
+ 98, 360, 401, 401, 360, 79, 194, 195,
+ 360, 360, 360, 365, 360, 80, 81, 360,
+ 360, 98, 400, 360, 79, 194, 195, 360,
+ 360, 360, 365, 360, 80, 360, 394, 399,
+ 399, 84, 79, 194, 195, 360, 360, 360,
+ 397, 360, 393, 394, 399, 399, 84, 79,
+ 194, 195, 360, 360, 360, 397, 360, 360,
+ 200, 360, 393, 394, 395, 399, 84, 79,
+ 194, 195, 360, 360, 109, 397, 360, 360,
+ 200, 360, 391, 360, 423, 360, 410, 410,
+ 84, 79, 194, 195, 360, 360, 360, 365,
+ 360, 391, 360, 391, 360, 360, 360, 401,
+ 401, 360, 79, 194, 195, 360, 360, 360,
+ 365, 360, 391, 360, 391, 360, 360, 360,
+ 401, 424, 360, 79, 194, 195, 360, 360,
+ 360, 365, 360, 391, 360, 391, 360, 423,
+ 360, 401, 401, 360, 79, 194, 195, 360,
+ 360, 360, 365, 360, 391, 360, 391, 81,
+ 360, 360, 98, 392, 360, 79, 194, 195,
+ 360, 360, 360, 365, 360, 391, 360, 384,
+ 385, 390, 390, 84, 79, 194, 195, 360,
+ 360, 360, 388, 360, 360, 200, 360, 384,
+ 385, 386, 390, 84, 79, 194, 195, 360,
+ 360, 111, 388, 360, 360, 200, 360, 382,
+ 360, 425, 360, 410, 410, 84, 79, 194,
+ 195, 360, 360, 360, 365, 360, 382, 360,
+ 382, 360, 360, 360, 401, 401, 360, 79,
+ 194, 195, 360, 360, 360, 365, 360, 382,
+ 360, 382, 360, 360, 360, 401, 426, 360,
+ 79, 194, 195, 360, 360, 360, 365, 360,
+ 382, 360, 382, 360, 425, 360, 401, 401,
+ 360, 79, 194, 195, 360, 360, 360, 365,
+ 360, 382, 360, 382, 81, 360, 360, 98,
+ 383, 360, 79, 194, 195, 360, 360, 360,
+ 365, 360, 382, 360, 375, 376, 381, 381,
+ 84, 79, 194, 195, 360, 360, 360, 379,
+ 360, 360, 200, 360, 375, 376, 377, 381,
+ 84, 79, 194, 195, 360, 360, 113, 379,
+ 360, 360, 200, 360, 373, 360, 427, 360,
+ 410, 410, 84, 79, 194, 195, 360, 360,
+ 360, 365, 360, 373, 360, 373, 360, 360,
+ 360, 401, 401, 360, 79, 194, 195, 360,
+ 360, 360, 365, 360, 373, 360, 373, 360,
+ 360, 360, 401, 428, 360, 79, 194, 195,
+ 360, 360, 360, 365, 360, 373, 360, 373,
+ 360, 427, 360, 401, 401, 360, 79, 194,
+ 195, 360, 360, 360, 365, 360, 373, 360,
+ 373, 81, 360, 360, 98, 374, 360, 79,
+ 194, 195, 360, 360, 360, 365, 360, 373,
+ 360, 366, 367, 372, 372, 84, 79, 194,
+ 195, 360, 360, 360, 370, 360, 360, 200,
+ 360, 366, 367, 368, 372, 84, 79, 194,
+ 195, 360, 360, 115, 370, 360, 360, 200,
+ 360, 363, 360, 429, 360, 410, 410, 84,
+ 79, 194, 195, 360, 360, 360, 365, 360,
+ 363, 360, 363, 360, 360, 360, 401, 401,
+ 360, 79, 194, 195, 360, 360, 360, 365,
+ 360, 363, 360, 363, 360, 360, 360, 401,
+ 430, 360, 79, 194, 195, 360, 360, 360,
+ 365, 360, 363, 360, 363, 360, 429, 360,
+ 401, 401, 360, 79, 194, 195, 360, 360,
+ 360, 365, 360, 363, 360, 363, 81, 360,
+ 360, 98, 364, 360, 79, 194, 195, 360,
+ 360, 360, 365, 360, 363, 360, 116, 83,
+ 83, 84, 79, 431, 431, 431, 431, 156,
+ 116, 431, 190, 191, 362, 362, 84, 79,
+ 194, 195, 360, 360, 360, 197, 360, 360,
+ 200, 360, 116, 83, 83, 84, 79, 431,
+ 431, 431, 431, 431, 116, 431, 433, 434,
+ 435, 436, 123, 118, 437, 438, 432, 432,
+ 155, 439, 432, 432, 440, 432, 441, 434,
+ 436, 436, 123, 118, 437, 438, 432, 432,
+ 432, 439, 432, 432, 440, 432, 434, 436,
+ 436, 123, 118, 437, 438, 432, 432, 432,
+ 439, 432, 432, 440, 432, 442, 432, 432,
+ 432, 136, 443, 432, 118, 437, 438, 432,
+ 432, 432, 444, 432, 442, 432, 445, 446,
+ 447, 448, 123, 118, 437, 438, 432, 432,
+ 153, 449, 432, 432, 440, 432, 450, 446,
+ 451, 451, 123, 118, 437, 438, 432, 432,
+ 432, 449, 432, 432, 440, 432, 446, 451,
+ 451, 123, 118, 437, 438, 432, 432, 432,
+ 449, 432, 432, 440, 432, 452, 432, 432,
+ 432, 136, 453, 432, 118, 437, 438, 432,
+ 432, 432, 444, 432, 452, 432, 454, 455,
+ 456, 457, 123, 118, 437, 438, 432, 432,
+ 151, 458, 432, 432, 440, 432, 459, 455,
+ 460, 460, 123, 118, 437, 438, 432, 432,
+ 432, 458, 432, 432, 440, 432, 455, 460,
+ 460, 123, 118, 437, 438, 432, 432, 432,
+ 458, 432, 432, 440, 432, 461, 432, 432,
+ 432, 136, 462, 432, 118, 437, 438, 432,
+ 432, 432, 444, 432, 461, 432, 463, 464,
+ 465, 466, 123, 118, 437, 438, 432, 432,
+ 149, 467, 432, 432, 440, 432, 468, 464,
+ 469, 469, 123, 118, 437, 438, 432, 432,
+ 432, 467, 432, 432, 440, 432, 464, 469,
+ 469, 123, 118, 437, 438, 432, 432, 432,
+ 467, 432, 432, 440, 432, 470, 432, 432,
+ 432, 136, 471, 432, 118, 437, 438, 432,
+ 432, 432, 444, 432, 470, 432, 472, 473,
+ 474, 475, 123, 118, 437, 438, 432, 432,
+ 147, 476, 432, 432, 440, 432, 477, 473,
+ 478, 478, 123, 118, 437, 438, 432, 432,
+ 432, 476, 432, 432, 440, 432, 473, 478,
+ 478, 123, 118, 437, 438, 432, 432, 432,
+ 476, 432, 432, 440, 432, 136, 479, 432,
+ 118, 437, 438, 432, 432, 432, 444, 432,
+ 480, 480, 432, 118, 437, 438, 432, 432,
+ 432, 444, 432, 481, 432, 432, 482, 437,
+ 438, 432, 437, 438, 432, 483, 432, 437,
+ 484, 432, 437, 485, 432, 437, 432, 481,
+ 432, 432, 432, 437, 438, 432, 486, 432,
+ 487, 488, 432, 118, 437, 438, 432, 432,
+ 121, 432, 120, 432, 480, 480, 432, 118,
+ 437, 438, 432, 480, 480, 432, 118, 437,
+ 438, 432, 486, 432, 480, 480, 432, 118,
+ 437, 438, 432, 486, 432, 487, 480, 432,
+ 118, 437, 438, 432, 432, 121, 432, 136,
+ 432, 489, 489, 123, 118, 437, 438, 432,
+ 432, 432, 444, 432, 490, 145, 491, 492,
+ 126, 118, 437, 438, 432, 432, 432, 444,
+ 432, 145, 491, 492, 126, 118, 437, 438,
+ 432, 432, 432, 444, 432, 491, 491, 126,
+ 118, 437, 438, 432, 432, 432, 444, 432,
+ 493, 142, 494, 495, 129, 118, 437, 438,
+ 432, 432, 432, 444, 432, 142, 494, 495,
+ 129, 118, 437, 438, 432, 432, 432, 444,
+ 432, 494, 494, 129, 118, 437, 438, 432,
+ 432, 432, 444, 432, 496, 139, 497, 498,
+ 132, 118, 437, 438, 432, 432, 432, 444,
+ 432, 139, 497, 498, 132, 118, 437, 438,
+ 432, 432, 432, 444, 432, 497, 497, 132,
+ 118, 437, 438, 432, 432, 432, 444, 432,
+ 499, 136, 480, 500, 432, 118, 437, 438,
+ 432, 432, 432, 444, 432, 136, 480, 500,
+ 432, 118, 437, 438, 432, 432, 432, 444,
+ 432, 480, 501, 432, 118, 437, 438, 432,
+ 432, 432, 444, 432, 136, 432, 480, 480,
+ 432, 118, 437, 438, 432, 432, 432, 444,
+ 432, 119, 120, 432, 432, 136, 479, 432,
+ 118, 437, 438, 432, 432, 432, 444, 432,
+ 119, 432, 473, 478, 478, 123, 118, 437,
+ 438, 432, 432, 432, 476, 432, 472, 473,
+ 478, 478, 123, 118, 437, 438, 432, 432,
+ 432, 476, 432, 432, 440, 432, 472, 473,
+ 474, 478, 123, 118, 437, 438, 432, 432,
+ 147, 476, 432, 432, 440, 432, 470, 432,
+ 502, 432, 489, 489, 123, 118, 437, 438,
+ 432, 432, 432, 444, 432, 470, 432, 470,
+ 432, 432, 432, 480, 480, 432, 118, 437,
+ 438, 432, 432, 432, 444, 432, 470, 432,
+ 470, 432, 432, 432, 480, 503, 432, 118,
+ 437, 438, 432, 432, 432, 444, 432, 470,
+ 432, 470, 432, 502, 432, 480, 480, 432,
+ 118, 437, 438, 432, 432, 432, 444, 432,
+ 470, 432, 470, 120, 432, 432, 136, 471,
+ 432, 118, 437, 438, 432, 432, 432, 444,
+ 432, 470, 432, 463, 464, 469, 469, 123,
+ 118, 437, 438, 432, 432, 432, 467, 432,
+ 432, 440, 432, 463, 464, 465, 469, 123,
+ 118, 437, 438, 432, 432, 149, 467, 432,
+ 432, 440, 432, 461, 432, 504, 432, 489,
+ 489, 123, 118, 437, 438, 432, 432, 432,
+ 444, 432, 461, 432, 461, 432, 432, 432,
+ 480, 480, 432, 118, 437, 438, 432, 432,
+ 432, 444, 432, 461, 432, 461, 432, 432,
+ 432, 480, 505, 432, 118, 437, 438, 432,
+ 432, 432, 444, 432, 461, 432, 461, 432,
+ 504, 432, 480, 480, 432, 118, 437, 438,
+ 432, 432, 432, 444, 432, 461, 432, 461,
+ 120, 432, 432, 136, 462, 432, 118, 437,
+ 438, 432, 432, 432, 444, 432, 461, 432,
+ 454, 455, 460, 460, 123, 118, 437, 438,
+ 432, 432, 432, 458, 432, 432, 440, 432,
+ 454, 455, 456, 460, 123, 118, 437, 438,
+ 432, 432, 151, 458, 432, 432, 440, 432,
+ 452, 432, 506, 432, 489, 489, 123, 118,
+ 437, 438, 432, 432, 432, 444, 432, 452,
+ 432, 452, 432, 432, 432, 480, 480, 432,
+ 118, 437, 438, 432, 432, 432, 444, 432,
+ 452, 432, 452, 432, 432, 432, 480, 507,
+ 432, 118, 437, 438, 432, 432, 432, 444,
+ 432, 452, 432, 452, 432, 506, 432, 480,
+ 480, 432, 118, 437, 438, 432, 432, 432,
+ 444, 432, 452, 432, 452, 120, 432, 432,
+ 136, 453, 432, 118, 437, 438, 432, 432,
+ 432, 444, 432, 452, 432, 445, 446, 451,
+ 451, 123, 118, 437, 438, 432, 432, 432,
+ 449, 432, 432, 440, 432, 445, 446, 447,
+ 451, 123, 118, 437, 438, 432, 432, 153,
+ 449, 432, 432, 440, 432, 442, 432, 508,
+ 432, 489, 489, 123, 118, 437, 438, 432,
+ 432, 432, 444, 432, 442, 432, 442, 432,
+ 432, 432, 480, 480, 432, 118, 437, 438,
+ 432, 432, 432, 444, 432, 442, 432, 442,
+ 432, 432, 432, 480, 509, 432, 118, 437,
+ 438, 432, 432, 432, 444, 432, 442, 432,
+ 442, 432, 508, 432, 480, 480, 432, 118,
+ 437, 438, 432, 432, 432, 444, 432, 442,
+ 432, 442, 120, 432, 432, 136, 443, 432,
+ 118, 437, 438, 432, 432, 432, 444, 432,
+ 442, 432, 433, 434, 436, 436, 123, 118,
+ 437, 438, 432, 432, 432, 439, 432, 432,
+ 440, 432, 188, 189, 190, 191, 510, 362,
+ 84, 79, 194, 195, 196, 196, 156, 197,
+ 360, 188, 200, 360, 203, 511, 205, 206,
+ 6, 1, 207, 208, 202, 202, 38, 209,
+ 202, 202, 210, 202, 213, 189, 190, 191,
+ 512, 513, 84, 157, 514, 515, 202, 196,
+ 156, 516, 202, 213, 200, 202, 116, 517,
+ 517, 84, 157, 207, 208, 202, 202, 156,
+ 518, 202, 519, 202, 202, 520, 514, 515,
+ 202, 514, 515, 202, 254, 202, 514, 521,
+ 202, 514, 522, 202, 514, 202, 519, 202,
+ 202, 202, 514, 515, 202, 523, 3, 360,
+ 360, 401, 430, 360, 79, 194, 195, 360,
+ 360, 360, 365, 360, 523, 360, 524, 367,
+ 525, 526, 84, 157, 514, 515, 202, 202,
+ 158, 370, 202, 202, 200, 202, 527, 367,
+ 528, 528, 84, 157, 514, 515, 202, 202,
+ 202, 370, 202, 202, 200, 202, 367, 528,
+ 528, 84, 157, 514, 515, 202, 202, 202,
+ 370, 202, 202, 200, 202, 524, 367, 528,
+ 528, 84, 157, 514, 515, 202, 202, 202,
+ 370, 202, 202, 200, 202, 524, 367, 525,
+ 528, 84, 157, 514, 515, 202, 202, 158,
+ 370, 202, 202, 200, 202, 213, 202, 279,
+ 116, 529, 529, 160, 157, 207, 208, 202,
+ 202, 202, 518, 202, 213, 202, 530, 184,
+ 531, 532, 162, 157, 514, 515, 202, 202,
+ 202, 533, 202, 184, 531, 532, 162, 157,
+ 514, 515, 202, 202, 202, 533, 202, 531,
+ 531, 162, 157, 514, 515, 202, 202, 202,
+ 533, 202, 534, 181, 535, 536, 165, 157,
+ 514, 515, 202, 202, 202, 533, 202, 181,
+ 535, 536, 165, 157, 514, 515, 202, 202,
+ 202, 533, 202, 535, 535, 165, 157, 514,
+ 515, 202, 202, 202, 533, 202, 537, 178,
+ 538, 539, 168, 157, 514, 515, 202, 202,
+ 202, 533, 202, 178, 538, 539, 168, 157,
+ 514, 515, 202, 202, 202, 533, 202, 538,
+ 538, 168, 157, 514, 515, 202, 202, 202,
+ 533, 202, 540, 175, 541, 542, 202, 157,
+ 514, 515, 202, 202, 202, 533, 202, 175,
+ 541, 542, 202, 157, 514, 515, 202, 202,
+ 202, 533, 202, 541, 541, 202, 157, 514,
+ 515, 202, 202, 202, 533, 202, 543, 202,
+ 544, 545, 202, 157, 514, 515, 202, 202,
+ 172, 202, 171, 202, 541, 541, 202, 157,
+ 514, 515, 202, 541, 541, 202, 157, 514,
+ 515, 202, 543, 202, 541, 541, 202, 157,
+ 514, 515, 202, 543, 202, 544, 541, 202,
+ 157, 514, 515, 202, 202, 172, 202, 523,
+ 171, 360, 360, 98, 364, 360, 79, 194,
+ 195, 360, 360, 360, 365, 360, 523, 360,
+ 547, 546, 548, 548, 546, 186, 549, 550,
+ 546, 548, 548, 546, 186, 549, 550, 546,
+ 551, 546, 546, 552, 549, 550, 546, 549,
+ 550, 546, 553, 546, 549, 554, 546, 549,
+ 555, 546, 549, 546, 551, 546, 546, 546,
+ 549, 550, 546, 0
};
static const short _indic_syllable_machine_trans_targs[] = {
178, 200, 207, 209, 210, 4, 213, 5,
7, 216, 8, 10, 219, 11, 13, 222,
14, 16, 17, 199, 19, 20, 221, 22,
- 23, 218, 25, 26, 215, 224, 229, 233,
- 236, 240, 243, 247, 250, 254, 257, 178,
- 280, 287, 289, 290, 41, 293, 42, 44,
- 296, 45, 47, 299, 48, 50, 302, 51,
- 53, 54, 279, 56, 57, 301, 59, 60,
- 298, 62, 63, 295, 304, 309, 313, 316,
- 320, 323, 327, 330, 334, 338, 178, 359,
- 366, 368, 369, 78, 372, 178, 79, 81,
- 375, 82, 84, 378, 85, 87, 381, 88,
- 90, 91, 358, 93, 94, 380, 96, 97,
- 377, 99, 100, 374, 383, 388, 392, 395,
- 399, 402, 406, 409, 413, 178, 440, 447,
- 449, 450, 114, 453, 115, 117, 456, 118,
- 120, 459, 121, 123, 462, 124, 126, 127,
- 439, 129, 130, 461, 132, 133, 458, 135,
- 136, 455, 464, 469, 473, 476, 480, 483,
- 487, 490, 494, 497, 417, 502, 513, 152,
- 516, 154, 519, 155, 157, 522, 158, 160,
- 525, 161, 528, 530, 531, 166, 167, 527,
- 169, 170, 524, 172, 173, 521, 175, 176,
- 518, 178, 536, 178, 179, 259, 339, 341,
- 416, 418, 361, 362, 419, 415, 498, 499,
- 386, 534, 387, 178, 180, 182, 36, 258,
- 202, 203, 256, 227, 228, 181, 35, 183,
- 252, 1, 184, 186, 34, 251, 249, 185,
- 33, 187, 245, 188, 190, 32, 244, 242,
- 189, 31, 191, 238, 192, 194, 30, 237,
- 235, 193, 29, 195, 231, 196, 198, 28,
- 230, 226, 197, 27, 212, 0, 201, 206,
- 178, 204, 205, 208, 2, 211, 3, 214,
- 6, 24, 217, 9, 21, 220, 12, 18,
- 223, 15, 225, 232, 234, 239, 241, 246,
- 248, 253, 255, 178, 260, 262, 73, 336,
- 282, 283, 337, 307, 308, 261, 72, 263,
- 332, 38, 264, 266, 71, 331, 329, 265,
- 70, 267, 325, 268, 270, 69, 324, 322,
- 269, 68, 271, 318, 272, 274, 67, 317,
- 315, 273, 66, 275, 311, 276, 278, 65,
- 310, 306, 277, 64, 292, 37, 281, 286,
- 178, 284, 285, 288, 39, 291, 40, 294,
- 43, 61, 297, 46, 58, 300, 49, 55,
- 303, 52, 305, 312, 314, 319, 321, 326,
- 328, 333, 335, 178, 340, 109, 342, 411,
- 75, 343, 345, 108, 410, 408, 344, 107,
- 346, 404, 347, 349, 106, 403, 401, 348,
- 105, 350, 397, 351, 353, 104, 396, 394,
- 352, 103, 354, 390, 355, 357, 102, 389,
- 385, 356, 101, 371, 74, 360, 365, 178,
- 363, 364, 367, 76, 370, 77, 373, 80,
- 98, 376, 83, 95, 379, 86, 92, 382,
- 89, 384, 391, 393, 398, 400, 405, 407,
- 412, 414, 178, 178, 420, 422, 146, 145,
- 442, 443, 496, 467, 468, 421, 423, 492,
- 111, 424, 426, 144, 491, 489, 425, 143,
- 427, 485, 428, 430, 142, 484, 482, 429,
- 141, 431, 478, 432, 434, 140, 477, 475,
- 433, 139, 435, 471, 436, 438, 138, 470,
- 466, 437, 137, 452, 110, 441, 446, 178,
- 444, 445, 448, 112, 451, 113, 454, 116,
- 134, 457, 119, 131, 460, 122, 128, 463,
- 125, 465, 472, 474, 479, 481, 486, 488,
- 493, 495, 147, 500, 501, 515, 504, 505,
- 533, 148, 509, 503, 508, 506, 507, 510,
- 511, 150, 514, 512, 149, 151, 517, 153,
- 174, 163, 520, 156, 171, 523, 159, 168,
- 526, 162, 165, 529, 164, 532, 178, 535,
- 177, 538, 539, 537, 542, 178, 540, 541
+ 23, 218, 25, 26, 215, 224, 228, 232,
+ 235, 239, 242, 246, 249, 253, 256, 178,
+ 279, 286, 288, 289, 41, 292, 42, 44,
+ 295, 45, 47, 298, 48, 50, 301, 51,
+ 53, 54, 278, 56, 57, 300, 59, 60,
+ 297, 62, 63, 294, 303, 307, 311, 314,
+ 318, 321, 325, 328, 332, 336, 178, 357,
+ 364, 366, 367, 78, 370, 178, 79, 81,
+ 373, 82, 84, 376, 85, 87, 379, 88,
+ 90, 91, 356, 93, 94, 378, 96, 97,
+ 375, 99, 100, 372, 381, 385, 389, 392,
+ 396, 399, 403, 406, 410, 178, 437, 444,
+ 446, 447, 114, 450, 115, 117, 453, 118,
+ 120, 456, 121, 123, 459, 124, 126, 127,
+ 436, 129, 130, 458, 132, 133, 455, 135,
+ 136, 452, 461, 465, 469, 472, 476, 479,
+ 483, 486, 490, 493, 414, 498, 509, 152,
+ 512, 154, 515, 155, 157, 518, 158, 160,
+ 521, 161, 524, 526, 527, 166, 167, 523,
+ 169, 170, 520, 172, 173, 517, 175, 176,
+ 514, 178, 532, 178, 179, 258, 337, 339,
+ 413, 415, 359, 360, 416, 412, 494, 495,
+ 384, 530, 178, 180, 182, 36, 257, 202,
+ 203, 255, 227, 181, 35, 183, 251, 1,
+ 184, 186, 34, 250, 248, 185, 33, 187,
+ 244, 188, 190, 32, 243, 241, 189, 31,
+ 191, 237, 192, 194, 30, 236, 234, 193,
+ 29, 195, 230, 196, 198, 28, 229, 226,
+ 197, 27, 212, 0, 201, 206, 178, 204,
+ 205, 208, 2, 211, 3, 214, 6, 24,
+ 217, 9, 21, 220, 12, 18, 223, 15,
+ 225, 231, 233, 238, 240, 245, 247, 252,
+ 254, 178, 259, 261, 73, 334, 281, 282,
+ 335, 306, 260, 72, 262, 330, 38, 263,
+ 265, 71, 329, 327, 264, 70, 266, 323,
+ 267, 269, 69, 322, 320, 268, 68, 270,
+ 316, 271, 273, 67, 315, 313, 272, 66,
+ 274, 309, 275, 277, 65, 308, 305, 276,
+ 64, 291, 37, 280, 285, 178, 283, 284,
+ 287, 39, 290, 40, 293, 43, 61, 296,
+ 46, 58, 299, 49, 55, 302, 52, 304,
+ 310, 312, 317, 319, 324, 326, 331, 333,
+ 178, 338, 109, 340, 408, 75, 341, 343,
+ 108, 407, 405, 342, 107, 344, 401, 345,
+ 347, 106, 400, 398, 346, 105, 348, 394,
+ 349, 351, 104, 393, 391, 350, 103, 352,
+ 387, 353, 355, 102, 386, 383, 354, 101,
+ 369, 74, 358, 363, 178, 361, 362, 365,
+ 76, 368, 77, 371, 80, 98, 374, 83,
+ 95, 377, 86, 92, 380, 89, 382, 388,
+ 390, 395, 397, 402, 404, 409, 411, 178,
+ 178, 417, 419, 146, 145, 439, 440, 492,
+ 464, 418, 420, 488, 111, 421, 423, 144,
+ 487, 485, 422, 143, 424, 481, 425, 427,
+ 142, 480, 478, 426, 141, 428, 474, 429,
+ 431, 140, 473, 471, 430, 139, 432, 467,
+ 433, 435, 138, 466, 463, 434, 137, 449,
+ 110, 438, 443, 178, 441, 442, 445, 112,
+ 448, 113, 451, 116, 134, 454, 119, 131,
+ 457, 122, 128, 460, 125, 462, 468, 470,
+ 475, 477, 482, 484, 489, 491, 147, 496,
+ 497, 511, 500, 501, 529, 148, 505, 499,
+ 504, 502, 503, 506, 507, 150, 510, 508,
+ 149, 151, 513, 153, 174, 163, 516, 156,
+ 171, 519, 159, 168, 522, 162, 165, 525,
+ 164, 528, 178, 531, 177, 534, 535, 533,
+ 538, 178, 536, 537
};
static const char _indic_syllable_machine_trans_actions[] = {
@@ -1285,51 +1087,51 @@ static const char _indic_syllable_machine_trans_actions[] = {
0, 0, 2, 0, 0, 2, 0, 0,
2, 9, 0, 12, 2, 2, 6, 2,
13, 13, 0, 0, 2, 2, 6, 2,
- 6, 2, 6, 14, 2, 2, 0, 2,
- 0, 0, 2, 2, 2, 2, 0, 2,
- 2, 0, 2, 2, 0, 2, 2, 2,
- 0, 2, 2, 2, 2, 0, 2, 2,
- 2, 0, 2, 2, 2, 2, 0, 2,
- 2, 2, 0, 2, 2, 2, 2, 0,
- 2, 2, 2, 0, 2, 0, 0, 0,
- 15, 0, 0, 2, 0, 2, 0, 2,
- 0, 0, 2, 0, 0, 2, 0, 0,
- 2, 0, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 16, 2, 2, 0, 2,
- 0, 0, 2, 2, 2, 2, 0, 2,
- 2, 0, 2, 2, 0, 2, 2, 2,
- 0, 2, 2, 2, 2, 0, 2, 2,
- 2, 0, 2, 2, 2, 2, 0, 2,
- 2, 2, 0, 2, 2, 2, 2, 0,
- 2, 2, 2, 0, 2, 0, 0, 0,
- 17, 0, 0, 2, 0, 2, 0, 2,
- 0, 0, 2, 0, 0, 2, 0, 0,
- 2, 0, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 18, 6, 0, 6, 6,
- 0, 6, 2, 0, 6, 2, 6, 0,
- 6, 6, 6, 2, 0, 6, 2, 6,
- 0, 6, 6, 6, 2, 0, 6, 2,
- 6, 0, 6, 6, 6, 2, 0, 6,
- 2, 6, 0, 6, 0, 0, 0, 19,
- 0, 0, 2, 0, 2, 0, 2, 0,
- 0, 2, 0, 0, 2, 0, 0, 2,
- 0, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 20, 21, 2, 2, 0, 0,
- 0, 0, 2, 2, 2, 2, 2, 2,
- 0, 2, 2, 0, 2, 2, 2, 0,
+ 6, 2, 14, 2, 2, 0, 2, 0,
+ 0, 2, 2, 2, 0, 2, 2, 0,
+ 2, 2, 0, 2, 2, 2, 0, 2,
+ 2, 2, 2, 0, 2, 2, 2, 0,
2, 2, 2, 2, 0, 2, 2, 2,
0, 2, 2, 2, 2, 0, 2, 2,
- 2, 0, 2, 2, 2, 2, 0, 2,
- 2, 2, 0, 2, 0, 0, 0, 22,
- 0, 0, 2, 0, 2, 0, 2, 0,
+ 2, 0, 2, 0, 0, 0, 15, 0,
+ 0, 2, 0, 2, 0, 2, 0, 0,
+ 2, 0, 0, 2, 0, 0, 2, 0,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 16, 2, 2, 0, 2, 0, 0,
+ 2, 2, 2, 0, 2, 2, 0, 2,
+ 2, 0, 2, 2, 2, 0, 2, 2,
+ 2, 2, 0, 2, 2, 2, 0, 2,
+ 2, 2, 2, 0, 2, 2, 2, 0,
+ 2, 2, 2, 2, 0, 2, 2, 2,
+ 0, 2, 0, 0, 0, 17, 0, 0,
+ 2, 0, 2, 0, 2, 0, 0, 2,
+ 0, 0, 2, 0, 0, 2, 0, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 18, 6, 0, 6, 6, 0, 6, 2,
+ 0, 6, 2, 6, 0, 6, 6, 6,
+ 2, 0, 6, 2, 6, 0, 6, 6,
+ 6, 2, 0, 6, 2, 6, 0, 6,
+ 6, 6, 2, 0, 6, 2, 6, 0,
+ 6, 0, 0, 0, 19, 0, 0, 2,
+ 0, 2, 0, 2, 0, 0, 2, 0,
+ 0, 2, 0, 0, 2, 0, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 20,
+ 21, 2, 2, 0, 0, 0, 0, 2,
+ 2, 2, 2, 2, 0, 2, 2, 0,
+ 2, 2, 2, 0, 2, 2, 2, 2,
+ 0, 2, 2, 2, 0, 2, 2, 2,
+ 2, 0, 2, 2, 2, 0, 2, 2,
+ 2, 2, 0, 2, 2, 2, 0, 2,
+ 0, 0, 0, 22, 0, 0, 2, 0,
+ 2, 0, 2, 0, 0, 2, 0, 0,
+ 2, 0, 0, 2, 0, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 0, 0,
+ 8, 2, 0, 0, 2, 0, 2, 0,
+ 0, 0, 0, 8, 8, 0, 8, 8,
+ 0, 0, 2, 0, 0, 0, 2, 0,
0, 2, 0, 0, 2, 0, 0, 2,
- 0, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 0, 0, 8, 2, 0, 0,
- 2, 0, 2, 0, 0, 0, 0, 8,
- 8, 0, 8, 8, 0, 0, 2, 0,
- 0, 0, 2, 0, 0, 2, 0, 0,
- 2, 0, 0, 2, 0, 2, 23, 2,
- 0, 0, 0, 0, 0, 24, 0, 0
+ 0, 2, 23, 2, 0, 0, 0, 0,
+ 0, 24, 0, 0
};
static const char _indic_syllable_machine_to_state_actions[] = {
@@ -1400,7 +1202,7 @@ static const char _indic_syllable_machine_to_state_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0
+ 0, 0, 0
};
static const char _indic_syllable_machine_from_state_actions[] = {
@@ -1471,7 +1273,7 @@ static const char _indic_syllable_machine_from_state_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0
+ 0, 0, 0
};
static const short _indic_syllable_machine_eof_trans[] = {
@@ -1497,52 +1299,52 @@ static const short _indic_syllable_machine_eof_trans[] = {
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
- 1, 186, 0, 204, 204, 204, 204, 204,
- 204, 204, 204, 204, 204, 204, 204, 204,
- 204, 204, 204, 204, 204, 204, 204, 204,
- 204, 204, 204, 204, 204, 204, 204, 204,
- 204, 204, 204, 204, 204, 204, 204, 204,
- 204, 204, 204, 204, 204, 204, 204, 204,
- 204, 204, 204, 204, 204, 204, 204, 204,
- 204, 204, 204, 204, 204, 204, 204, 204,
- 204, 204, 204, 204, 204, 204, 204, 204,
- 204, 204, 204, 204, 204, 204, 204, 204,
- 204, 204, 204, 284, 284, 284, 284, 284,
- 284, 284, 284, 284, 284, 284, 284, 284,
- 284, 284, 284, 284, 284, 284, 284, 284,
- 284, 284, 284, 284, 284, 284, 284, 284,
- 284, 284, 284, 284, 284, 284, 284, 284,
- 284, 284, 284, 284, 284, 284, 284, 284,
- 284, 284, 284, 284, 284, 284, 284, 284,
- 284, 284, 284, 284, 284, 284, 284, 284,
- 284, 284, 284, 284, 284, 284, 284, 284,
- 284, 284, 284, 284, 284, 284, 284, 284,
- 284, 284, 284, 364, 364, 364, 364, 364,
- 364, 364, 364, 364, 364, 364, 364, 364,
- 364, 364, 364, 364, 364, 364, 364, 364,
- 364, 364, 364, 364, 364, 364, 364, 364,
- 364, 364, 364, 364, 364, 364, 364, 364,
- 364, 364, 364, 364, 364, 364, 364, 364,
- 364, 364, 364, 364, 364, 364, 364, 364,
- 364, 364, 364, 364, 364, 364, 364, 364,
- 364, 364, 364, 364, 364, 364, 364, 364,
- 364, 364, 364, 364, 364, 364, 364, 364,
- 435, 364, 435, 436, 436, 436, 436, 436,
- 436, 436, 436, 436, 436, 436, 436, 436,
- 436, 436, 436, 436, 436, 436, 436, 436,
- 436, 436, 436, 436, 436, 436, 436, 436,
- 436, 436, 436, 436, 436, 436, 436, 436,
- 436, 436, 436, 436, 436, 436, 436, 436,
- 436, 436, 436, 436, 436, 436, 436, 436,
- 436, 436, 436, 436, 436, 436, 436, 436,
- 436, 436, 436, 436, 436, 436, 436, 436,
- 436, 436, 436, 436, 436, 436, 436, 436,
- 436, 436, 364, 204, 204, 204, 204, 204,
- 204, 204, 204, 204, 204, 364, 204, 204,
- 204, 204, 204, 204, 204, 204, 204, 204,
- 204, 204, 204, 204, 204, 204, 204, 204,
- 204, 204, 204, 204, 204, 364, 551, 551,
- 551, 551, 551, 551, 551, 551, 551
+ 1, 186, 0, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 282, 282, 282, 282, 282, 282,
+ 282, 282, 282, 282, 282, 282, 282, 282,
+ 282, 282, 282, 282, 282, 282, 282, 282,
+ 282, 282, 282, 282, 282, 282, 282, 282,
+ 282, 282, 282, 282, 282, 282, 282, 282,
+ 282, 282, 282, 282, 282, 282, 282, 282,
+ 282, 282, 282, 282, 282, 282, 282, 282,
+ 282, 282, 282, 282, 282, 282, 282, 282,
+ 282, 282, 282, 282, 282, 282, 282, 282,
+ 282, 282, 282, 282, 282, 282, 282, 282,
+ 282, 361, 361, 361, 361, 361, 361, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361,
+ 361, 361, 361, 361, 361, 361, 361, 361,
+ 361, 361, 361, 361, 361, 432, 361, 432,
+ 433, 433, 433, 433, 433, 433, 433, 433,
+ 433, 433, 433, 433, 433, 433, 433, 433,
+ 433, 433, 433, 433, 433, 433, 433, 433,
+ 433, 433, 433, 433, 433, 433, 433, 433,
+ 433, 433, 433, 433, 433, 433, 433, 433,
+ 433, 433, 433, 433, 433, 433, 433, 433,
+ 433, 433, 433, 433, 433, 433, 433, 433,
+ 433, 433, 433, 433, 433, 433, 433, 433,
+ 433, 433, 433, 433, 433, 433, 433, 433,
+ 433, 433, 433, 433, 433, 433, 361, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 361, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 361, 547, 547, 547, 547, 547, 547,
+ 547, 547, 547
};
static const int indic_syllable_machine_start = 178;
@@ -1556,7 +1358,7 @@ static const int indic_syllable_machine_en_main = 178;
-#line 97 "hb-ot-shape-complex-indic-machine.rl"
+#line 96 "hb-ot-shape-complex-indic-machine.rl"
#define found_syllable(syllable_type) \
@@ -1576,7 +1378,7 @@ find_syllables (hb_buffer_t *buffer)
int cs;
hb_glyph_info_t *info = buffer->info;
-#line 1580 "hb-ot-shape-complex-indic-machine.hh"
+#line 1382 "hb-ot-shape-complex-indic-machine.hh"
{
cs = indic_syllable_machine_start;
ts = 0;
@@ -1584,7 +1386,7 @@ find_syllables (hb_buffer_t *buffer)
act = 0;
}
-#line 118 "hb-ot-shape-complex-indic-machine.rl"
+#line 117 "hb-ot-shape-complex-indic-machine.rl"
p = 0;
@@ -1593,7 +1395,7 @@ find_syllables (hb_buffer_t *buffer)
unsigned int last = 0;
unsigned int syllable_serial = 1;
-#line 1597 "hb-ot-shape-complex-indic-machine.hh"
+#line 1399 "hb-ot-shape-complex-indic-machine.hh"
{
int _slen;
int _trans;
@@ -1607,7 +1409,7 @@ _resume:
#line 1 "NONE"
{ts = p;}
break;
-#line 1611 "hb-ot-shape-complex-indic-machine.hh"
+#line 1413 "hb-ot-shape-complex-indic-machine.hh"
}
_keys = _indic_syllable_machine_trans_keys + (cs<<1);
@@ -1630,71 +1432,71 @@ _eof_trans:
{te = p+1;}
break;
case 15:
-#line 88 "hb-ot-shape-complex-indic-machine.rl"
+#line 87 "hb-ot-shape-complex-indic-machine.rl"
{te = p+1;{ found_syllable (consonant_syllable); }}
break;
case 17:
-#line 89 "hb-ot-shape-complex-indic-machine.rl"
+#line 88 "hb-ot-shape-complex-indic-machine.rl"
{te = p+1;{ found_syllable (vowel_syllable); }}
break;
case 22:
-#line 90 "hb-ot-shape-complex-indic-machine.rl"
+#line 89 "hb-ot-shape-complex-indic-machine.rl"
{te = p+1;{ found_syllable (standalone_cluster); }}
break;
case 24:
-#line 91 "hb-ot-shape-complex-indic-machine.rl"
+#line 90 "hb-ot-shape-complex-indic-machine.rl"
{te = p+1;{ found_syllable (symbol_cluster); }}
break;
case 19:
-#line 92 "hb-ot-shape-complex-indic-machine.rl"
+#line 91 "hb-ot-shape-complex-indic-machine.rl"
{te = p+1;{ found_syllable (broken_cluster); }}
break;
case 12:
-#line 93 "hb-ot-shape-complex-indic-machine.rl"
+#line 92 "hb-ot-shape-complex-indic-machine.rl"
{te = p+1;{ found_syllable (non_indic_cluster); }}
break;
case 14:
-#line 88 "hb-ot-shape-complex-indic-machine.rl"
+#line 87 "hb-ot-shape-complex-indic-machine.rl"
{te = p;p--;{ found_syllable (consonant_syllable); }}
break;
case 16:
-#line 89 "hb-ot-shape-complex-indic-machine.rl"
+#line 88 "hb-ot-shape-complex-indic-machine.rl"
{te = p;p--;{ found_syllable (vowel_syllable); }}
break;
case 21:
-#line 90 "hb-ot-shape-complex-indic-machine.rl"
+#line 89 "hb-ot-shape-complex-indic-machine.rl"
{te = p;p--;{ found_syllable (standalone_cluster); }}
break;
case 23:
-#line 91 "hb-ot-shape-complex-indic-machine.rl"
+#line 90 "hb-ot-shape-complex-indic-machine.rl"
{te = p;p--;{ found_syllable (symbol_cluster); }}
break;
case 18:
-#line 92 "hb-ot-shape-complex-indic-machine.rl"
+#line 91 "hb-ot-shape-complex-indic-machine.rl"
{te = p;p--;{ found_syllable (broken_cluster); }}
break;
case 20:
-#line 93 "hb-ot-shape-complex-indic-machine.rl"
+#line 92 "hb-ot-shape-complex-indic-machine.rl"
{te = p;p--;{ found_syllable (non_indic_cluster); }}
break;
case 1:
-#line 88 "hb-ot-shape-complex-indic-machine.rl"
+#line 87 "hb-ot-shape-complex-indic-machine.rl"
{{p = ((te))-1;}{ found_syllable (consonant_syllable); }}
break;
case 3:
-#line 89 "hb-ot-shape-complex-indic-machine.rl"
+#line 88 "hb-ot-shape-complex-indic-machine.rl"
{{p = ((te))-1;}{ found_syllable (vowel_syllable); }}
break;
case 7:
-#line 90 "hb-ot-shape-complex-indic-machine.rl"
+#line 89 "hb-ot-shape-complex-indic-machine.rl"
{{p = ((te))-1;}{ found_syllable (standalone_cluster); }}
break;
case 9:
-#line 91 "hb-ot-shape-complex-indic-machine.rl"
+#line 90 "hb-ot-shape-complex-indic-machine.rl"
{{p = ((te))-1;}{ found_syllable (symbol_cluster); }}
break;
case 4:
-#line 92 "hb-ot-shape-complex-indic-machine.rl"
+#line 91 "hb-ot-shape-complex-indic-machine.rl"
{{p = ((te))-1;}{ found_syllable (broken_cluster); }}
break;
case 5:
@@ -1715,22 +1517,22 @@ _eof_trans:
case 8:
#line 1 "NONE"
{te = p+1;}
-#line 88 "hb-ot-shape-complex-indic-machine.rl"
+#line 87 "hb-ot-shape-complex-indic-machine.rl"
{act = 1;}
break;
case 6:
#line 1 "NONE"
{te = p+1;}
-#line 92 "hb-ot-shape-complex-indic-machine.rl"
+#line 91 "hb-ot-shape-complex-indic-machine.rl"
{act = 5;}
break;
case 13:
#line 1 "NONE"
{te = p+1;}
-#line 93 "hb-ot-shape-complex-indic-machine.rl"
+#line 92 "hb-ot-shape-complex-indic-machine.rl"
{act = 6;}
break;
-#line 1734 "hb-ot-shape-complex-indic-machine.hh"
+#line 1536 "hb-ot-shape-complex-indic-machine.hh"
}
_again:
@@ -1739,7 +1541,7 @@ _again:
#line 1 "NONE"
{ts = 0;}
break;
-#line 1743 "hb-ot-shape-complex-indic-machine.hh"
+#line 1545 "hb-ot-shape-complex-indic-machine.hh"
}
if ( ++p != pe )
@@ -1755,7 +1557,7 @@ _again:
}
-#line 127 "hb-ot-shape-complex-indic-machine.rl"
+#line 126 "hb-ot-shape-complex-indic-machine.rl"
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-machine.rl
index 694b235d1d1..86a7ceb22ac 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-machine.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-machine.rl
@@ -57,7 +57,6 @@ Repha = 15;
Ra = 16;
CM = 17;
Symbol= 18;
-CM2 = 31;
c = (C | Ra); # is_consonant
n = ((ZWNJ?.RS)? (N.N?)?); # is_consonant_modifier
@@ -73,7 +72,7 @@ syllable_tail = (z?.SM.SM?.ZWNJ?)? A{0,3}? VD{0,2};
place_holder = PLACEHOLDER | DOTTEDCIRCLE;
halant_group = (z?.h.(ZWJ.N?)?);
final_halant_group = halant_group | h.ZWNJ;
-medial_group = CM?.CM2?;
+medial_group = CM?;
halant_or_matra_group = (final_halant_group | (h.ZWJ)? matra_group{0,4}) (Coeng (cn|V))?;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-private.hh
index 326b36483b6..5879c3e4914 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-private.hh
@@ -60,11 +60,10 @@ enum indic_category_t {
OT_Repha = 15, /* Atomically-encoded logical or visual repha. */
OT_Ra = 16,
OT_CM = 17, /* Consonant-Medial. */
- OT_Symbol = 18, /* Avagraha, etc that take marks (SM,A,VD). */
- OT_CM2 = 31 /* Consonant-Medial, second slot. */
+ OT_Symbol = 18 /* Avagraha, etc that take marks (SM,A,VD). */
};
-#define MEDIAL_FLAGS (FLAG (OT_CM) | FLAG (OT_CM2))
+#define MEDIAL_FLAGS (FLAG (OT_CM))
/* Note:
*
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-table.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-table.cc
index 90abb55f3cd..80a6b25e3b0 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-table.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic-table.cc
@@ -2,35 +2,35 @@
/*
* The following table is generated by running:
*
- * ./gen-indic-table.py IndicSyllabicCategory.txt IndicMatraCategory.txt Blocks.txt
+ * ./gen-indic-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt Blocks.txt
*
* on files with these headers:
*
- * # IndicSyllabicCategory-8.0.0.txt
- * # Date: 2015-05-12, 10:00:00 GMT [RP, KW, LI]
- * # IndicPositionalCategory-8.0.0.txt
- * # Date: 2015-05-12, 10:00:00 GMT [RP, KW, LI]
- * # Blocks-8.0.0.txt
- * # Date: 2014-11-10, 23:04:00 GMT [KW]
+ * # IndicSyllabicCategory-9.0.0.txt
+ * # Date: 2016-05-21, 02:46:00 GMT [RP]
+ * # IndicPositionalCategory-9.0.0.txt
+ * # Date: 2016-02-25, 00:48:00 GMT [RP]
+ * # Blocks-9.0.0.txt
+ * # Date: 2016-02-05, 23:48:00 GMT [KW]
*/
#include "hb-ot-shape-complex-indic-private.hh"
-#define ISC_A INDIC_SYLLABIC_CATEGORY_AVAGRAHA /* 13 chars; Avagraha */
-#define ISC_Bi INDIC_SYLLABIC_CATEGORY_BINDU /* 60 chars; Bindu */
+#define ISC_A INDIC_SYLLABIC_CATEGORY_AVAGRAHA /* 15 chars; Avagraha */
+#define ISC_Bi INDIC_SYLLABIC_CATEGORY_BINDU /* 67 chars; Bindu */
#define ISC_BJN INDIC_SYLLABIC_CATEGORY_BRAHMI_JOINING_NUMBER /* 20 chars; Brahmi_Joining_Number */
-#define ISC_Ca INDIC_SYLLABIC_CATEGORY_CANTILLATION_MARK /* 52 chars; Cantillation_Mark */
-#define ISC_C INDIC_SYLLABIC_CATEGORY_CONSONANT /* 1805 chars; Consonant */
-#define ISC_CD INDIC_SYLLABIC_CATEGORY_CONSONANT_DEAD /* 7 chars; Consonant_Dead */
+#define ISC_Ca INDIC_SYLLABIC_CATEGORY_CANTILLATION_MARK /* 53 chars; Cantillation_Mark */
+#define ISC_C INDIC_SYLLABIC_CATEGORY_CONSONANT /* 1907 chars; Consonant */
+#define ISC_CD INDIC_SYLLABIC_CATEGORY_CONSONANT_DEAD /* 10 chars; Consonant_Dead */
#define ISC_CF INDIC_SYLLABIC_CATEGORY_CONSONANT_FINAL /* 62 chars; Consonant_Final */
#define ISC_CHL INDIC_SYLLABIC_CATEGORY_CONSONANT_HEAD_LETTER /* 5 chars; Consonant_Head_Letter */
#define ISC_CK INDIC_SYLLABIC_CATEGORY_CONSONANT_KILLER /* 2 chars; Consonant_Killer */
#define ISC_CM INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL /* 22 chars; Consonant_Medial */
-#define ISC_CP INDIC_SYLLABIC_CATEGORY_CONSONANT_PLACEHOLDER /* 13 chars; Consonant_Placeholder */
+#define ISC_CP INDIC_SYLLABIC_CATEGORY_CONSONANT_PLACEHOLDER /* 16 chars; Consonant_Placeholder */
#define ISC_CPR INDIC_SYLLABIC_CATEGORY_CONSONANT_PRECEDING_REPHA /* 1 chars; Consonant_Preceding_Repha */
#define ISC_CPrf INDIC_SYLLABIC_CATEGORY_CONSONANT_PREFIXED /* 2 chars; Consonant_Prefixed */
-#define ISC_CS INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED /* 61 chars; Consonant_Subjoined */
+#define ISC_CS INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED /* 90 chars; Consonant_Subjoined */
#define ISC_CSR INDIC_SYLLABIC_CATEGORY_CONSONANT_SUCCEEDING_REPHA /* 4 chars; Consonant_Succeeding_Repha */
#define ISC_CWS INDIC_SYLLABIC_CATEGORY_CONSONANT_WITH_STACKER /* 4 chars; Consonant_With_Stacker */
#define ISC_GM INDIC_SYLLABIC_CATEGORY_GEMINATION_MARK /* 2 chars; Gemination_Mark */
@@ -38,29 +38,29 @@
#define ISC_ZWJ INDIC_SYLLABIC_CATEGORY_JOINER /* 1 chars; Joiner */
#define ISC_ML INDIC_SYLLABIC_CATEGORY_MODIFYING_LETTER /* 1 chars; Modifying_Letter */
#define ISC_ZWNJ INDIC_SYLLABIC_CATEGORY_NON_JOINER /* 1 chars; Non_Joiner */
-#define ISC_N INDIC_SYLLABIC_CATEGORY_NUKTA /* 23 chars; Nukta */
-#define ISC_Nd INDIC_SYLLABIC_CATEGORY_NUMBER /* 420 chars; Number */
+#define ISC_N INDIC_SYLLABIC_CATEGORY_NUKTA /* 24 chars; Nukta */
+#define ISC_Nd INDIC_SYLLABIC_CATEGORY_NUMBER /* 459 chars; Number */
#define ISC_NJ INDIC_SYLLABIC_CATEGORY_NUMBER_JOINER /* 1 chars; Number_Joiner */
#define ISC_x INDIC_SYLLABIC_CATEGORY_OTHER /* 1 chars; Other */
#define ISC_PK INDIC_SYLLABIC_CATEGORY_PURE_KILLER /* 16 chars; Pure_Killer */
#define ISC_RS INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER /* 2 chars; Register_Shifter */
-#define ISC_SM INDIC_SYLLABIC_CATEGORY_SYLLABLE_MODIFIER /* 20 chars; Syllable_Modifier */
+#define ISC_SM INDIC_SYLLABIC_CATEGORY_SYLLABLE_MODIFIER /* 22 chars; Syllable_Modifier */
#define ISC_TL INDIC_SYLLABIC_CATEGORY_TONE_LETTER /* 7 chars; Tone_Letter */
#define ISC_TM INDIC_SYLLABIC_CATEGORY_TONE_MARK /* 42 chars; Tone_Mark */
-#define ISC_V INDIC_SYLLABIC_CATEGORY_VIRAMA /* 22 chars; Virama */
-#define ISC_Vs INDIC_SYLLABIC_CATEGORY_VISARGA /* 29 chars; Visarga */
+#define ISC_V INDIC_SYLLABIC_CATEGORY_VIRAMA /* 24 chars; Virama */
+#define ISC_Vs INDIC_SYLLABIC_CATEGORY_VISARGA /* 31 chars; Visarga */
#define ISC_Vo INDIC_SYLLABIC_CATEGORY_VOWEL /* 30 chars; Vowel */
-#define ISC_M INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT /* 572 chars; Vowel_Dependent */
-#define ISC_VI INDIC_SYLLABIC_CATEGORY_VOWEL_INDEPENDENT /* 404 chars; Vowel_Independent */
+#define ISC_M INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT /* 602 chars; Vowel_Dependent */
+#define ISC_VI INDIC_SYLLABIC_CATEGORY_VOWEL_INDEPENDENT /* 431 chars; Vowel_Independent */
-#define IMC_B INDIC_MATRA_CATEGORY_BOTTOM /* 256 chars; Bottom */
+#define IMC_B INDIC_MATRA_CATEGORY_BOTTOM /* 300 chars; Bottom */
#define IMC_BR INDIC_MATRA_CATEGORY_BOTTOM_AND_RIGHT /* 2 chars; Bottom_And_Right */
-#define IMC_L INDIC_MATRA_CATEGORY_LEFT /* 55 chars; Left */
+#define IMC_L INDIC_MATRA_CATEGORY_LEFT /* 57 chars; Left */
#define IMC_LR INDIC_MATRA_CATEGORY_LEFT_AND_RIGHT /* 21 chars; Left_And_Right */
#define IMC_x INDIC_MATRA_CATEGORY_NOT_APPLICABLE /* 1 chars; Not_Applicable */
#define IMC_O INDIC_MATRA_CATEGORY_OVERSTRUCK /* 10 chars; Overstruck */
-#define IMC_R INDIC_MATRA_CATEGORY_RIGHT /* 249 chars; Right */
-#define IMC_T INDIC_MATRA_CATEGORY_TOP /* 324 chars; Top */
+#define IMC_R INDIC_MATRA_CATEGORY_RIGHT /* 258 chars; Right */
+#define IMC_T INDIC_MATRA_CATEGORY_TOP /* 342 chars; Top */
#define IMC_TB INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM /* 10 chars; Top_And_Bottom */
#define IMC_TBR INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM_AND_RIGHT /* 1 chars; Top_And_Bottom_And_Right */
#define IMC_TL INDIC_MATRA_CATEGORY_TOP_AND_LEFT /* 6 chars; Top_And_Left */
@@ -261,7 +261,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 0D38 */ _(C,x), _(C,x), _(C,x), _(x,x), _(x,x), _(A,x), _(M,R), _(M,R),
/* 0D40 */ _(M,R), _(M,R), _(M,R), _(M,B), _(M,B), _(x,x), _(M,L), _(M,L),
/* 0D48 */ _(M,L), _(x,x), _(M,LR), _(M,LR), _(M,LR), _(V,T),_(CPR,x), _(x,x),
- /* 0D50 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,R),
+ /* 0D50 */ _(x,x), _(x,x), _(x,x), _(x,x), _(CD,x), _(CD,x), _(CD,x), _(M,R),
/* 0D58 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(VI,x),
/* 0D60 */ _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x), _(Nd,x), _(Nd,x),
/* 0D68 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
@@ -312,37 +312,9 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 1090 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
/* 1098 */ _(Nd,x), _(Nd,x), _(TM,R), _(TM,R), _(M,R), _(M,T), _(x,x), _(x,x),
-#define indic_offset_0x1700u 1496
+#define indic_offset_0x1780u 1496
- /* Tagalog */
-
- /* 1700 */ _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1708 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(C,x), _(C,x),
- /* 1710 */ _(C,x), _(C,x), _(M,T), _(M,B), _(PK,B), _(x,x), _(x,x), _(x,x),
- /* 1718 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Hanunoo */
-
- /* 1720 */ _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1728 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1730 */ _(C,x), _(C,x), _(M,T), _(M,B), _(PK,B), _(x,x), _(x,x), _(x,x),
- /* 1738 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Buhid */
-
- /* 1740 */ _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1748 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1750 */ _(C,x), _(C,x), _(M,T), _(M,B), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 1758 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Tagbanwa */
-
- /* 1760 */ _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1768 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(C,x), _(C,x),
- /* 1770 */ _(C,x), _(x,x), _(M,T), _(M,B), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 1778 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
/* Khmer */
/* 1780 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
@@ -356,138 +328,11 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 17C0 */ _(M,LR), _(M,L), _(M,L), _(M,L), _(M,LR), _(M,LR), _(Bi,T), _(Vs,R),
/* 17C8 */ _(M,R), _(RS,T), _(RS,T), _(SM,T),_(CSR,T), _(CK,T), _(SM,T), _(SM,T),
/* 17D0 */ _(SM,T), _(PK,T), _(IS,x), _(SM,T), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 17D8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(A,x), _(x,T), _(x,x), _(x,x),
+ /* 17D8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(A,x), _(SM,T), _(x,x), _(x,x),
/* 17E0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
/* 17E8 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-#define indic_offset_0x1900u 1736
-
-
- /* Limbu */
-
- /* 1900 */ _(CP,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1908 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1910 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1918 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x),
- /* 1920 */ _(M,T), _(M,T), _(M,B), _(M,R), _(M,R), _(M,TR), _(M,TR), _(M,T),
- /* 1928 */ _(M,T), _(CS,R), _(CS,R), _(CS,R), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 1930 */ _(CF,R), _(CF,R), _(Bi,B), _(CF,R), _(CF,R), _(CF,R), _(CF,R), _(CF,R),
- /* 1938 */ _(CF,R), _(CF,B), _(M,T), _(SM,B), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 1940 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(Nd,x), _(Nd,x),
- /* 1948 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-
- /* Tai Le */
-
- /* 1950 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1958 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1960 */ _(C,x), _(C,x), _(C,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x),
- /* 1968 */ _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), _(x,x), _(x,x),
- /* 1970 */ _(TL,x), _(TL,x), _(TL,x), _(TL,x), _(TL,x), _(x,x), _(x,x), _(x,x),
- /* 1978 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* New Tai Lue */
-
- /* 1980 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1988 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1990 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1998 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 19A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 19A8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 19B0 */ _(M,R), _(M,R), _(M,R), _(M,R), _(M,R),_(M,VOL),_(M,VOL),_(M,VOL),
- /* 19B8 */ _(M,R), _(M,R),_(M,VOL), _(M,R), _(M,R), _(M,R), _(M,R), _(M,R),
- /* 19C0 */ _(M,R), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x),
- /* 19C8 */ _(TM,R), _(TM,R), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 19D0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* 19D8 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 19E0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 19E8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 19F0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 19F8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Buginese */
-
- /* 1A00 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1A08 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1A10 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(M,T),
- /* 1A18 */ _(M,B), _(M,L), _(M,R), _(M,T), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Tai Tham */
-
- /* 1A20 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1A28 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1A30 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1A38 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1A40 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1A48 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(VI,x), _(VI,x), _(VI,x),
- /* 1A50 */ _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(CM,L), _(CM,B), _(CF,R),
- /* 1A58 */ _(CF,T), _(CF,T), _(CF,T), _(CF,B), _(CF,B), _(CF,B), _(CF,B), _(x,x),
- /* 1A60 */ _(IS,x), _(M,R), _(M,T), _(M,R), _(M,R), _(M,T), _(M,T), _(M,T),
- /* 1A68 */ _(M,T), _(M,B), _(M,B), _(M,T), _(M,B), _(M,R), _(M,L), _(M,L),
- /* 1A70 */ _(M,L), _(M,L), _(M,L), _(M,T), _(M,T), _(TM,T), _(TM,T), _(TM,T),
- /* 1A78 */ _(TM,T), _(TM,T), _(SM,T), _(SM,T), _(SM,T), _(x,x), _(x,x), _(SM,B),
- /* 1A80 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* 1A88 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 1A90 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* 1A98 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
-#define indic_offset_0x1b00u 2152
-
-
- /* Balinese */
-
- /* 1B00 */ _(Bi,T), _(Bi,T), _(Bi,T),_(CSR,T), _(Vs,R), _(VI,x), _(VI,x), _(VI,x),
- /* 1B08 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
- /* 1B10 */ _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1B18 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1B20 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1B28 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1B30 */ _(C,x), _(C,x), _(C,x), _(C,x), _(N,T), _(M,R), _(M,T), _(M,T),
- /* 1B38 */ _(M,B), _(M,B), _(M,B), _(M,BR), _(M,TB),_(M,TBR), _(M,L), _(M,L),
- /* 1B40 */ _(M,LR), _(M,LR), _(M,T), _(M,TR), _(V,R), _(C,x), _(C,x), _(C,x),
- /* 1B48 */ _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 1B50 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* 1B58 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 1B60 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 1B68 */ _(x,x), _(x,x), _(x,x), _(x,T), _(x,B), _(x,T), _(x,T), _(x,T),
- /* 1B70 */ _(x,T), _(x,T), _(x,T), _(x,T), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 1B78 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Sundanese */
-
- /* 1B80 */ _(Bi,T),_(CSR,T), _(Vs,R), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
- /* 1B88 */ _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1B90 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1B98 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1BA0 */ _(C,x), _(CS,R), _(CS,B), _(CS,B), _(M,T), _(M,B), _(M,L), _(M,R),
- /* 1BA8 */ _(M,T), _(M,T), _(PK,R), _(IS,x), _(CS,B), _(CS,B), _(C,x), _(C,x),
- /* 1BB0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* 1BB8 */ _(Nd,x), _(Nd,x), _(A,x), _(C,x), _(C,x), _(C,x), _(CF,x), _(CF,x),
-
- /* Batak */
-
- /* 1BC0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1BC8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1BD0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1BD8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1BE0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(VI,x), _(VI,x), _(N,T), _(M,R),
- /* 1BE8 */ _(M,T), _(M,T), _(M,R), _(M,R), _(M,R), _(M,T), _(M,R), _(M,T),
- /* 1BF0 */ _(CF,T), _(CF,T), _(PK,R), _(PK,R), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 1BF8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Lepcha */
-
- /* 1C00 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1C08 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1C10 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1C18 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 1C20 */ _(C,x), _(C,x), _(C,x), _(C,x), _(CS,R), _(CS,R), _(M,R), _(M,L),
- /* 1C28 */ _(M,L), _(M,TL), _(M,R), _(M,R), _(M,B), _(CF,T), _(CF,T), _(CF,T),
- /* 1C30 */ _(CF,T), _(CF,T), _(CF,T), _(CF,T), _(Bi,L), _(Bi,L), _(SM,T), _(N,B),
- /* 1C38 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 1C40 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* 1C48 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(C,x), _(C,x), _(C,x),
-
-#define indic_offset_0x1cd0u 2488
+#define indic_offset_0x1cd0u 1608
/* Vedic Extensions */
@@ -499,7 +344,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 1CF0 */ _(x,x), _(x,x), _(Vs,x), _(Vs,x), _(Ca,T), _(x,x), _(x,x), _(x,x),
/* 1CF8 */ _(Ca,x), _(Ca,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-#define indic_offset_0x2008u 2536
+#define indic_offset_0x2008u 1656
/* General Punctuation */
@@ -507,7 +352,7 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 2008 */ _(x,x), _(x,x), _(x,x), _(x,x),_(ZWNJ,x),_(ZWJ,x), _(x,x), _(x,x),
/* 2010 */ _(CP,x), _(CP,x), _(CP,x), _(CP,x), _(CP,x), _(x,x), _(x,x), _(x,x),
-#define indic_offset_0x2070u 2552
+#define indic_offset_0x2070u 1672
/* Superscripts and Subscripts */
@@ -516,89 +361,17 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* 2078 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
/* 2080 */ _(x,x), _(x,x), _(SM,x), _(SM,x), _(SM,x), _(x,x), _(x,x), _(x,x),
-#define indic_offset_0xa800u 2576
-
-
- /* Syloti Nagri */
-
- /* A800 */ _(VI,x), _(VI,x), _(x,x), _(VI,x), _(VI,x), _(VI,x), _(PK,T), _(C,x),
- /* A808 */ _(C,x), _(C,x), _(C,x), _(Bi,T), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A810 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A818 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A820 */ _(C,x), _(C,x), _(C,x), _(M,R), _(M,R), _(M,B), _(M,T), _(M,R),
- /* A828 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* A830 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* A838 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Phags-pa */
-
- /* A840 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A848 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A850 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A858 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(Vo,x), _(Vo,x),
- /* A860 */ _(Vo,x), _(Vo,x), _(C,x), _(C,x), _(C,x), _(C,x), _(Vo,x), _(CS,x),
- /* A868 */ _(CS,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A870 */ _(C,x), _(CS,x), _(C,x), _(Bi,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* A878 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Saurashtra */
-
- /* A880 */ _(Bi,R), _(Vs,R), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
- /* A888 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
- /* A890 */ _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A898 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A8A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A8A8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A8B0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(CF,R), _(M,R), _(M,R), _(M,R),
- /* A8B8 */ _(M,R), _(M,R), _(M,R), _(M,R), _(M,R), _(M,R), _(M,R), _(M,R),
- /* A8C0 */ _(M,R), _(M,R), _(M,R), _(M,R), _(V,B), _(x,x), _(x,x), _(x,x),
- /* A8C8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* A8D0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* A8D8 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
+#define indic_offset_0xa8e0u 1696
+
/* Devanagari Extended */
/* A8E0 */ _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T),
/* A8E8 */ _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T),
/* A8F0 */ _(Ca,T), _(Ca,T), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* A8F8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Kayah Li */
-
- /* A900 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* A908 */ _(Nd,x), _(Nd,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A910 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A918 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A920 */ _(C,x), _(C,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x),
- /* A928 */ _(Vo,x), _(Vo,x), _(Vo,x), _(TM,B), _(TM,B), _(TM,B), _(x,x), _(x,x),
-
- /* Rejang */
-
- /* A930 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A938 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A940 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(M,B),
- /* A948 */ _(M,B), _(M,B), _(M,T), _(M,B), _(M,B), _(M,B), _(M,B), _(CF,T),
- /* A950 */ _(CF,T), _(CF,T), _(CF,R), _(PK,R), _(x,x), _(x,x), _(x,x), _(x,x),
- /* A958 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* A960 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* A968 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* A970 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* A978 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Javanese */
-
- /* A980 */ _(Bi,T), _(Bi,T),_(CSR,T), _(Vs,R), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
- /* A988 */ _(VI,x), _(C,x), _(C,x), _(C,x), _(VI,x), _(VI,x), _(VI,x), _(C,x),
- /* A990 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A998 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A9A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A9A8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* A9B0 */ _(C,x), _(C,x), _(C,x), _(N,T), _(M,R), _(M,R), _(M,T), _(M,T),
- /* A9B8 */ _(M,B), _(M,B), _(M,L), _(M,L), _(M,T), _(CS,R), _(CM,R), _(CM,R),
- /* A9C0 */ _(V,BR), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* A9C8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* A9D0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* A9D8 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
+
+#define indic_offset_0xa9e0u 1720
+
/* Myanmar Extended-B */
@@ -607,301 +380,17 @@ static const INDIC_TABLE_ELEMENT_TYPE indic_table[] = {
/* A9F0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
/* A9F8 */ _(Nd,x), _(Nd,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x),
- /* Cham */
-
- /* AA00 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x),
- /* AA08 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* AA10 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* AA18 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* AA20 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* AA28 */ _(C,x), _(M,T), _(M,T), _(M,T), _(M,T), _(M,B), _(M,T), _(M,L),
- /* AA30 */ _(M,L), _(M,T), _(M,B), _(CM,R), _(CM,L), _(CM,B), _(CM,B), _(x,x),
- /* AA38 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* AA40 */ _(CF,x), _(CF,x), _(CF,x), _(CF,T), _(CF,x), _(CF,x), _(CF,x), _(CF,x),
- /* AA48 */ _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,T), _(CF,R), _(x,x), _(x,x),
- /* AA50 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* AA58 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
+#define indic_offset_0xaa60u 1752
+
/* Myanmar Extended-A */
/* AA60 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
/* AA68 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* AA70 */ _(x,x), _(C,x), _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(x,x),
+ /* AA70 */ _(x,x), _(C,x), _(C,x), _(C,x), _(CP,x), _(CP,x), _(CP,x), _(x,x),
/* AA78 */ _(x,x), _(x,x), _(C,x), _(TM,R), _(TM,T), _(TM,R), _(C,x), _(C,x),
- /* Tai Viet */
-
- /* AA80 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* AA88 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* AA90 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* AA98 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* AAA0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* AAA8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* AAB0 */ _(M,T), _(M,R), _(M,T), _(M,T), _(M,B),_(M,VOL),_(M,VOL), _(M,T),
- /* AAB8 */ _(M,T),_(M,VOL), _(M,R),_(M,VOL),_(M,VOL), _(M,R), _(M,T), _(TM,T),
- /* AAC0 */ _(TL,x), _(TM,T), _(TL,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* AAC8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* AAD0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* AAD8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Meetei Mayek Extensions */
-
- /* AAE0 */ _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* AAE8 */ _(C,x), _(C,x), _(C,x), _(M,L), _(M,B), _(M,T), _(M,L), _(M,R),
- /* AAF0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(Vs,R), _(IS,x), _(x,x),
-
-#define indic_offset_0xabc0u 3336
-
-
- /* Meetei Mayek */
-
- /* ABC0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* ABC8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(VI,x), _(VI,x),
- /* ABD0 */ _(C,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* ABD8 */ _(C,x), _(C,x), _(C,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x), _(CF,x),
- /* ABE0 */ _(CF,x), _(CF,x), _(CF,x), _(M,R), _(M,R), _(M,T), _(M,R), _(M,R),
- /* ABE8 */ _(M,B), _(M,R), _(M,R), _(x,x), _(TM,R), _(PK,B), _(x,x), _(x,x),
- /* ABF0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* ABF8 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
-#define indic_offset_0x10a00u 3400
-
-
- /* Kharoshthi */
-
- /* 10A00 */ _(C,x), _(M,O), _(M,B), _(M,B), _(x,x), _(M,T), _(M,O), _(x,x),
- /* 10A08 */ _(x,x), _(x,x), _(x,x), _(x,x), _(M,B), _(M,B), _(Bi,B), _(Vs,T),
- /* 10A10 */ _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(C,x), _(C,x), _(C,x),
- /* 10A18 */ _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 10A20 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 10A28 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 10A30 */ _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 10A38 */ _(N,T), _(N,B), _(N,B), _(x,x), _(x,x), _(x,x), _(x,x), _(IS,x),
- /* 10A40 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
-
-#define indic_offset_0x11000u 3472
-
-
- /* Brahmi */
-
- /* 11000 */ _(Bi,R), _(Bi,T), _(Vs,R),_(CWS,x),_(CWS,x), _(VI,x), _(VI,x), _(VI,x),
- /* 11008 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
- /* 11010 */ _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11018 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11020 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11028 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11030 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11038 */ _(M,T), _(M,T), _(M,T), _(M,T), _(M,B), _(M,B), _(M,B), _(M,B),
- /* 11040 */ _(M,B), _(M,B), _(M,T), _(M,T), _(M,T), _(M,T), _(V,T), _(x,x),
- /* 11048 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 11050 */ _(x,x), _(x,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),
- /* 11058 */_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),
- /* 11060 */_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x),_(BJN,x), _(Nd,x), _(Nd,x),
- /* 11068 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* 11070 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 11078 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(NJ,x),
-
- /* Kaithi */
-
- /* 11080 */ _(Bi,T), _(Bi,T), _(Vs,R), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
- /* 11088 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x),
- /* 11090 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11098 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 110A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 110A8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 110B0 */ _(M,R), _(M,L), _(M,R), _(M,B), _(M,B), _(M,T), _(M,T), _(M,R),
- /* 110B8 */ _(M,R), _(V,B), _(N,B), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
-#define indic_offset_0x11100u 3664
-
-
- /* Chakma */
-
- /* 11100 */ _(Bi,T), _(Bi,T), _(Vs,T), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(C,x),
- /* 11108 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11110 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11118 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11120 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(M,T),
- /* 11128 */ _(M,T), _(M,T), _(M,B), _(M,B), _(M,L), _(M,T), _(M,TB), _(M,TB),
- /* 11130 */ _(M,T), _(M,B), _(M,B), _(IS,x), _(PK,T), _(x,x), _(Nd,x), _(Nd,x),
- /* 11138 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* 11140 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 11148 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Mahajani */
-
- /* 11150 */ _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), _(Vo,x), _(C,x), _(C,x), _(C,x),
- /* 11158 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11160 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11168 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11170 */ _(C,x), _(C,x), _(C,x), _(N,B), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 11178 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Sharada */
-
- /* 11180 */ _(Bi,T), _(Bi,T), _(Vs,R), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
- /* 11188 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
- /* 11190 */ _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11198 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 111A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 111A8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 111B0 */ _(C,x), _(C,x), _(C,x), _(M,R), _(M,L), _(M,R), _(M,B), _(M,B),
- /* 111B8 */ _(M,B), _(M,B), _(M,B), _(M,B), _(M,T), _(M,T), _(M,T), _(M,TR),
- /* 111C0 */ _(V,R), _(A,x),_(CPrf,x),_(CPrf,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 111C8 */ _(x,x), _(x,x), _(N,x), _(M,T), _(M,B), _(x,x), _(x,x), _(x,x),
- /* 111D0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* 111D8 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Sinhala Archaic Numbers */
-
- /* 111E0 */ _(x,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* 111E8 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* 111F0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x),
- /* 111F8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Khojki */
-
- /* 11200 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
- /* 11208 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11210 */ _(C,x), _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11218 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11220 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11228 */ _(C,x), _(C,x), _(C,x), _(C,x), _(M,R), _(M,R), _(M,R), _(M,B),
- /* 11230 */ _(M,T), _(M,T), _(M,TR), _(M,TR), _(Bi,T), _(V,R), _(N,T), _(GM,T),
-
-#define indic_offset_0x11280u 3976
-
-
- /* Multani */
-
- /* 11280 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(x,x),
- /* 11288 */ _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(C,x),
- /* 11290 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11298 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(x,x), _(C,x),
- /* 112A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 112A8 */ _(C,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Khudawadi */
-
- /* 112B0 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
- /* 112B8 */ _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 112C0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 112C8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 112D0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 112D8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(Bi,T),
- /* 112E0 */ _(M,R), _(M,L), _(M,R), _(M,B), _(M,B), _(M,T), _(M,T), _(M,T),
- /* 112E8 */ _(M,T), _(N,B), _(PK,B), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 112F0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* 112F8 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Grantha */
-
- /* 11300 */ _(Bi,x), _(Bi,T), _(Bi,R), _(Vs,R), _(x,x), _(VI,x), _(VI,x), _(VI,x),
- /* 11308 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(x,x), _(x,x), _(VI,x),
- /* 11310 */ _(VI,x), _(x,x), _(x,x), _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x),
- /* 11318 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11320 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11328 */ _(C,x), _(x,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11330 */ _(C,x), _(x,x), _(C,x), _(C,x), _(x,x), _(C,x), _(C,x), _(C,x),
- /* 11338 */ _(C,x), _(C,x), _(x,x), _(x,x), _(N,x), _(A,x), _(M,R), _(M,R),
- /* 11340 */ _(M,T), _(M,R), _(M,R), _(M,R), _(M,R), _(x,x), _(x,x), _(M,L),
- /* 11348 */ _(M,L), _(x,x), _(x,x), _(M,LR), _(M,LR), _(V,R), _(x,x), _(x,x),
- /* 11350 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(M,R),
- /* 11358 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 11360 */ _(VI,x), _(VI,x), _(M,R), _(M,R), _(x,x), _(x,x), _(Ca,T), _(Ca,T),
- /* 11368 */ _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(x,x), _(x,x), _(x,x),
- /* 11370 */ _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(Ca,T), _(x,x), _(x,x), _(x,x),
-
-#define indic_offset_0x11480u 4224
-
-
- /* Tirhuta */
-
- /* 11480 */ _(x,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
- /* 11488 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(C,x),
- /* 11490 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11498 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 114A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 114A8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 114B0 */ _(M,R), _(M,L), _(M,R), _(M,B), _(M,B), _(M,B), _(M,B), _(M,B),
- /* 114B8 */ _(M,B), _(M,L), _(M,T), _(M,TL), _(M,LR), _(M,R), _(M,LR), _(Bi,T),
- /* 114C0 */ _(Bi,T), _(Vs,R), _(V,B), _(N,B), _(A,x), _(x,x), _(x,x), _(x,x),
- /* 114C8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 114D0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* 114D8 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
-#define indic_offset_0x11580u 4320
-
-
- /* Siddham */
-
- /* 11580 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
- /* 11588 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x),
- /* 11590 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11598 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 115A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 115A8 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(M,R),
- /* 115B0 */ _(M,L), _(M,R), _(M,B), _(M,B), _(M,B), _(M,B), _(x,x), _(x,x),
- /* 115B8 */ _(M,L), _(M,TL), _(M,LR),_(M,TLR), _(Bi,T), _(Bi,T), _(Vs,R), _(V,B),
- /* 115C0 */ _(N,B), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 115C8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 115D0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 115D8 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(M,B), _(M,B), _(x,x), _(x,x),
- /* 115E0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 115E8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 115F0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 115F8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Modi */
-
- /* 11600 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
- /* 11608 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(C,x), _(C,x),
- /* 11610 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11618 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11620 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11628 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11630 */ _(M,R), _(M,R), _(M,R), _(M,B), _(M,B), _(M,B), _(M,B), _(M,B),
- /* 11638 */ _(M,B), _(M,T), _(M,T), _(M,R), _(M,R), _(Bi,T), _(Vs,R), _(V,B),
- /* 11640 */ _(M,T), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 11648 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 11650 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* 11658 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 11660 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 11668 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 11670 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 11678 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Takri */
-
- /* 11680 */ _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x), _(VI,x),
- /* 11688 */ _(VI,x), _(VI,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11690 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11698 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 116A0 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 116A8 */ _(C,x), _(C,x), _(C,x), _(Bi,T), _(Vs,R), _(M,T), _(M,L), _(M,R),
- /* 116B0 */ _(M,B), _(M,B), _(M,T), _(M,T), _(M,T), _(M,T), _(V,R), _(N,B),
- /* 116B8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 116C0 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* 116C8 */ _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 116D0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 116D8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 116E0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 116E8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 116F0 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 116F8 */ _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
- /* Ahom */
-
- /* 11700 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11708 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11710 */ _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x), _(C,x),
- /* 11718 */ _(C,x), _(C,x), _(x,x), _(x,x), _(x,x), _(CM,B), _(CM,x), _(CM,T),
- /* 11720 */ _(M,R), _(M,R), _(M,T), _(M,T), _(M,B), _(M,B), _(M,L), _(M,T),
- /* 11728 */ _(M,B), _(M,T), _(M,T), _(PK,T), _(x,x), _(x,x), _(x,x), _(x,x),
- /* 11730 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x),
- /* 11738 */ _(Nd,x), _(Nd,x), _(Nd,x), _(Nd,x), _(x,x), _(x,x), _(x,x), _(x,x),
-
-}; /* Table items: 4768; occupancy: 72% */
+}; /* Table items: 1784; occupancy: 69% */
INDIC_TABLE_ELEMENT_TYPE
hb_indic_get_categories (hb_codepoint_t u)
@@ -917,9 +406,7 @@ hb_indic_get_categories (hb_codepoint_t u)
case 0x1u:
if (hb_in_range (u, 0x1000u, 0x109Fu)) return indic_table[u - 0x1000u + indic_offset_0x1000u];
- if (hb_in_range (u, 0x1700u, 0x17EFu)) return indic_table[u - 0x1700u + indic_offset_0x1700u];
- if (hb_in_range (u, 0x1900u, 0x1A9Fu)) return indic_table[u - 0x1900u + indic_offset_0x1900u];
- if (hb_in_range (u, 0x1B00u, 0x1C4Fu)) return indic_table[u - 0x1B00u + indic_offset_0x1b00u];
+ if (hb_in_range (u, 0x1780u, 0x17EFu)) return indic_table[u - 0x1780u + indic_offset_0x1780u];
if (hb_in_range (u, 0x1CD0u, 0x1CFFu)) return indic_table[u - 0x1CD0u + indic_offset_0x1cd0u];
break;
@@ -930,20 +417,9 @@ hb_indic_get_categories (hb_codepoint_t u)
break;
case 0xAu:
- if (hb_in_range (u, 0xA800u, 0xAAF7u)) return indic_table[u - 0xA800u + indic_offset_0xa800u];
- if (hb_in_range (u, 0xABC0u, 0xABFFu)) return indic_table[u - 0xABC0u + indic_offset_0xabc0u];
- break;
-
- case 0x10u:
- if (hb_in_range (u, 0x10A00u, 0x10A47u)) return indic_table[u - 0x10A00u + indic_offset_0x10a00u];
- break;
-
- case 0x11u:
- if (hb_in_range (u, 0x11000u, 0x110BFu)) return indic_table[u - 0x11000u + indic_offset_0x11000u];
- if (hb_in_range (u, 0x11100u, 0x11237u)) return indic_table[u - 0x11100u + indic_offset_0x11100u];
- if (hb_in_range (u, 0x11280u, 0x11377u)) return indic_table[u - 0x11280u + indic_offset_0x11280u];
- if (hb_in_range (u, 0x11480u, 0x114DFu)) return indic_table[u - 0x11480u + indic_offset_0x11480u];
- if (hb_in_range (u, 0x11580u, 0x1173Fu)) return indic_table[u - 0x11580u + indic_offset_0x11580u];
+ if (hb_in_range (u, 0xA8E0u, 0xA8F7u)) return indic_table[u - 0xA8E0u + indic_offset_0xa8e0u];
+ if (hb_in_range (u, 0xA9E0u, 0xA9FFu)) return indic_table[u - 0xA9E0u + indic_offset_0xa9e0u];
+ if (hb_in_range (u, 0xAA60u, 0xAA7Fu)) return indic_table[u - 0xAA60u + indic_offset_0xaa60u];
break;
default:
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc
index 1e151a77868..94556f65470 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-indic.cc
@@ -200,18 +200,10 @@ set_indic_properties (hb_glyph_info_t &info)
cat = OT_Symbol;
ASSERT_STATIC ((int) INDIC_SYLLABIC_CATEGORY_AVAGRAHA == OT_Symbol);
}
- else if (unlikely (u == 0x17DDu)) /* https://github.com/roozbehp/unicode-data/issues/2 */
- {
- cat = OT_M;
- pos = POS_ABOVE_C;
- }
else if (unlikely (u == 0x17C6u)) cat = OT_N; /* Khmer Bindu doesn't like to be repositioned. */
else if (unlikely (hb_in_range (u, 0x2010u, 0x2011u)))
cat = OT_PLACEHOLDER;
else if (unlikely (u == 0x25CCu)) cat = OT_DOTTEDCIRCLE;
- else if (unlikely (u == 0xA982u)) cat = OT_SM; /* Javanese repha. */
- else if (unlikely (u == 0xA9BEu)) cat = OT_CM2; /* Javanese medial ya. */
- else if (unlikely (u == 0xA9BDu)) { cat = OT_M; pos = POS_POST_C; } /* Javanese vocalic r. */
/*
@@ -277,11 +269,6 @@ enum blwf_mode_t {
BLWF_MODE_PRE_AND_POST, /* Below-forms feature applied to pre-base and post-base. */
BLWF_MODE_POST_ONLY /* Below-forms feature applied to post-base only. */
};
-enum pref_len_t {
- PREF_LEN_1 = 1,
- PREF_LEN_2 = 2,
- PREF_LEN_DONT_CARE = PREF_LEN_2
-};
struct indic_config_t
{
hb_script_t script;
@@ -291,26 +278,24 @@ struct indic_config_t
reph_position_t reph_pos;
reph_mode_t reph_mode;
blwf_mode_t blwf_mode;
- pref_len_t pref_len;
};
static const indic_config_t indic_configs[] =
{
/* Default. Should be first. */
- {HB_SCRIPT_INVALID, false, 0,BASE_POS_LAST, REPH_POS_BEFORE_POST,REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST, PREF_LEN_1},
- {HB_SCRIPT_DEVANAGARI,true, 0x094Du,BASE_POS_LAST, REPH_POS_BEFORE_POST,REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST, PREF_LEN_DONT_CARE},
- {HB_SCRIPT_BENGALI, true, 0x09CDu,BASE_POS_LAST, REPH_POS_AFTER_SUB, REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST, PREF_LEN_DONT_CARE},
- {HB_SCRIPT_GURMUKHI, true, 0x0A4Du,BASE_POS_LAST, REPH_POS_BEFORE_SUB, REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST, PREF_LEN_DONT_CARE},
- {HB_SCRIPT_GUJARATI, true, 0x0ACDu,BASE_POS_LAST, REPH_POS_BEFORE_POST,REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST, PREF_LEN_DONT_CARE},
- {HB_SCRIPT_ORIYA, true, 0x0B4Du,BASE_POS_LAST, REPH_POS_AFTER_MAIN, REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST, PREF_LEN_DONT_CARE},
- {HB_SCRIPT_TAMIL, true, 0x0BCDu,BASE_POS_LAST, REPH_POS_AFTER_POST, REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST, PREF_LEN_2},
- {HB_SCRIPT_TELUGU, true, 0x0C4Du,BASE_POS_LAST, REPH_POS_AFTER_POST, REPH_MODE_EXPLICIT, BLWF_MODE_POST_ONLY, PREF_LEN_2},
- {HB_SCRIPT_KANNADA, true, 0x0CCDu,BASE_POS_LAST, REPH_POS_AFTER_POST, REPH_MODE_IMPLICIT, BLWF_MODE_POST_ONLY, PREF_LEN_2},
- {HB_SCRIPT_MALAYALAM, true, 0x0D4Du,BASE_POS_LAST, REPH_POS_AFTER_MAIN, REPH_MODE_LOG_REPHA,BLWF_MODE_PRE_AND_POST, PREF_LEN_2},
+ {HB_SCRIPT_INVALID, false, 0,BASE_POS_LAST, REPH_POS_BEFORE_POST,REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST},
+ {HB_SCRIPT_DEVANAGARI,true, 0x094Du,BASE_POS_LAST, REPH_POS_BEFORE_POST,REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST},
+ {HB_SCRIPT_BENGALI, true, 0x09CDu,BASE_POS_LAST, REPH_POS_AFTER_SUB, REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST},
+ {HB_SCRIPT_GURMUKHI, true, 0x0A4Du,BASE_POS_LAST, REPH_POS_BEFORE_SUB, REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST},
+ {HB_SCRIPT_GUJARATI, true, 0x0ACDu,BASE_POS_LAST, REPH_POS_BEFORE_POST,REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST},
+ {HB_SCRIPT_ORIYA, true, 0x0B4Du,BASE_POS_LAST, REPH_POS_AFTER_MAIN, REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST},
+ {HB_SCRIPT_TAMIL, true, 0x0BCDu,BASE_POS_LAST, REPH_POS_AFTER_POST, REPH_MODE_IMPLICIT, BLWF_MODE_PRE_AND_POST},
+ {HB_SCRIPT_TELUGU, true, 0x0C4Du,BASE_POS_LAST, REPH_POS_AFTER_POST, REPH_MODE_EXPLICIT, BLWF_MODE_POST_ONLY},
+ {HB_SCRIPT_KANNADA, true, 0x0CCDu,BASE_POS_LAST, REPH_POS_AFTER_POST, REPH_MODE_IMPLICIT, BLWF_MODE_POST_ONLY},
+ {HB_SCRIPT_MALAYALAM, true, 0x0D4Du,BASE_POS_LAST, REPH_POS_AFTER_MAIN, REPH_MODE_LOG_REPHA,BLWF_MODE_PRE_AND_POST},
{HB_SCRIPT_SINHALA, false,0x0DCAu,BASE_POS_LAST_SINHALA,
- REPH_POS_AFTER_MAIN, REPH_MODE_EXPLICIT, BLWF_MODE_PRE_AND_POST, PREF_LEN_DONT_CARE},
- {HB_SCRIPT_KHMER, false,0x17D2u,BASE_POS_FIRST,REPH_POS_DONT_CARE, REPH_MODE_VIS_REPHA,BLWF_MODE_PRE_AND_POST, PREF_LEN_2},
- {HB_SCRIPT_JAVANESE, false,0xA9C0u,BASE_POS_FIRST,REPH_POS_DONT_CARE, REPH_MODE_VIS_REPHA,BLWF_MODE_PRE_AND_POST, PREF_LEN_1},
+ REPH_POS_AFTER_MAIN, REPH_MODE_EXPLICIT, BLWF_MODE_PRE_AND_POST},
+ {HB_SCRIPT_KHMER, false,0x17D2u,BASE_POS_FIRST,REPH_POS_DONT_CARE, REPH_MODE_VIS_REPHA,BLWF_MODE_PRE_AND_POST},
};
@@ -588,12 +573,8 @@ consonant_position_from_face (const indic_shape_plan_t *indic_plan,
if (indic_plan->pstf.would_substitute (glyphs , 2, face) ||
indic_plan->pstf.would_substitute (glyphs+1, 2, face))
return POS_POST_C;
- unsigned int pref_len = indic_plan->config->pref_len;
- if ((pref_len == PREF_LEN_2 &&
- (indic_plan->pref.would_substitute (glyphs , 2, face) ||
- indic_plan->pref.would_substitute (glyphs+1, 2, face)))
- || (pref_len == PREF_LEN_1 &&
- indic_plan->pref.would_substitute (glyphs+1, 1, face)))
+ if (indic_plan->pref.would_substitute (glyphs , 2, face) ||
+ indic_plan->pref.would_substitute (glyphs+1, 2, face))
return POS_POST_C;
return POS_BASE_C;
}
@@ -1099,10 +1080,9 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
}
}
- unsigned int pref_len = indic_plan->config->pref_len;
+ unsigned int pref_len = 2;
if (indic_plan->mask_array[PREF] && base + pref_len < end)
{
- assert (1 <= pref_len && pref_len <= 2);
/* Find a Halant,Ra sequence and mark it for pre-base reordering processing. */
for (unsigned int i = base + 1; i + pref_len - 1 < end; i++) {
hb_codepoint_t glyphs[2];
@@ -1312,7 +1292,7 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
for (base = start; base < end; base++)
if (info[base].indic_position() >= POS_BASE_C)
{
- if (try_pref && base + 1 < end && indic_plan->config->pref_len == 2)
+ if (try_pref && base + 1 < end)
{
for (unsigned int i = base + 1; i < end; i++)
if ((info[i].mask & indic_plan->mask_array[PREF]) != 0)
@@ -1594,7 +1574,6 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
if (try_pref && base + 1 < end) /* Otherwise there can't be any pre-base reordering Ra. */
{
- unsigned int pref_len = indic_plan->config->pref_len;
for (unsigned int i = base + 1; i < end; i++)
if ((info[i].mask & indic_plan->mask_array[PREF]) != 0)
{
@@ -1605,10 +1584,8 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
/* Note: We just check that something got substituted. We don't check that
* the <pref> feature actually did it...
*
- * If pref len is longer than one, then only reorder if it ligated. If
- * pref len is one, only reorder if it didn't ligate with other things. */
- if (_hb_glyph_info_substituted (&info[i]) &&
- ((pref_len == 1) ^ _hb_glyph_info_ligated_and_didnt_multiply (&info[i])))
+ * Reorder pref only if it ligated. */
+ if (_hb_glyph_info_ligated_and_didnt_multiply (&info[i]))
{
/*
* 2. Try to find a target position the same way as for pre-base matra.
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar-machine.hh
index 29fdf9a1aef..d2fe7422e69 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar-machine.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar-machine.hh
@@ -1,5 +1,5 @@
-#line 1 "hb-ot-shape-complex-myanmar-machine.rl"
+#line 1 "../../src/hb-ot-shape-complex-myanmar-machine.rl"
/*
* Copyright © 2011,2012 Google, Inc.
*
@@ -32,7 +32,7 @@
#include "hb-private.hh"
-#line 36 "hb-ot-shape-complex-myanmar-machine.hh"
+#line 36 "../../src/hb-ot-shape-complex-myanmar-machine.hh.tmp"
static const unsigned char _myanmar_syllable_machine_trans_keys[] = {
1u, 31u, 3u, 30u, 5u, 29u, 5u, 8u, 5u, 29u, 3u, 25u, 5u, 25u, 5u, 25u,
3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 1u, 16u, 3u, 29u, 3u, 29u, 3u, 29u,
@@ -261,11 +261,11 @@ static const int myanmar_syllable_machine_error = -1;
static const int myanmar_syllable_machine_en_main = 0;
-#line 36 "hb-ot-shape-complex-myanmar-machine.rl"
+#line 36 "../../src/hb-ot-shape-complex-myanmar-machine.rl"
-#line 93 "hb-ot-shape-complex-myanmar-machine.rl"
+#line 93 "../../src/hb-ot-shape-complex-myanmar-machine.rl"
#define found_syllable(syllable_type) \
@@ -285,7 +285,7 @@ find_syllables (hb_buffer_t *buffer)
int cs;
hb_glyph_info_t *info = buffer->info;
-#line 289 "hb-ot-shape-complex-myanmar-machine.hh"
+#line 289 "../../src/hb-ot-shape-complex-myanmar-machine.hh.tmp"
{
cs = myanmar_syllable_machine_start;
ts = 0;
@@ -293,7 +293,7 @@ find_syllables (hb_buffer_t *buffer)
act = 0;
}
-#line 114 "hb-ot-shape-complex-myanmar-machine.rl"
+#line 114 "../../src/hb-ot-shape-complex-myanmar-machine.rl"
p = 0;
@@ -302,7 +302,7 @@ find_syllables (hb_buffer_t *buffer)
unsigned int last = 0;
unsigned int syllable_serial = 1;
-#line 306 "hb-ot-shape-complex-myanmar-machine.hh"
+#line 306 "../../src/hb-ot-shape-complex-myanmar-machine.hh.tmp"
{
int _slen;
int _trans;
@@ -316,7 +316,7 @@ _resume:
#line 1 "NONE"
{ts = p;}
break;
-#line 320 "hb-ot-shape-complex-myanmar-machine.hh"
+#line 320 "../../src/hb-ot-shape-complex-myanmar-machine.hh.tmp"
}
_keys = _myanmar_syllable_machine_trans_keys + (cs<<1);
@@ -335,38 +335,38 @@ _eof_trans:
switch ( _myanmar_syllable_machine_trans_actions[_trans] ) {
case 7:
-#line 85 "hb-ot-shape-complex-myanmar-machine.rl"
+#line 85 "../../src/hb-ot-shape-complex-myanmar-machine.rl"
{te = p+1;{ found_syllable (consonant_syllable); }}
break;
case 5:
-#line 86 "hb-ot-shape-complex-myanmar-machine.rl"
+#line 86 "../../src/hb-ot-shape-complex-myanmar-machine.rl"
{te = p+1;{ found_syllable (non_myanmar_cluster); }}
break;
case 10:
-#line 87 "hb-ot-shape-complex-myanmar-machine.rl"
+#line 87 "../../src/hb-ot-shape-complex-myanmar-machine.rl"
{te = p+1;{ found_syllable (punctuation_cluster); }}
break;
case 4:
-#line 88 "hb-ot-shape-complex-myanmar-machine.rl"
+#line 88 "../../src/hb-ot-shape-complex-myanmar-machine.rl"
{te = p+1;{ found_syllable (broken_cluster); }}
break;
case 3:
-#line 89 "hb-ot-shape-complex-myanmar-machine.rl"
+#line 89 "../../src/hb-ot-shape-complex-myanmar-machine.rl"
{te = p+1;{ found_syllable (non_myanmar_cluster); }}
break;
case 6:
-#line 85 "hb-ot-shape-complex-myanmar-machine.rl"
+#line 85 "../../src/hb-ot-shape-complex-myanmar-machine.rl"
{te = p;p--;{ found_syllable (consonant_syllable); }}
break;
case 8:
-#line 88 "hb-ot-shape-complex-myanmar-machine.rl"
+#line 88 "../../src/hb-ot-shape-complex-myanmar-machine.rl"
{te = p;p--;{ found_syllable (broken_cluster); }}
break;
case 9:
-#line 89 "hb-ot-shape-complex-myanmar-machine.rl"
+#line 89 "../../src/hb-ot-shape-complex-myanmar-machine.rl"
{te = p;p--;{ found_syllable (non_myanmar_cluster); }}
break;
-#line 370 "hb-ot-shape-complex-myanmar-machine.hh"
+#line 370 "../../src/hb-ot-shape-complex-myanmar-machine.hh.tmp"
}
_again:
@@ -375,7 +375,7 @@ _again:
#line 1 "NONE"
{ts = 0;}
break;
-#line 379 "hb-ot-shape-complex-myanmar-machine.hh"
+#line 379 "../../src/hb-ot-shape-complex-myanmar-machine.hh.tmp"
}
if ( ++p != pe )
@@ -391,7 +391,7 @@ _again:
}
-#line 123 "hb-ot-shape-complex-myanmar-machine.rl"
+#line 123 "../../src/hb-ot-shape-complex-myanmar-machine.rl"
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar.cc
index 545765d5f1d..577d790c783 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-myanmar.cc
@@ -249,6 +249,11 @@ set_myanmar_properties (hb_glyph_info_t &info)
case 0x104Au: case 0x104Bu:
cat = (indic_category_t) OT_P;
break;
+
+ case 0xAA74u: case 0xAA75u: case 0xAA76u:
+ /* https://github.com/roozbehp/unicode-data/issues/3 */
+ cat = (indic_category_t) OT_C;
+ break;
}
if (cat == OT_M)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-private.hh
index b3372bd295e..fb0c7040617 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-private.hh
@@ -241,9 +241,6 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
/* Unicode-3.0 additions */
case HB_SCRIPT_SINHALA:
- /* Unicode-5.2 additions */
- case HB_SCRIPT_JAVANESE:
-
/* If the designer designed the font for the 'DFLT' script,
* use the default shaper. Otherwise, use the specific shaper.
* Note that for some simple scripts, there may not be *any*
@@ -316,7 +313,7 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
/* Unicode-5.2 additions */
case HB_SCRIPT_EGYPTIAN_HIEROGLYPHS:
- //case HB_SCRIPT_JAVANESE:
+ case HB_SCRIPT_JAVANESE:
case HB_SCRIPT_KAITHI:
case HB_SCRIPT_MEETEI_MAYEK:
case HB_SCRIPT_TAI_THAM:
@@ -345,6 +342,15 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
case HB_SCRIPT_SIDDHAM:
case HB_SCRIPT_TIRHUTA:
+ /* Unicode-8.0 additions */
+ case HB_SCRIPT_AHOM:
+ //case HB_SCRIPT_MULTANI:
+
+ /* Unicode-9.0 additions */
+ case HB_SCRIPT_BHAIKSUKI:
+ case HB_SCRIPT_MARCHEN:
+ case HB_SCRIPT_NEWA:
+
/* If the designer designed the font for the 'DFLT' script,
* use the default shaper. Otherwise, use the specific shaper.
* Note that for some simple scripts, there may not be *any*
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh
index ced9d97f28f..44e5d0d56b2 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.hh
@@ -36,291 +36,222 @@
#line 38 "hb-ot-shape-complex-use-machine.hh"
static const unsigned char _use_syllable_machine_trans_keys[] = {
- 0u, 0u, 4u, 4u, 1u, 1u, 0u, 39u, 21u, 21u, 8u, 39u, 8u, 39u, 1u, 1u,
- 8u, 39u, 8u, 39u, 8u, 39u, 8u, 26u, 8u, 26u, 8u, 26u, 8u, 39u, 8u, 39u,
- 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u,
- 8u, 39u, 8u, 39u, 8u, 39u, 1u, 1u, 8u, 39u, 8u, 39u, 8u, 26u, 8u, 26u,
+ 1u, 1u, 0u, 39u, 21u, 21u, 8u, 39u, 8u, 39u, 1u, 1u, 8u, 39u, 8u, 39u,
+ 8u, 39u, 8u, 26u, 8u, 26u, 8u, 26u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u,
+ 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 13u, 21u,
+ 4u, 4u, 13u, 13u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 26u, 8u, 26u,
8u, 26u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u,
- 8u, 39u, 12u, 21u, 12u, 13u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 26u,
- 8u, 26u, 8u, 26u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u,
- 8u, 39u, 8u, 39u, 8u, 39u, 8u, 39u, 1u, 39u, 8u, 39u, 21u, 42u, 41u, 42u,
+ 8u, 39u, 8u, 39u, 8u, 39u, 1u, 1u, 1u, 39u, 8u, 39u, 21u, 42u, 41u, 42u,
42u, 42u, 0
};
static const char _use_syllable_machine_key_spans[] = {
- 0, 1, 1, 40, 1, 32, 32, 1,
- 32, 32, 32, 19, 19, 19, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 1, 32, 32, 19, 19,
+ 1, 40, 1, 32, 32, 1, 32, 32,
+ 32, 19, 19, 19, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 9,
+ 1, 1, 32, 32, 32, 32, 19, 19,
19, 32, 32, 32, 32, 32, 32, 32,
- 32, 10, 2, 32, 32, 32, 32, 19,
- 19, 19, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 39, 32, 22, 2,
+ 32, 32, 32, 1, 39, 32, 22, 2,
1
};
static const short _use_syllable_machine_index_offsets[] = {
- 0, 0, 2, 4, 45, 47, 80, 113,
- 115, 148, 181, 214, 234, 254, 274, 307,
- 340, 373, 406, 439, 472, 505, 538, 571,
- 604, 637, 670, 703, 705, 738, 771, 791,
- 811, 831, 864, 897, 930, 963, 996, 1029,
- 1062, 1095, 1106, 1109, 1142, 1175, 1208, 1241,
- 1261, 1281, 1301, 1334, 1367, 1400, 1433, 1466,
- 1499, 1532, 1565, 1598, 1631, 1671, 1704, 1727,
- 1730
+ 0, 2, 43, 45, 78, 111, 113, 146,
+ 179, 212, 232, 252, 272, 305, 338, 371,
+ 404, 437, 470, 503, 536, 569, 602, 635,
+ 645, 647, 649, 682, 715, 748, 781, 801,
+ 821, 841, 874, 907, 940, 973, 1006, 1039,
+ 1072, 1105, 1138, 1171, 1173, 1213, 1246, 1269,
+ 1272
};
static const char _use_syllable_machine_indicies[] = {
- 1, 0, 3, 2, 4, 5, 6,
- 4, 1, 5, 8, 8, 7, 8, 8,
- 3, 9, 8, 8, 8, 4, 4, 10,
- 11, 8, 8, 12, 13, 14, 15, 16,
- 17, 18, 12, 19, 20, 21, 22, 23,
- 24, 8, 25, 26, 27, 8, 29, 28,
- 31, 30, 30, 32, 33, 30, 30, 30,
- 30, 30, 30, 30, 30, 34, 35, 36,
- 37, 38, 39, 40, 41, 35, 42, 34,
- 43, 44, 45, 46, 30, 47, 48, 49,
- 30, 31, 30, 30, 32, 33, 30, 30,
- 30, 30, 30, 30, 30, 30, 50, 35,
- 36, 37, 38, 39, 40, 41, 35, 42,
- 43, 43, 44, 45, 46, 30, 47, 48,
- 49, 30, 32, 51, 31, 30, 30, 32,
- 33, 30, 30, 30, 30, 30, 30, 30,
- 30, 30, 35, 36, 37, 38, 39, 40,
- 41, 35, 42, 43, 43, 44, 45, 46,
- 30, 47, 48, 49, 30, 31, 30, 30,
- 30, 30, 30, 30, 30, 30, 30, 30,
- 30, 30, 30, 35, 36, 37, 38, 39,
- 30, 30, 30, 30, 30, 30, 44, 45,
- 46, 30, 47, 48, 49, 30, 31, 30,
- 30, 30, 30, 30, 30, 30, 30, 30,
- 30, 30, 30, 30, 30, 36, 37, 38,
- 39, 30, 30, 30, 30, 30, 30, 30,
- 30, 30, 30, 47, 48, 49, 30, 31,
- 30, 30, 30, 30, 30, 30, 30, 30,
- 30, 30, 30, 30, 30, 30, 30, 37,
- 38, 39, 30, 31, 30, 30, 30, 30,
- 30, 30, 30, 30, 30, 30, 30, 30,
- 30, 30, 30, 30, 38, 39, 30, 31,
- 30, 30, 30, 30, 30, 30, 30, 30,
- 30, 30, 30, 30, 30, 30, 30, 30,
- 30, 39, 30, 31, 30, 30, 30, 30,
- 30, 30, 30, 30, 30, 30, 30, 30,
- 30, 30, 30, 37, 38, 39, 30, 30,
- 30, 30, 30, 30, 30, 30, 30, 30,
- 47, 48, 49, 30, 31, 30, 30, 30,
- 30, 30, 30, 30, 30, 30, 30, 30,
- 30, 30, 30, 30, 37, 38, 39, 30,
- 30, 30, 30, 30, 30, 30, 30, 30,
- 30, 30, 48, 49, 30, 31, 30, 30,
- 30, 30, 30, 30, 30, 30, 30, 30,
- 30, 30, 30, 30, 30, 37, 38, 39,
- 30, 30, 30, 30, 30, 30, 30, 30,
- 30, 30, 30, 30, 49, 30, 31, 30,
- 30, 30, 30, 30, 30, 30, 30, 30,
- 30, 30, 30, 30, 30, 36, 37, 38,
- 39, 30, 30, 30, 30, 30, 30, 44,
- 45, 46, 30, 47, 48, 49, 30, 31,
- 30, 30, 30, 30, 30, 30, 30, 30,
- 30, 30, 30, 30, 30, 30, 36, 37,
- 38, 39, 30, 30, 30, 30, 30, 30,
- 30, 45, 46, 30, 47, 48, 49, 30,
- 31, 30, 30, 30, 30, 30, 30, 30,
- 30, 30, 30, 30, 30, 30, 30, 36,
- 37, 38, 39, 30, 30, 30, 30, 30,
- 30, 30, 30, 46, 30, 47, 48, 49,
- 30, 31, 30, 30, 30, 30, 30, 30,
- 30, 30, 30, 30, 30, 30, 30, 35,
- 36, 37, 38, 39, 30, 41, 35, 30,
- 30, 30, 44, 45, 46, 30, 47, 48,
- 49, 30, 31, 30, 30, 30, 30, 30,
- 30, 30, 30, 30, 30, 30, 30, 30,
- 35, 36, 37, 38, 39, 30, 30, 35,
- 30, 30, 30, 44, 45, 46, 30, 47,
- 48, 49, 30, 31, 30, 30, 30, 30,
- 30, 30, 30, 30, 30, 30, 30, 30,
- 30, 35, 36, 37, 38, 39, 40, 41,
- 35, 30, 30, 30, 44, 45, 46, 30,
- 47, 48, 49, 30, 31, 30, 30, 32,
- 33, 30, 30, 30, 30, 30, 30, 30,
- 30, 30, 35, 36, 37, 38, 39, 40,
- 41, 35, 42, 30, 43, 44, 45, 46,
- 30, 47, 48, 49, 30, 31, 30, 30,
- 32, 33, 30, 30, 30, 30, 30, 30,
- 30, 30, 30, 35, 36, 37, 38, 39,
- 40, 41, 35, 42, 34, 43, 44, 45,
- 46, 30, 47, 48, 49, 30, 53, 52,
- 52, 54, 55, 52, 52, 52, 52, 52,
- 52, 52, 52, 56, 52, 57, 58, 59,
- 60, 61, 62, 57, 63, 56, 64, 52,
- 52, 52, 52, 65, 66, 67, 52, 53,
- 52, 52, 54, 55, 52, 52, 52, 52,
- 52, 52, 52, 52, 68, 52, 57, 58,
- 59, 60, 61, 62, 57, 63, 64, 64,
- 52, 52, 52, 52, 65, 66, 67, 52,
- 54, 51, 53, 52, 52, 54, 55, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 57, 58, 59, 60, 61, 62, 57,
- 63, 64, 64, 52, 52, 52, 52, 65,
- 66, 67, 52, 53, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 57, 58, 59, 60, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 65, 66, 67, 52, 53, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 58, 59, 60, 52,
- 53, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 59, 60, 52, 53, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 60, 52,
- 53, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 58, 59, 60, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 65, 66, 67,
- 52, 53, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 58, 59, 60, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 66,
- 67, 52, 53, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 58, 59, 60, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 67, 52, 53, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 57, 58, 59, 60, 52, 62,
- 57, 52, 52, 52, 52, 52, 52, 52,
- 65, 66, 67, 52, 53, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 57, 58, 59, 60, 52,
- 52, 57, 52, 52, 52, 52, 52, 52,
- 52, 65, 66, 67, 52, 53, 52, 52,
- 52, 52, 52, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 57, 58, 59, 60,
- 61, 62, 57, 52, 52, 52, 52, 52,
- 52, 52, 65, 66, 67, 52, 53, 52,
- 52, 54, 55, 52, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 57, 58, 59,
- 60, 61, 62, 57, 63, 52, 64, 52,
- 52, 52, 52, 65, 66, 67, 52, 53,
- 52, 52, 54, 55, 52, 52, 52, 52,
- 52, 52, 52, 52, 52, 52, 57, 58,
- 59, 60, 61, 62, 57, 63, 56, 64,
- 52, 52, 52, 52, 65, 66, 67, 52,
- 70, 71, 69, 69, 69, 69, 69, 69,
- 69, 72, 69, 70, 71, 69, 7, 73,
- 73, 3, 9, 73, 73, 73, 73, 73,
- 73, 73, 73, 74, 12, 13, 14, 15,
- 16, 17, 18, 12, 19, 21, 21, 22,
- 23, 24, 73, 25, 26, 27, 73, 7,
- 73, 73, 3, 9, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 12, 13, 14,
- 15, 16, 17, 18, 12, 19, 21, 21,
- 22, 23, 24, 73, 25, 26, 27, 73,
- 7, 73, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 12, 13,
- 14, 15, 16, 73, 73, 73, 73, 73,
- 73, 22, 23, 24, 73, 25, 26, 27,
- 73, 7, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 73, 73,
- 13, 14, 15, 16, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 25, 26,
- 27, 73, 7, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 73, 73,
- 73, 73, 14, 15, 16, 73, 7, 73,
- 73, 73, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 73, 15,
- 16, 73, 7, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 16, 73, 7, 73,
- 73, 73, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 14, 15,
- 16, 73, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 25, 26, 27, 73, 7,
- 73, 73, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 73, 14,
- 15, 16, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 26, 27, 73,
- 7, 73, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 73, 73,
- 14, 15, 16, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 73, 27,
- 73, 7, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 73, 73,
- 13, 14, 15, 16, 73, 73, 73, 73,
- 73, 73, 22, 23, 24, 73, 25, 26,
- 27, 73, 7, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 73, 73,
- 73, 13, 14, 15, 16, 73, 73, 73,
- 73, 73, 73, 73, 23, 24, 73, 25,
- 26, 27, 73, 7, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 73, 73,
- 73, 73, 13, 14, 15, 16, 73, 73,
- 73, 73, 73, 73, 73, 73, 24, 73,
- 25, 26, 27, 73, 7, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 73, 73,
- 73, 73, 12, 13, 14, 15, 16, 73,
- 18, 12, 73, 73, 73, 22, 23, 24,
- 73, 25, 26, 27, 73, 7, 73, 73,
- 73, 73, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 12, 13, 14, 15, 16,
- 73, 73, 12, 73, 73, 73, 22, 23,
- 24, 73, 25, 26, 27, 73, 7, 73,
- 73, 73, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 12, 13, 14, 15,
- 16, 17, 18, 12, 73, 73, 73, 22,
- 23, 24, 73, 25, 26, 27, 73, 7,
- 73, 73, 3, 9, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 12, 13, 14,
- 15, 16, 17, 18, 12, 19, 73, 21,
- 22, 23, 24, 73, 25, 26, 27, 73,
- 5, 6, 73, 73, 5, 73, 73, 7,
- 73, 73, 3, 9, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 12, 13, 14,
- 15, 16, 17, 18, 12, 19, 20, 21,
- 22, 23, 24, 73, 25, 26, 27, 73,
- 7, 73, 73, 3, 9, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 12, 13,
- 14, 15, 16, 17, 18, 12, 19, 20,
- 21, 22, 23, 24, 73, 25, 26, 27,
- 73, 76, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 76, 77, 75,
- 76, 77, 75, 77, 75, 0
+ 1, 0, 2, 3, 4, 2, 5, 3,
+ 4, 4, 6, 4, 4, 1, 7, 4,
+ 4, 4, 2, 2, 8, 9, 4, 4,
+ 10, 11, 12, 13, 14, 15, 16, 10,
+ 17, 18, 19, 20, 21, 22, 4, 23,
+ 24, 25, 4, 27, 26, 29, 28, 28,
+ 30, 31, 28, 28, 28, 28, 28, 28,
+ 28, 28, 32, 33, 34, 35, 36, 37,
+ 38, 39, 33, 40, 32, 41, 42, 43,
+ 44, 28, 45, 46, 47, 28, 29, 28,
+ 28, 30, 31, 28, 28, 28, 28, 28,
+ 28, 28, 28, 48, 33, 34, 35, 36,
+ 37, 38, 39, 33, 40, 41, 41, 42,
+ 43, 44, 28, 45, 46, 47, 28, 30,
+ 49, 29, 28, 28, 30, 31, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 33,
+ 34, 35, 36, 37, 38, 39, 33, 40,
+ 41, 41, 42, 43, 44, 28, 45, 46,
+ 47, 28, 29, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 33, 34, 35, 36, 37, 28, 28, 28,
+ 28, 28, 28, 42, 43, 44, 28, 45,
+ 46, 47, 28, 29, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 34, 35, 36, 37, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 45, 46, 47, 28, 29, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 35, 36, 37, 28,
+ 29, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 36, 37, 28, 29, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 37, 28,
+ 29, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 35, 36, 37, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 45, 46, 47,
+ 28, 29, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 35, 36, 37, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 46,
+ 47, 28, 29, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 35, 36, 37, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 47, 28, 29, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 34, 35, 36, 37, 28, 28,
+ 28, 28, 28, 28, 42, 43, 44, 28,
+ 45, 46, 47, 28, 29, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 34, 35, 36, 37, 28,
+ 28, 28, 28, 28, 28, 28, 43, 44,
+ 28, 45, 46, 47, 28, 29, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 34, 35, 36, 37,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 44, 28, 45, 46, 47, 28, 29, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 33, 34, 35, 36,
+ 37, 28, 39, 33, 28, 28, 28, 42,
+ 43, 44, 28, 45, 46, 47, 28, 29,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 33, 34, 35,
+ 36, 37, 28, 28, 33, 28, 28, 28,
+ 42, 43, 44, 28, 45, 46, 47, 28,
+ 29, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 28, 28, 28, 33, 34,
+ 35, 36, 37, 38, 39, 33, 28, 28,
+ 28, 42, 43, 44, 28, 45, 46, 47,
+ 28, 29, 28, 28, 30, 31, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 33,
+ 34, 35, 36, 37, 38, 39, 33, 40,
+ 28, 41, 42, 43, 44, 28, 45, 46,
+ 47, 28, 29, 28, 28, 30, 31, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28,
+ 33, 34, 35, 36, 37, 38, 39, 33,
+ 40, 32, 41, 42, 43, 44, 28, 45,
+ 46, 47, 28, 51, 50, 50, 50, 50,
+ 50, 50, 50, 52, 50, 5, 53, 51,
+ 50, 6, 54, 54, 1, 55, 54, 54,
+ 54, 54, 54, 54, 54, 54, 56, 10,
+ 11, 12, 13, 14, 15, 16, 10, 17,
+ 19, 19, 20, 21, 22, 54, 23, 24,
+ 25, 54, 6, 54, 54, 1, 55, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 10, 11, 12, 13, 14, 15, 16, 10,
+ 17, 19, 19, 20, 21, 22, 54, 23,
+ 24, 25, 54, 6, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 10, 11, 12, 13, 14, 54, 54,
+ 54, 54, 54, 54, 20, 21, 22, 54,
+ 23, 24, 25, 54, 6, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 11, 12, 13, 14, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 23, 24, 25, 54, 6, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 12, 13, 14,
+ 54, 6, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 13, 14, 54, 6, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 14,
+ 54, 6, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 12, 13, 14, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 23, 24,
+ 25, 54, 6, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 12, 13, 14, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 24, 25, 54, 6, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 12, 13, 14, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 25, 54, 6, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 11, 12, 13, 14, 54,
+ 54, 54, 54, 54, 54, 20, 21, 22,
+ 54, 23, 24, 25, 54, 6, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 11, 12, 13, 14,
+ 54, 54, 54, 54, 54, 54, 54, 21,
+ 22, 54, 23, 24, 25, 54, 6, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 11, 12, 13,
+ 14, 54, 54, 54, 54, 54, 54, 54,
+ 54, 22, 54, 23, 24, 25, 54, 6,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 10, 11, 12,
+ 13, 14, 54, 16, 10, 54, 54, 54,
+ 20, 21, 22, 54, 23, 24, 25, 54,
+ 6, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 10, 11,
+ 12, 13, 14, 54, 54, 10, 54, 54,
+ 54, 20, 21, 22, 54, 23, 24, 25,
+ 54, 6, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54, 10,
+ 11, 12, 13, 14, 15, 16, 10, 54,
+ 54, 54, 20, 21, 22, 54, 23, 24,
+ 25, 54, 6, 54, 54, 1, 55, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54,
+ 10, 11, 12, 13, 14, 15, 16, 10,
+ 17, 54, 19, 20, 21, 22, 54, 23,
+ 24, 25, 54, 1, 57, 3, 54, 54,
+ 54, 3, 54, 54, 6, 54, 54, 1,
+ 55, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 10, 11, 12, 13, 14, 15,
+ 16, 10, 17, 18, 19, 20, 21, 22,
+ 54, 23, 24, 25, 54, 6, 54, 54,
+ 1, 55, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 10, 11, 12, 13, 14,
+ 15, 16, 10, 17, 18, 19, 20, 21,
+ 22, 54, 23, 24, 25, 54, 59, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 59, 60, 58, 59, 60, 58,
+ 60, 58, 0
};
static const char _use_syllable_machine_trans_targs[] = {
- 3, 41, 3, 43, 4, 5, 25, 3,
- 0, 2, 60, 62, 45, 46, 47, 48,
- 49, 56, 57, 58, 61, 59, 53, 54,
- 55, 50, 51, 52, 3, 3, 3, 3,
- 6, 7, 24, 9, 10, 11, 12, 13,
- 20, 21, 22, 23, 17, 18, 19, 14,
- 15, 16, 8, 3, 3, 3, 26, 27,
- 40, 29, 30, 31, 32, 36, 37, 38,
- 39, 33, 34, 35, 28, 3, 3, 1,
- 42, 3, 44, 3, 63, 64
+ 1, 26, 2, 3, 1, 23, 1, 43,
+ 44, 46, 28, 29, 30, 31, 32, 39,
+ 40, 41, 45, 42, 36, 37, 38, 33,
+ 34, 35, 1, 1, 1, 1, 4, 5,
+ 22, 7, 8, 9, 10, 11, 18, 19,
+ 20, 21, 15, 16, 17, 12, 13, 14,
+ 6, 1, 1, 24, 25, 1, 1, 0,
+ 27, 1, 1, 47, 48
};
static const char _use_syllable_machine_trans_actions[] = {
- 1, 2, 3, 4, 0, 0, 0, 7,
- 0, 0, 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 4, 4, 0, 0,
- 0, 0, 0, 0, 8, 9, 10, 11,
+ 1, 2, 0, 0, 5, 0, 6, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 2, 2, 0, 0, 0, 0,
+ 0, 0, 7, 8, 9, 10, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 12, 13, 14, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 15, 16, 0,
- 2, 17, 4, 18, 0, 0
+ 0, 11, 12, 0, 0, 13, 14, 0,
+ 2, 15, 16, 0, 0
};
static const char _use_syllable_machine_to_state_actions[] = {
- 0, 0, 0, 5, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -330,9 +261,7 @@ static const char _use_syllable_machine_to_state_actions[] = {
};
static const char _use_syllable_machine_from_state_actions[] = {
- 0, 0, 0, 6, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -342,29 +271,27 @@ static const char _use_syllable_machine_from_state_actions[] = {
};
static const short _use_syllable_machine_eof_trans[] = {
- 0, 1, 3, 0, 29, 31, 31, 52,
- 31, 31, 31, 31, 31, 31, 31, 31,
- 31, 31, 31, 31, 31, 31, 31, 31,
- 31, 53, 53, 52, 53, 53, 53, 53,
- 53, 53, 53, 53, 53, 53, 53, 53,
- 53, 70, 70, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 76, 76,
- 76
+ 1, 0, 27, 29, 29, 50, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 51,
+ 54, 51, 55, 55, 55, 55, 55, 55,
+ 55, 55, 55, 55, 55, 55, 55, 55,
+ 55, 55, 55, 58, 55, 55, 59, 59,
+ 59
};
-static const int use_syllable_machine_start = 3;
-static const int use_syllable_machine_first_final = 3;
-static const int use_syllable_machine_error = 0;
+static const int use_syllable_machine_start = 1;
+static const int use_syllable_machine_first_final = 1;
+static const int use_syllable_machine_error = -1;
-static const int use_syllable_machine_en_main = 3;
+static const int use_syllable_machine_en_main = 1;
#line 38 "hb-ot-shape-complex-use-machine.rl"
-#line 145 "hb-ot-shape-complex-use-machine.rl"
+#line 138 "hb-ot-shape-complex-use-machine.rl"
#define found_syllable(syllable_type) \
@@ -384,7 +311,7 @@ find_syllables (hb_buffer_t *buffer)
int cs;
hb_glyph_info_t *info = buffer->info;
-#line 388 "hb-ot-shape-complex-use-machine.hh"
+#line 315 "hb-ot-shape-complex-use-machine.hh"
{
cs = use_syllable_machine_start;
ts = 0;
@@ -392,7 +319,7 @@ find_syllables (hb_buffer_t *buffer)
act = 0;
}
-#line 166 "hb-ot-shape-complex-use-machine.rl"
+#line 159 "hb-ot-shape-complex-use-machine.rl"
p = 0;
@@ -401,7 +328,7 @@ find_syllables (hb_buffer_t *buffer)
unsigned int last = 0;
unsigned int syllable_serial = 1;
-#line 405 "hb-ot-shape-complex-use-machine.hh"
+#line 332 "hb-ot-shape-complex-use-machine.hh"
{
int _slen;
int _trans;
@@ -409,15 +336,13 @@ find_syllables (hb_buffer_t *buffer)
const char *_inds;
if ( p == pe )
goto _test_eof;
- if ( cs == 0 )
- goto _out;
_resume:
switch ( _use_syllable_machine_from_state_actions[cs] ) {
- case 6:
+ case 4:
#line 1 "NONE"
{ts = p;}
break;
-#line 421 "hb-ot-shape-complex-use-machine.hh"
+#line 346 "hb-ot-shape-complex-use-machine.hh"
}
_keys = _use_syllable_machine_trans_keys + (cs<<1);
@@ -439,92 +364,70 @@ _eof_trans:
#line 1 "NONE"
{te = p+1;}
break;
- case 9:
-#line 134 "hb-ot-shape-complex-use-machine.rl"
+ case 8:
+#line 127 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (independent_cluster); }}
break;
- case 11:
-#line 136 "hb-ot-shape-complex-use-machine.rl"
- {te = p+1;{ found_syllable (consonant_cluster); }}
- break;
- case 14:
-#line 137 "hb-ot-shape-complex-use-machine.rl"
- {te = p+1;{ found_syllable (vowel_cluster); }}
- break;
- case 16:
-#line 138 "hb-ot-shape-complex-use-machine.rl"
- {te = p+1;{ found_syllable (number_joiner_terminated_cluster); }}
+ case 10:
+#line 129 "hb-ot-shape-complex-use-machine.rl"
+ {te = p+1;{ found_syllable (standard_cluster); }}
break;
- case 7:
-#line 141 "hb-ot-shape-complex-use-machine.rl"
+ case 6:
+#line 133 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (broken_cluster); }}
break;
- case 8:
+ case 5:
#line 134 "hb-ot-shape-complex-use-machine.rl"
+ {te = p+1;{ found_syllable (non_cluster); }}
+ break;
+ case 7:
+#line 127 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (independent_cluster); }}
break;
- case 12:
-#line 135 "hb-ot-shape-complex-use-machine.rl"
+ case 11:
+#line 128 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (virama_terminated_cluster); }}
break;
- case 10:
-#line 136 "hb-ot-shape-complex-use-machine.rl"
- {te = p;p--;{ found_syllable (consonant_cluster); }}
+ case 9:
+#line 129 "hb-ot-shape-complex-use-machine.rl"
+ {te = p;p--;{ found_syllable (standard_cluster); }}
break;
case 13:
-#line 137 "hb-ot-shape-complex-use-machine.rl"
- {te = p;p--;{ found_syllable (vowel_cluster); }}
+#line 130 "hb-ot-shape-complex-use-machine.rl"
+ {te = p;p--;{ found_syllable (number_joiner_terminated_cluster); }}
break;
- case 15:
-#line 139 "hb-ot-shape-complex-use-machine.rl"
+ case 12:
+#line 131 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (numeral_cluster); }}
break;
- case 18:
-#line 140 "hb-ot-shape-complex-use-machine.rl"
+ case 16:
+#line 132 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (symbol_cluster); }}
break;
- case 17:
-#line 141 "hb-ot-shape-complex-use-machine.rl"
+ case 14:
+#line 133 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (broken_cluster); }}
break;
- case 1:
-#line 139 "hb-ot-shape-complex-use-machine.rl"
- {{p = ((te))-1;}{ found_syllable (numeral_cluster); }}
- break;
- case 3:
-#line 1 "NONE"
- { switch( act ) {
- case 0:
- {{cs = 0; goto _again;}}
- break;
- case 8:
- {{p = ((te))-1;} found_syllable (broken_cluster); }
- break;
- }
- }
+ case 15:
+#line 134 "hb-ot-shape-complex-use-machine.rl"
+ {te = p;p--;{ found_syllable (non_cluster); }}
break;
- case 4:
-#line 1 "NONE"
- {te = p+1;}
-#line 141 "hb-ot-shape-complex-use-machine.rl"
- {act = 8;}
+ case 1:
+#line 133 "hb-ot-shape-complex-use-machine.rl"
+ {{p = ((te))-1;}{ found_syllable (broken_cluster); }}
break;
-#line 513 "hb-ot-shape-complex-use-machine.hh"
+#line 420 "hb-ot-shape-complex-use-machine.hh"
}
_again:
switch ( _use_syllable_machine_to_state_actions[cs] ) {
- case 5:
+ case 3:
#line 1 "NONE"
{ts = 0;}
-#line 1 "NONE"
- {act = 0;}
break;
-#line 524 "hb-ot-shape-complex-use-machine.hh"
+#line 429 "hb-ot-shape-complex-use-machine.hh"
}
- if ( cs == 0 )
- goto _out;
if ( ++p != pe )
goto _resume;
_test_eof: {}
@@ -536,10 +439,9 @@ _again:
}
}
- _out: {}
}
-#line 175 "hb-ot-shape-complex-use-machine.rl"
+#line 168 "hb-ot-shape-complex-use-machine.rl"
}
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.rl b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.rl
index b8242bab1e7..f6b814b1df0 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.rl
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-machine.rl
@@ -44,7 +44,6 @@
O = 0; # OTHER
B = 1; # BASE
-IV = 2; # BASE_VOWEL
IND = 3; # BASE_IND
N = 4; # BASE_NUM
GB = 5; # BASE_OTHER
@@ -96,11 +95,11 @@ vowel_modifiers = VMPre* VMAbv* VMBlw* VMPst*;
final_consonants = FAbv* FBlw* FPst* FM?;
virama_terminated_cluster =
- R? (B | GB | IV) VS?
+ R? (B | GB) VS?
consonant_modifiers
H
;
-consonant_cluster =
+standard_cluster =
R? (B | GB) VS?
consonant_modifiers
medial_consonants
@@ -108,13 +107,6 @@ consonant_cluster =
vowel_modifiers
final_consonants
;
-vowel_cluster =
- R? (IV) VS?
- consonant_modifiers
- medial_consonants
- vowel_modifiers
- final_consonants
-;
broken_cluster =
R?
@@ -125,20 +117,21 @@ broken_cluster =
final_consonants
;
-number_joiner_terminated_cluster = N VS? (HN N VS?)* H;
+number_joiner_terminated_cluster = N VS? (HN N VS?)* HN;
numeral_cluster = N VS? (HN N VS?)*;
symbol_cluster = S VS? SMAbv* SMBlw*;
independent_cluster = (IND | O | Rsv | WJ) VS?;
+other = any;
main := |*
independent_cluster => { found_syllable (independent_cluster); };
virama_terminated_cluster => { found_syllable (virama_terminated_cluster); };
- consonant_cluster => { found_syllable (consonant_cluster); };
- vowel_cluster => { found_syllable (vowel_cluster); };
+ standard_cluster => { found_syllable (standard_cluster); };
number_joiner_terminated_cluster => { found_syllable (number_joiner_terminated_cluster); };
numeral_cluster => { found_syllable (numeral_cluster); };
symbol_cluster => { found_syllable (symbol_cluster); };
broken_cluster => { found_syllable (broken_cluster); };
+ other => { found_syllable (non_cluster); };
*|;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-private.hh
index a1437362119..ae428cb5eb2 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-private.hh
@@ -46,7 +46,6 @@ enum use_category_t {
USE_O = 0, /* OTHER */
USE_B = 1, /* BASE */
- USE_IV = 2, /* BASE_VOWEL */
USE_IND = 3, /* BASE_IND */
USE_N = 4, /* BASE_NUM */
USE_GB = 5, /* BASE_OTHER */
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-table.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-table.cc
index 6cd1c5db75f..38c46d002d1 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-table.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use-table.cc
@@ -6,12 +6,12 @@
*
* on files with these headers:
*
- * # IndicSyllabicCategory-8.0.0.txt
- * # Date: 2015-05-12, 10:00:00 GMT [RP, KW, LI]
- * # IndicPositionalCategory-8.0.0.txt
- * # Date: 2015-05-12, 10:00:00 GMT [RP, KW, LI]
- * # Blocks-8.0.0.txt
- * # Date: 2014-11-10, 23:04:00 GMT [KW]
+ * # IndicSyllabicCategory-9.0.0.txt
+ * # Date: 2016-05-21, 02:46:00 GMT [RP]
+ * # IndicPositionalCategory-9.0.0.txt
+ * # Date: 2016-02-25, 00:48:00 GMT [RP]
+ * # Blocks-9.0.0.txt
+ * # Date: 2016-02-05, 23:48:00 GMT [KW]
* UnicodeData.txt does not have a header.
*/
@@ -24,7 +24,6 @@
#define H USE_H /* HALANT */
#define HN USE_HN /* HALANT_NUM */
#define IND USE_IND /* BASE_IND */
-#define IV USE_IV /* BASE_VOWEL */
#define N USE_N /* BASE_NUM */
#define O USE_O /* OTHER */
#define R USE_R /* REPHA */
@@ -80,30 +79,30 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* Devanagari */
- /* 0900 */ VMAbv, VMAbv, VMAbv, VMPst, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV,
- /* 0910 */ IV, IV, IV, IV, IV, B, B, B, B, B, B, B, B, B, B, B,
+ /* 0900 */ VMAbv, VMAbv, VMAbv, VMPst, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* 0910 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 0920 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 0930 */ B, B, B, B, B, B, B, B, B, B, VAbv, VPst, CMBlw, B, VPst, VPre,
/* 0940 */ VPst, VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, VPst, VPst, VPst, VPst, H, VPre, VPst,
/* 0950 */ O, VMAbv, VMBlw, O, O, VAbv, VBlw, VBlw, B, B, B, B, B, B, B, B,
- /* 0960 */ IV, IV, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
- /* 0970 */ O, O, IV, IV, IV, IV, IV, IV, B, B, B, B, B, B, B, B,
+ /* 0960 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
+ /* 0970 */ O, O, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* Bengali */
- /* 0980 */ O, VMAbv, VMPst, VMPst, O, IV, IV, IV, IV, IV, IV, IV, IV, O, O, IV,
- /* 0990 */ IV, O, O, IV, IV, B, B, B, B, B, B, B, B, B, B, B,
+ /* 0980 */ O, VMAbv, VMPst, VMPst, O, B, B, B, B, B, B, B, B, O, O, B,
+ /* 0990 */ B, O, O, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 09A0 */ B, B, B, B, B, B, B, B, B, O, B, B, B, B, B, B,
/* 09B0 */ B, O, B, O, O, O, B, B, B, B, O, O, CMBlw, B, VPst, VPre,
/* 09C0 */ VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPre, O, O, VPre, VPre, H, IND, O,
/* 09D0 */ O, O, O, O, O, O, O, VPst, O, O, O, O, B, B, O, B,
- /* 09E0 */ IV, IV, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
+ /* 09E0 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
/* 09F0 */ B, B, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
/* Gurmukhi */
- /* 0A00 */ O, VMAbv, VMAbv, VMPst, O, IV, IV, IV, IV, IV, IV, O, O, O, O, IV,
- /* 0A10 */ IV, O, O, IV, IV, B, B, B, B, B, B, B, B, B, B, B,
+ /* 0A00 */ O, VMAbv, VMAbv, VMPst, O, B, B, B, B, B, B, O, O, O, O, B,
+ /* 0A10 */ B, O, O, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 0A20 */ B, B, B, B, B, B, B, B, B, O, B, B, B, B, B, B,
/* 0A30 */ B, O, B, B, O, B, B, O, B, B, O, O, CMBlw, O, VPst, VPre,
/* 0A40 */ VPst, VBlw, VBlw, O, O, O, O, VAbv, VAbv, O, O, VAbv, VAbv, H, O, O,
@@ -113,30 +112,30 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* Gujarati */
- /* 0A80 */ O, VMAbv, VMAbv, VMPst, O, IV, IV, IV, IV, IV, IV, IV, IV, IV, O, IV,
- /* 0A90 */ IV, IV, O, IV, IV, B, B, B, B, B, B, B, B, B, B, B,
+ /* 0A80 */ O, VMAbv, VMAbv, VMPst, O, B, B, B, B, B, B, B, B, B, O, B,
+ /* 0A90 */ B, B, O, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 0AA0 */ B, B, B, B, B, B, B, B, B, O, B, B, B, B, B, B,
/* 0AB0 */ B, O, B, B, O, B, B, B, B, B, O, O, CMBlw, B, VPst, VPre,
/* 0AC0 */ VPst, VBlw, VBlw, VBlw, VBlw, VAbv, O, VAbv, VAbv, VAbv, O, VPst, VPst, H, O, O,
/* 0AD0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
- /* 0AE0 */ IV, IV, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
+ /* 0AE0 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
/* 0AF0 */ O, O, O, O, O, O, O, O, O, B, O, O, O, O, O, O,
/* Oriya */
- /* 0B00 */ O, VMAbv, VMPst, VMPst, O, IV, IV, IV, IV, IV, IV, IV, IV, O, O, IV,
- /* 0B10 */ IV, O, O, IV, IV, B, B, B, B, B, B, B, B, B, B, B,
+ /* 0B00 */ O, VMAbv, VMPst, VMPst, O, B, B, B, B, B, B, B, B, O, O, B,
+ /* 0B10 */ B, O, O, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 0B20 */ B, B, B, B, B, B, B, B, B, O, B, B, B, B, B, B,
/* 0B30 */ B, O, B, B, O, B, B, B, B, B, O, O, CMBlw, B, VPst, VAbv,
/* 0B40 */ VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPre, O, O, VPre, VPre, H, O, O,
/* 0B50 */ O, O, O, O, O, O, VAbv, VAbv, O, O, O, O, B, B, O, B,
- /* 0B60 */ IV, IV, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
+ /* 0B60 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
/* 0B70 */ O, B, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
/* Tamil */
- /* 0B80 */ O, O, VMAbv, IND, O, IV, IV, IV, IV, IV, IV, O, O, O, IV, IV,
- /* 0B90 */ IV, O, IV, IV, IV, B, O, O, O, B, B, O, B, O, B, B,
+ /* 0B80 */ O, O, VMAbv, IND, O, B, B, B, B, B, B, O, O, O, B, B,
+ /* 0B90 */ B, O, B, B, B, B, O, O, O, B, B, O, B, O, B, B,
/* 0BA0 */ O, O, O, B, B, O, O, O, B, B, B, O, O, O, B, B,
/* 0BB0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, VPst, VPst,
/* 0BC0 */ VAbv, VPst, VPst, O, O, O, VPre, VPre, VPre, O, VPre, VPre, VPre, H, O, O,
@@ -146,41 +145,41 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* Telugu */
- /* 0C00 */ VMAbv, VMPst, VMPst, VMPst, O, IV, IV, IV, IV, IV, IV, IV, IV, O, IV, IV,
- /* 0C10 */ IV, O, IV, IV, IV, B, B, B, B, B, B, B, B, B, B, B,
+ /* 0C00 */ VMAbv, VMPst, VMPst, VMPst, O, B, B, B, B, B, B, B, B, O, B, B,
+ /* 0C10 */ B, O, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 0C20 */ B, B, B, B, B, B, B, B, B, O, B, B, B, B, B, B,
/* 0C30 */ B, B, B, B, B, B, B, B, B, B, O, O, O, B, VAbv, VAbv,
/* 0C40 */ VAbv, VPst, VPst, VPst, VPst, O, VAbv, VAbv, VAbv, O, VAbv, VAbv, VAbv, H, O, O,
/* 0C50 */ O, O, O, O, O, VAbv, VBlw, O, B, B, B, O, O, O, O, O,
- /* 0C60 */ IV, IV, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
+ /* 0C60 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
/* 0C70 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
/* Kannada */
- /* 0C80 */ O, VMAbv, VMPst, VMPst, O, IV, IV, IV, IV, IV, IV, IV, IV, O, IV, IV,
- /* 0C90 */ IV, O, IV, IV, IV, B, B, B, B, B, B, B, B, B, B, B,
+ /* 0C80 */ O, VMAbv, VMPst, VMPst, O, B, B, B, B, B, B, B, B, O, B, B,
+ /* 0C90 */ B, O, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 0CA0 */ B, B, B, B, B, B, B, B, B, O, B, B, B, B, B, B,
/* 0CB0 */ B, B, B, B, O, B, B, B, B, B, O, O, CMBlw, B, VPst, VAbv,
/* 0CC0 */ VAbv, VPst, VPst, VPst, VPst, O, VAbv, VAbv, VAbv, O, VAbv, VAbv, VAbv, H, O, O,
/* 0CD0 */ O, O, O, O, O, VPst, VPst, O, O, O, O, O, O, O, B, O,
- /* 0CE0 */ IV, IV, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
+ /* 0CE0 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
/* 0CF0 */ O, R, R, O, O, O, O, O, O, O, O, O, O, O, O, O,
/* Malayalam */
- /* 0D00 */ O, VMAbv, VMPst, VMPst, O, IV, IV, IV, IV, IV, IV, IV, IV, O, IV, IV,
- /* 0D10 */ IV, O, IV, IV, IV, B, B, B, B, B, B, B, B, B, B, B,
+ /* 0D00 */ O, VMAbv, VMPst, VMPst, O, B, B, B, B, B, B, B, B, O, B, B,
+ /* 0D10 */ B, O, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 0D20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 0D30 */ B, B, B, B, B, B, B, B, B, B, B, O, O, B, VPst, VPst,
/* 0D40 */ VPst, VPst, VPst, VBlw, VBlw, O, VPre, VPre, VPre, O, VPre, VPre, VPre, H, R, O,
- /* 0D50 */ O, O, O, O, O, O, O, VPst, O, O, O, O, O, O, O, IV,
- /* 0D60 */ IV, IV, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
+ /* 0D50 */ O, O, O, O, IND, IND, IND, VPst, O, O, O, O, O, O, O, B,
+ /* 0D60 */ B, B, VBlw, VBlw, O, O, B, B, B, B, B, B, B, B, B, B,
/* 0D70 */ O, O, O, O, O, O, O, O, O, O, IND, IND, IND, IND, IND, IND,
/* Sinhala */
- /* 0D80 */ O, O, VMPst, VMPst, O, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV,
- /* 0D90 */ IV, IV, IV, IV, IV, IV, IV, O, O, O, B, B, B, B, B, B,
+ /* 0D80 */ O, O, VMPst, VMPst, O, B, B, B, B, B, B, B, B, B, B, B,
+ /* 0D90 */ B, B, B, B, B, B, B, O, O, O, B, B, B, B, B, B,
/* 0DA0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 0DB0 */ B, B, O, B, B, B, B, B, B, B, B, B, O, B, O, O,
/* 0DC0 */ B, B, B, B, B, B, B, O, O, O, H, O, O, O, O, VPst,
@@ -195,10 +194,10 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 1000 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 1010 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 1020 */ B, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, VPst, VPst, VAbv, VAbv, VBlw,
+ /* 1020 */ B, B, B, B, B, B, B, B, B, B, B, VPst, VPst, VAbv, VAbv, VBlw,
/* 1030 */ VBlw, VPre, VAbv, VAbv, VAbv, VAbv, VMAbv, VMBlw, VMPst, H, VAbv, MPst, MPre, MBlw, MBlw, B,
/* 1040 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, GB, O,
- /* 1050 */ B, B, IV, IV, IV, IV, VPst, VPst, VBlw, VBlw, B, B, B, B, MBlw, MBlw,
+ /* 1050 */ B, B, B, B, B, B, VPst, VPst, VBlw, VBlw, B, B, B, B, MBlw, MBlw,
/* 1060 */ MBlw, B, VPst, VMPst, VMPst, B, B, VPst, VPst, VMPst, VMPst, VMPst, VMPst, VMPst, B, B,
/* 1070 */ B, VAbv, VAbv, VAbv, VAbv, B, B, B, B, B, B, B, B, B, B, B,
/* 1080 */ B, B, MBlw, VPst, VPre, VAbv, VAbv, VMPst, VMPst, VMPst, VMPst, VMPst, VMPst, VMBlw, B, VMPst,
@@ -209,30 +208,30 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* Tagalog */
- /* 1700 */ IV, IV, IV, B, B, B, B, B, B, B, B, B, B, O, B, B,
+ /* 1700 */ B, B, B, B, B, B, B, B, B, B, B, B, B, O, B, B,
/* 1710 */ B, B, VAbv, VBlw, VBlw, O, O, O, O, O, O, O, O, O, O, O,
/* Hanunoo */
- /* 1720 */ IV, IV, IV, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* 1720 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 1730 */ B, B, VAbv, VBlw, VBlw, O, O, O, O, O, O, O, O, O, O, O,
/* Buhid */
- /* 1740 */ IV, IV, IV, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* 1740 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 1750 */ B, B, VAbv, VBlw, O, O, O, O, O, O, O, O, O, O, O, O,
/* Tagbanwa */
- /* 1760 */ IV, IV, IV, B, B, B, B, B, B, B, B, B, B, O, B, B,
+ /* 1760 */ B, B, B, B, B, B, B, B, B, B, B, B, B, O, B, B,
/* 1770 */ B, O, VAbv, VBlw, O, O, O, O, O, O, O, O, O, O, O, O,
/* Khmer */
/* 1780 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 1790 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 17A0 */ B, B, B, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV,
- /* 17B0 */ IV, IV, IV, IV, O, O, VPst, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VBlw, VPre, VPre,
+ /* 17A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* 17B0 */ B, B, B, B, O, O, VPst, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VBlw, VPre, VPre,
/* 17C0 */ VPre, VPre, VPre, VPre, VPre, VPre, VMAbv, VMPst, VPst, VMAbv, VMAbv, FM, FAbv, CMAbv, FM, FM,
/* 17D0 */ FM, VAbv, H, FM, O, O, O, O, O, O, O, O, B, VAbv, O, O,
/* 17E0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
@@ -274,8 +273,8 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 1A20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 1A30 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 1A40 */ B, B, B, B, B, B, B, B, B, B, B, B, B, IV, IV, IV,
- /* 1A50 */ IV, IV, IV, B, B, MPre, MBlw, FPst, FAbv, FAbv, FAbv, FBlw, FBlw, FBlw, FBlw, O,
+ /* 1A40 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* 1A50 */ B, B, B, B, B, MPre, MBlw, FPst, FAbv, FAbv, FAbv, FBlw, FBlw, FBlw, FBlw, O,
/* 1A60 */ H, VPst, VAbv, VPst, VPst, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VAbv, VBlw, VPst, VPre, VPre,
/* 1A70 */ VPre, VPre, VPre, VAbv, VAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, FM, FM, FM, O, O, FM,
/* 1A80 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
@@ -286,8 +285,8 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* Balinese */
- /* 1B00 */ VMAbv, VMAbv, VMAbv, FAbv, VMPst, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV,
- /* 1B10 */ IV, IV, IV, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* 1B00 */ VMAbv, VMAbv, VMAbv, FAbv, VMPst, B, B, B, B, B, B, B, B, B, B, B,
+ /* 1B10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 1B20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 1B30 */ B, B, B, B, CMAbv, VPst, VAbv, VAbv, VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VPre, VPre,
/* 1B40 */ VPre, VPre, VAbv, VAbv, H, B, B, B, B, B, B, B, O, O, O, O,
@@ -297,7 +296,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* Sundanese */
- /* 1B80 */ VMAbv, FAbv, VMPst, IV, IV, IV, IV, IV, IV, IV, B, B, B, B, B, B,
+ /* 1B80 */ VMAbv, FAbv, VMPst, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 1B90 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 1BA0 */ B, SUB, SUB, SUB, VAbv, VBlw, VPre, VPst, VAbv, VAbv, VPst, H, SUB, SUB, B, B,
/* 1BB0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
@@ -306,7 +305,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 1BC0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 1BD0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 1BE0 */ B, B, B, B, IV, IV, CMAbv, VPst, VAbv, VAbv, VPst, VPst, VPst, VAbv, VPst, VAbv,
+ /* 1BE0 */ B, B, B, B, B, B, CMAbv, VPst, VAbv, VAbv, VPst, VPst, VPst, VAbv, VPst, VAbv,
/* 1BF0 */ FAbv, FAbv, VPst, VPst, O, O, O, O, O, O, O, O, O, O, O, O,
/* Lepcha */
@@ -326,14 +325,20 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 1CE0 */ VMAbv, VMPst, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, VMBlw, O, O, O, O, VMBlw, O, O,
/* 1CF0 */ O, O, VMPst, VMPst, VMAbv, O, O, O, VMAbv, VMAbv, O, O, O, O, O, O,
-#define use_offset_0x2008u 2552
+#define use_offset_0x1df8u 2552
+
+
+ /* Combining Diacritical Marks Supplement */
+ O, O, O, FM, O, O, O, O,
+
+#define use_offset_0x2008u 2560
/* General Punctuation */
O, O, O, O, ZWNJ, ZWJ, O, O,
/* 2010 */ GB, GB, GB, GB, GB, O, O, O,
-#define use_offset_0x2060u 2568
+#define use_offset_0x2060u 2576
/* 2060 */ WJ, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
@@ -342,12 +347,12 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 2070 */ O, O, O, O, FM, O, O, O, O, O, O, O, O, O, O, O,
/* 2080 */ O, O, FM, FM, FM, O, O, O,
-#define use_offset_0xa800u 2608
+#define use_offset_0xa800u 2616
/* Syloti Nagri */
- /* A800 */ IV, IV, O, IV, IV, IV, VAbv, B, B, B, B, VMAbv, B, B, B, B,
+ /* A800 */ B, B, O, B, B, B, VAbv, B, B, B, B, VMAbv, B, B, B, B,
/* A810 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* A820 */ B, B, B, VPst, VPst, VBlw, VAbv, VPst, O, O, O, O, O, O, O, O,
/* A830 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
@@ -361,11 +366,11 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* Saurashtra */
- /* A880 */ VMPst, VMPst, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV,
- /* A890 */ IV, IV, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* A880 */ VMPst, VMPst, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* A890 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* A8A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* A8B0 */ B, B, B, B, FPst, VPst, VPst, VPst, VPst, VPst, VPst, VPst, VPst, VPst, VPst, VPst,
- /* A8C0 */ VPst, VPst, VPst, VPst, H, O, O, O, O, O, O, O, O, O, O, O,
+ /* A8C0 */ VPst, VPst, VPst, VPst, H, VMAbv, O, O, O, O, O, O, O, O, O, O,
/* A8D0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
/* Devanagari Extended */
@@ -389,7 +394,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* Javanese */
- /* A980 */ VMAbv, VMAbv, FAbv, VMPst, IV, IV, IV, IV, IV, B, B, B, IV, IV, IV, B,
+ /* A980 */ VMAbv, VMAbv, FAbv, VMPst, B, B, B, B, B, B, B, B, B, B, B, B,
/* A990 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* A9A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* A9B0 */ B, B, B, CMAbv, VPst, VPst, VAbv, VAbv, VBlw, VBlw, VPre, VPre, VAbv, SUB, MPst, MPst,
@@ -403,7 +408,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* Cham */
- /* AA00 */ IV, IV, IV, IV, IV, IV, B, B, B, B, B, B, B, B, B, B,
+ /* AA00 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* AA10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* AA20 */ B, B, B, B, B, B, B, B, B, VAbv, VAbv, VAbv, VAbv, VBlw, VAbv, VPre,
/* AA30 */ VPre, VAbv, VBlw, MPst, MPre, MBlw, MBlw, O, O, O, O, O, O, O, O, O,
@@ -413,7 +418,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* Myanmar Extended-A */
/* AA60 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* AA70 */ O, B, B, B, O, O, O, O, O, O, B, VMPst, VMAbv, VMPst, B, B,
+ /* AA70 */ O, B, B, B, GB, GB, GB, O, O, O, B, VMPst, VMAbv, VMPst, B, B,
/* Tai Viet */
@@ -426,27 +431,27 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* Meetei Mayek Extensions */
- /* AAE0 */ IV, IV, B, B, B, B, B, B, B, B, B, VPre, VBlw, VAbv, VPre, VPst,
+ /* AAE0 */ B, B, B, B, B, B, B, B, B, B, B, VPre, VBlw, VAbv, VPre, VPst,
/* AAF0 */ O, O, O, O, O, VMPst, H, O,
-#define use_offset_0xabc0u 3368
+#define use_offset_0xabc0u 3376
/* Meetei Mayek */
- /* ABC0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, IV, IV,
- /* ABD0 */ B, IV, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* ABC0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* ABD0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* ABE0 */ B, B, B, VPst, VPst, VAbv, VPst, VPst, VBlw, VPst, VPst, O, VMPst, VBlw, O, O,
/* ABF0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
-#define use_offset_0xfe00u 3432
+#define use_offset_0xfe00u 3440
/* Variation Selectors */
/* FE00 */ VS, VS, VS, VS, VS, VS, VS, VS, VS, VS, VS, VS, VS, VS, VS, VS,
-#define use_offset_0x10a00u 3448
+#define use_offset_0x10a00u 3456
/* Kharoshthi */
@@ -457,13 +462,13 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 10A30 */ B, B, B, B, O, O, O, O, CMAbv, CMBlw, CMBlw, O, O, O, O, H,
/* 10A40 */ B, B, B, B, B, B, B, B,
-#define use_offset_0x11000u 3520
+#define use_offset_0x11000u 3528
/* Brahmi */
- /* 11000 */ VMPst, VMAbv, VMPst, R, R, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV,
- /* 11010 */ IV, IV, IV, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* 11000 */ VMPst, VMAbv, VMPst, R, R, B, B, B, B, B, B, B, B, B, B, B,
+ /* 11010 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11020 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11030 */ B, B, B, B, B, B, B, B, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VBlw, VBlw,
/* 11040 */ VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, H, O, O, O, O, O, O, O, O, O,
@@ -473,17 +478,17 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* Kaithi */
- /* 11080 */ VMAbv, VMAbv, VMPst, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, B, B, B,
+ /* 11080 */ VMAbv, VMAbv, VMPst, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11090 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 110A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 110B0 */ VPst, VPre, VPst, VBlw, VBlw, VAbv, VAbv, VPst, VPst, H, CMBlw, O, O, O, O, O,
-#define use_offset_0x11100u 3712
+#define use_offset_0x11100u 3720
/* Chakma */
- /* 11100 */ VMAbv, VMAbv, VMAbv, IV, IV, IV, IV, B, B, B, B, B, B, B, B, B,
+ /* 11100 */ VMAbv, VMAbv, VMAbv, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11110 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11120 */ B, B, B, B, B, B, B, VAbv, VAbv, VAbv, VBlw, VBlw, VPre, VAbv, VAbv, VAbv,
/* 11130 */ VAbv, VBlw, VBlw, H, VAbv, O, B, B, B, B, B, B, B, B, B, B,
@@ -497,8 +502,8 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* Sharada */
- /* 11180 */ VMAbv, VMAbv, VMPst, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV,
- /* 11190 */ IV, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* 11180 */ VMAbv, VMAbv, VMPst, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* 11190 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 111A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 111B0 */ B, B, B, VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VAbv,
/* 111C0 */ H, B, R, R, O, O, O, O, O, O, CMBlw, VAbv, VBlw, O, O, O,
@@ -511,23 +516,23 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* Khojki */
- /* 11200 */ IV, IV, IV, IV, IV, IV, IV, IV, B, B, B, B, B, B, B, B,
+ /* 11200 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11210 */ B, B, O, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11220 */ B, B, B, B, B, B, B, B, B, B, B, B, VPst, VPst, VPst, VBlw,
- /* 11230 */ VAbv, VAbv, VAbv, VAbv, VMAbv, H, CMAbv, CMAbv,
+ /* 11230 */ VAbv, VAbv, VAbv, VAbv, VMAbv, H, CMAbv, CMAbv, O, O, O, O, O, O, VMAbv, O,
-#define use_offset_0x11280u 4024
+#define use_offset_0x11280u 4040
/* Multani */
- /* 11280 */ IV, IV, IV, IV, B, B, B, O, B, O, B, B, B, B, O, B,
+ /* 11280 */ B, B, B, B, B, B, B, O, B, O, B, B, B, B, O, B,
/* 11290 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, O, B,
/* 112A0 */ B, B, B, B, B, B, B, B, B, O, O, O, O, O, O, O,
/* Khudawadi */
- /* 112B0 */ IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, B, B, B, B, B, B,
+ /* 112B0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 112C0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 112D0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, VMAbv,
/* 112E0 */ VPst, VPre, VPst, VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, CMBlw, VBlw, O, O, O, O, O,
@@ -535,44 +540,55 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* Grantha */
- /* 11300 */ VMAbv, VMAbv, VMPst, VMPst, O, IV, IV, IV, IV, IV, IV, IV, IV, O, O, IV,
- /* 11310 */ IV, O, O, IV, IV, B, B, B, B, B, B, B, B, B, B, B,
+ /* 11300 */ VMAbv, VMAbv, VMPst, VMPst, O, B, B, B, B, B, B, B, B, O, O, B,
+ /* 11310 */ B, O, O, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11320 */ B, B, B, B, B, B, B, B, B, O, B, B, B, B, B, B,
/* 11330 */ B, O, B, B, O, B, B, B, B, B, O, O, CMBlw, B, VPst, VPst,
/* 11340 */ VAbv, VPst, VPst, VPst, VPst, O, O, VPre, VPre, O, O, VPre, VPre, H, O, O,
/* 11350 */ O, O, O, O, O, O, O, VPst, O, O, O, O, O, O, O, O,
- /* 11360 */ IV, IV, VPst, VPst, O, O, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, O, O, O,
+ /* 11360 */ B, B, VPst, VPst, O, O, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, O, O, O,
/* 11370 */ VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, O, O, O,
-#define use_offset_0x11480u 4272
+#define use_offset_0x11400u 4288
+ /* Newa */
+
+ /* 11400 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* 11410 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* 11420 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* 11430 */ B, B, B, B, B, VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VAbv, VAbv,
+ /* 11440 */ VPst, VPst, H, VMAbv, VMAbv, VMPst, CMBlw, B, O, O, O, O, O, O, O, O,
+ /* 11450 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
+ /* 11460 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
+ /* 11470 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
+
/* Tirhuta */
- /* 11480 */ O, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, B,
+ /* 11480 */ O, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11490 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 114A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 114B0 */ VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VPre, VAbv, VPre, VPre, VPst, VPre, VMAbv,
/* 114C0 */ VMAbv, VMPst, H, CMBlw, B, O, O, O, O, O, O, O, O, O, O, O,
/* 114D0 */ B, B, B, B, B, B, B, B, B, B, O, O, O, O, O, O,
-#define use_offset_0x11580u 4368
+#define use_offset_0x11580u 4512
/* Siddham */
- /* 11580 */ IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, B, B,
+ /* 11580 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11590 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 115A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, VPst,
/* 115B0 */ VPre, VPst, VBlw, VBlw, VBlw, VBlw, O, O, VPre, VPre, VPre, VPre, VMAbv, VMAbv, VMPst, H,
/* 115C0 */ CMBlw, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
- /* 115D0 */ O, O, O, O, O, O, O, O, IV, IV, IV, IV, VBlw, VBlw, O, O,
+ /* 115D0 */ O, O, O, O, O, O, O, O, B, B, B, B, VBlw, VBlw, O, O,
/* 115E0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
/* 115F0 */ O, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
/* Modi */
- /* 11600 */ IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, B, B,
+ /* 11600 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11610 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11620 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11630 */ VPst, VPst, VPst, VBlw, VBlw, VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VPst, VPst, VMAbv, VMPst, H,
@@ -583,7 +599,7 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* Takri */
- /* 11680 */ IV, IV, IV, IV, IV, IV, IV, IV, IV, IV, B, B, B, B, B, B,
+ /* 11680 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11690 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 116A0 */ B, B, B, B, B, B, B, B, B, B, B, VMAbv, VMPst, VAbv, VPre, VPst,
/* 116B0 */ VBlw, VBlw, VAbv, VAbv, VAbv, VAbv, H, CMBlw, O, O, O, O, O, O, O, O,
@@ -599,7 +615,28 @@ static const USE_TABLE_ELEMENT_TYPE use_table[] = {
/* 11720 */ VPst, VPst, VAbv, VAbv, VBlw, VBlw, VPre, VAbv, VBlw, VAbv, VAbv, VAbv, O, O, O, O,
/* 11730 */ B, B, B, B, B, B, B, B, B, B, B, B, O, O, O, O,
-}; /* Table items: 4816; occupancy: 72% */
+#define use_offset_0x11c00u 4960
+
+
+ /* Bhaiksuki */
+
+ /* 11C00 */ B, B, B, B, B, B, B, B, B, O, B, B, B, B, B, B,
+ /* 11C10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* 11C20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, VPst,
+ /* 11C30 */ VAbv, VAbv, VBlw, VBlw, VBlw, VBlw, VBlw, O, VAbv, VAbv, VAbv, VAbv, VMAbv, VMAbv, VMPst, H,
+ /* 11C40 */ B, O, O, O, O, O, O, O, O, O, O, O, O, O, O, O,
+ /* 11C50 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* 11C60 */ B, B, B, B, B, B, B, B, B, B, B, B, B, O, O, O,
+
+ /* Marchen */
+
+ /* 11C70 */ O, O, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* 11C80 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
+ /* 11C90 */ O, O, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB,
+ /* 11CA0 */ SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB, O, SUB, SUB, SUB, SUB, SUB, SUB, SUB,
+ /* 11CB0 */ VBlw, VPre, VBlw, VAbv, VPst, VMAbv, VMAbv, O,
+
+}; /* Table items: 5144; occupancy: 72% */
USE_TABLE_ELEMENT_TYPE
hb_use_get_categories (hb_codepoint_t u)
@@ -619,6 +656,7 @@ hb_use_get_categories (hb_codepoint_t u)
if (hb_in_range (u, 0x1900u, 0x1A9Fu)) return use_table[u - 0x1900u + use_offset_0x1900u];
if (hb_in_range (u, 0x1B00u, 0x1C4Fu)) return use_table[u - 0x1B00u + use_offset_0x1b00u];
if (hb_in_range (u, 0x1CD0u, 0x1CFFu)) return use_table[u - 0x1CD0u + use_offset_0x1cd0u];
+ if (hb_in_range (u, 0x1DF8u, 0x1DFFu)) return use_table[u - 0x1DF8u + use_offset_0x1df8u];
break;
case 0x2u:
@@ -642,10 +680,11 @@ hb_use_get_categories (hb_codepoint_t u)
case 0x11u:
if (hb_in_range (u, 0x11000u, 0x110BFu)) return use_table[u - 0x11000u + use_offset_0x11000u];
- if (hb_in_range (u, 0x11100u, 0x11237u)) return use_table[u - 0x11100u + use_offset_0x11100u];
+ if (hb_in_range (u, 0x11100u, 0x1123Fu)) return use_table[u - 0x11100u + use_offset_0x11100u];
if (hb_in_range (u, 0x11280u, 0x11377u)) return use_table[u - 0x11280u + use_offset_0x11280u];
- if (hb_in_range (u, 0x11480u, 0x114DFu)) return use_table[u - 0x11480u + use_offset_0x11480u];
+ if (hb_in_range (u, 0x11400u, 0x114DFu)) return use_table[u - 0x11400u + use_offset_0x11400u];
if (hb_in_range (u, 0x11580u, 0x1173Fu)) return use_table[u - 0x11580u + use_offset_0x11580u];
+ if (hb_in_range (u, 0x11C00u, 0x11CB7u)) return use_table[u - 0x11C00u + use_offset_0x11c00u];
if (unlikely (u == 0x1107Fu)) return HN;
break;
@@ -662,7 +701,6 @@ hb_use_get_categories (hb_codepoint_t u)
#undef H
#undef HN
#undef IND
-#undef IV
#undef N
#undef O
#undef R
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc
index d2b6e63bd3f..045ead52f68 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-complex-use.cc
@@ -184,6 +184,9 @@ has_arabic_joining (hb_script_t script)
case HB_SCRIPT_MANICHAEAN:
case HB_SCRIPT_PSALTER_PAHLAVI:
+ /* Unicode-9.0 additions */
+ case HB_SCRIPT_ADLAM:
+
return true;
default:
@@ -227,12 +230,12 @@ data_destroy_use (void *data)
enum syllable_type_t {
independent_cluster,
virama_terminated_cluster,
- consonant_cluster,
- vowel_cluster,
+ standard_cluster,
number_joiner_terminated_cluster,
numeral_cluster,
symbol_cluster,
broken_cluster,
+ non_cluster,
};
#include "hb-ot-shape-complex-use-machine.hh"
@@ -312,13 +315,13 @@ setup_topographical_masks (const hb_ot_shape_plan_t *plan,
{
case independent_cluster:
case symbol_cluster:
+ case non_cluster:
/* These don't join. Nothing to do. */
last_form = _NONE;
break;
case virama_terminated_cluster:
- case consonant_cluster:
- case vowel_cluster:
+ case standard_cluster:
case number_joiner_terminated_cluster:
case numeral_cluster:
case broken_cluster:
@@ -421,15 +424,14 @@ reorder_syllable (hb_buffer_t *buffer, unsigned int start, unsigned int end)
/* Only a few syllable types need reordering. */
if (unlikely (!(FLAG_SAFE (syllable_type) &
(FLAG (virama_terminated_cluster) |
- FLAG (consonant_cluster) |
- FLAG (vowel_cluster) |
+ FLAG (standard_cluster) |
FLAG (broken_cluster) |
0))))
return;
hb_glyph_info_t *info = buffer->info;
-#define BASE_FLAGS (FLAG (USE_B) | FLAG (USE_GB) | FLAG (USE_IV))
+#define BASE_FLAGS (FLAG (USE_B) | FLAG (USE_GB))
/* Move things forward. */
if (info[start].use_category() == USE_R && end - start > 1)
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-private.hh
index d58a695c463..c45be6f2f7f 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-private.hh
@@ -83,7 +83,7 @@ extern "C" void hb_free_impl(void *ptr);
#define unlikely(expr) (expr)
#endif
-#ifndef __GNUC__
+#if !defined(__GNUC__) && !defined(__clang__)
#undef __attribute__
#define __attribute__(x)
#endif
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape.cc
index 352d42c8357..41a4fc500ea 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-shape.cc
@@ -394,8 +394,6 @@ hb_shape_full (hb_font_t *font,
* positioned glyphs. If @features is not %NULL, it will be used to control the
* features applied during shaping.
*
- * Return value: %FALSE if all shapers failed, %TRUE otherwise
- *
* Since: 0.9.2
**/
void
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ucdn.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ucdn.cc
index b4a58332445..a884e3ffd2c 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ucdn.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ucdn.cc
@@ -154,6 +154,12 @@ static const hb_script_t ucdn_script_translate[] =
HB_SCRIPT_MULTANI,
HB_SCRIPT_OLD_HUNGARIAN,
HB_SCRIPT_SIGNWRITING,
+ HB_SCRIPT_ADLAM,
+ HB_SCRIPT_BHAIKSUKI,
+ HB_SCRIPT_MARCHEN,
+ HB_SCRIPT_NEWA,
+ HB_SCRIPT_OSAGE,
+ HB_SCRIPT_TANGUT,
};
static hb_unicode_combining_class_t
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-private.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-private.hh
index 0cb99f0a04f..a4d118b6dc9 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-private.hh
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-private.hh
@@ -182,8 +182,8 @@ HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS_SIMPLE
case 0x17: return hb_in_range (ch, 0x17B4u, 0x17B5u);
case 0x18: return hb_in_range (ch, 0x180Bu, 0x180Eu);
case 0x20: return hb_in_ranges (ch, 0x200Bu, 0x200Fu,
- 0x202Au, 0x202Eu,
- 0x2060u, 0x206Fu);
+ 0x202Au, 0x202Eu,
+ 0x2060u, 0x206Fu);
case 0xFE: return hb_in_range (ch, 0xFE00u, 0xFE0Fu) || ch == 0xFEFFu;
case 0xFF: return hb_in_range (ch, 0xFFF0u, 0xFFF8u);
default: return false;
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.h
index 6a15cb00cbc..2657f481300 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.h
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.h
@@ -449,33 +449,18 @@ HB_EXTERN hb_script_t
hb_unicode_script (hb_unicode_funcs_t *ufuncs,
hb_codepoint_t unicode);
-/**
- * hb_unicode_compose:
- *
- * Since: 0.9.2
- **/
HB_EXTERN hb_bool_t
hb_unicode_compose (hb_unicode_funcs_t *ufuncs,
hb_codepoint_t a,
hb_codepoint_t b,
hb_codepoint_t *ab);
-/**
- * hb_unicode_decompose:
- *
- * Since: 0.9.2
- **/
HB_EXTERN hb_bool_t
hb_unicode_decompose (hb_unicode_funcs_t *ufuncs,
hb_codepoint_t ab,
hb_codepoint_t *a,
hb_codepoint_t *b);
-/**
- * hb_unicode_decompose_compatibility:
- *
- * Since: 0.9.2
- **/
HB_EXTERN unsigned int
hb_unicode_decompose_compatibility (hb_unicode_funcs_t *ufuncs,
hb_codepoint_t u,